【发布时间】:2018-11-08 14:18:18
【问题描述】:
首先,我想指出,我花了几个小时试图解决问题,但没有成功。我在 Mac 上的 Clion 中使用 C++ 的 wxWidgets 库编写了一个小项目。由于我的大多数同学都在 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 等的应用程序。
【问题讨论】:
-
如果您在静态编译wxWidgets时遇到问题,为什么要显示您的代码?如果您在使用 wxWidgets 时遇到问题,请描述此问题(可能是错误消息,或类似的)。
-
@Tsyvarev,它编译得很好——一切正常。只是每当我尝试将可执行文件(应用程序)复制到另一台计算机时,它就不起作用或显示为带有损坏字符的文本文件。如果我从一开始就不清楚,请原谅。
-
shows up as a text file with corrupted characters.- 您是否尝试在 Windows 上运行可执行文件,而它是为 Mac 构建的? “只是不起作用” - 它在运行时是否显示一些错误消息,还是什么?这个问题对我来说仍然不清楚。 -
好的,所以... Clion 可以很好地编译我的程序。它创建一个“Unix Executable”类型的可执行文件。它位于我的项目目录中。当我单击它(在我的 Mac 上)时,它会调用终端,然后在应用程序本身启动后立即调用。我尝试将可执行文件复制到我兄弟的 macbook 上,但它在那里不起作用。在不同的 mac 上启动它就像我打开一个 .txt 文件一样。可执行文件只有 198KB,所以我想是不对的。
-
如何在两台计算机之间传输文件?你说它应该“在任何计算机上工作”;如果通过“任何计算机”您还希望它在 Windows 和 Linux 上工作,这是不可行的(并且可能完全不可能)。一般来说,可执行文件只能在编译它们的系统上工作,而无需进行某种模拟或翻译。