Static Compilation for wxWidgets C++
Static Compilation for wxWidgets C++
作为初学者,我想指出我花了几个小时试图解决问题,但没有成功。我在Mac上的Clion中使用wxWidgets库编写了一个用于C++的小项目。由于我的大多数同学都在Windows上的VisualStudio中完成了他们的项目,所以没有人能帮助我。该项目必须以可执行文件的形式提交,该可执行文件可以在任何计算机上运行。我想我应该寻找的解决方案是静态编译,它将静态地将所有库链接到可执行文件。我尝试在Cmake中添加一些类似于下面的标志:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread")
但这没有任何帮助。我对CMake的工作原理一无所知,我将非常感谢任何帮助。
我目前拥有的整个 cmake 文件:
cmake_minimum_required(VERSION 3.9)
project(Lab3)
set(EXECUTABLE_NAME "Indexer")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -Wextra -DWX_PRECOMP")
# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
find_package(wxWidgets COMPONENTS core base REQUIRED)
include(${wxWidgets_USE_FILE})
include_directories(include/ ${wxWidgets_INCLUDE_DIRS})
file(GLOB SOURCES "src/*.cpp")
add_executable(${PROJECT_NAME} main.cpp Source.cpp Source.h)
target_link_libraries(${PROJECT_NAME} ${wxWidgets_LIBRARIES})
编辑:我想我没有足够清楚地说明问题。该程序编译良好 - 一切正常。只是每当我尝试将可执行文件(最终应用程序(复制到另一台计算机时,它都不起作用或显示为字符损坏的文本文件,而不是具有 GUI 等的应用程序。
你没有复制正确的东西。 您认为的应用程序可能只是某种启动器。
Mac GUI 应用程序不仅仅由单个文件组成。 您的Indexer
应用程序实际上是Apple所说的捆绑包。Finder 将其作为单个实体呈现给用户,但它实际上是一个文件夹。
您可以通过右键单击捆绑包(或 Ctrl+单击(并选择显示包内容来查看捆绑包内部。 如果您想了解更多有关其中的内容的信息,Apple可以在此处记录。
将捆绑包从 A 获取到 B 的一个好方法可能是压缩它。完成此操作后,您将发现静态链接它的努力是否成功。我不知道的是你的构建系统把它放在哪里,但也许这篇文章会有所帮助。 它会被称为Indexer.app,也许聚光灯可以找到它。
要构建具有尽可能少依赖项的 wxWidgets,您不仅应该使用--disable-shared
配置它,还应该配置--disable-sys-libs
,以防止它使用可能安装在系统上的任何第三方库(例如 libz、libpng 等(。
使用 wxWidgets 构建应用程序后,应确认otool -L YourApp.app/Contents/MacOS/YourApp
未显示任何非系统库。
- 什么是事件表 (wxWidgets)?
- 无法编译wxWidgets Hello World
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 内存所有位置 wxWidgets
- С++ wxWidgets:代码架构,设计原则和模式
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- 从 wxWidgets 中的.DLL加载图标
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- C++ wxWidgets:在创建小部件后设置字体
- C++ wxWidgets:更改大小器的字体
- meson-build:wxWidgets 资源文件,用于 Windows 未构建
- Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"
- 如何在 wxWidgets 中使用 SetTabBehavior 进行C++?
- 在 wxWidgets 中的 wxTextCtrl 上手动触发 ENTER 键按下事件C++?
- 如何从代码本身向 wxwidgets 中的文本控件插入字符?
- wxWidgets 3.1.3 图标在 mac 下加载 - ICNS 文件不可读?
- wxWidgets 拖放文件事件处理程序初始化问题(无效static_cast)
- 如何将位图拉伸到父面板(wxWidgets 自定义)
- 使用标准窗口与wxWidgets一起绘制?
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?