我有一个依赖于Linux的大型代码库,我想使用CMake将我的代码编译成可以在Windows上运行的可执行文件,即我希望CMake生成一个“.exe”文件或类似的文件。
我试过使用CMake网站上提供的解决方案:https://cmake.org/cmake/help/v3.4/manual/cmake-toolchains.7.html#cross-compiling,但它没有工作...
这里是我的CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(myProject VERSION 1.0 LANGUAGES C CXX)
set(CMAKE_CROSSCOMPILING true)
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_VERSION 10.0)
set(CMAKE_SYSTEM_PROCESSOR arm)
find_package(... *all my required packages* REQUIRED)
include(... *required include files*)
add_executable(${PROJECT_NAME} ...)
target_link_libraries(${PROJECT_NAME} ...)
字符串
它编译并将在Linux上执行,但我希望它产生一个Windows兼容的可执行文件。
1条答案
按热度按时间8tntrjer1#
在Linux中需要一个mingw-w64工具链来完成这一任务,例如在Arch Linux上,你可以通过AUR获得所有必要的mingw-w 64-.包,包括
mingw-w64-cmake
。这些包应该可以让你开始:安装其他软件以满足软件的任何依赖性。
然后你可以使用常规的CMakeLists.txt运行
mingw-w64-cmake
而不是cmake
。例如:字符串
然而,通常情况下,使用静态构建是一个好主意,这样你的可执行文件就可以独立工作了。下面是我是如何做到的:
型
它创建了一个用户可以设置的变量STATIC_BUILD,如果为Windows编译,则默认值为ON。
在CMake文件中没有太多需要调整的地方。例如,在构建Qt时,我需要包含额外的Qt平台插件:
型
对您来说,这里的关键是首先在您的系统上获得适当的环境。