Windows 下 MinGW-W64 与 CMake 的安装

本文介绍了如何在Windows 10上安装CMake和MinGW-W64,包括查看系统信息、下载安装过程、配置环境变量以及验证安装成功的步骤。通过CMakeLists.txt文件,演示了CMake生成并编译C++项目的过程,同时解决了使用CMake时可能遇到的编译器选择和make命令相关问题。

CMake

An open-source, cross-platform family of tools designed to build, test and package software.
CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice. The suite of CMake tools were created by Kitware in response to the need for a powerful, cross-platform build environment for open-source projects such as ITK and VTK.

CMake is part of Kitware’s collection of commercially supported open-source platforms for software development.

一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

CMake 允许开发者编写一种平台无关的 CMakeLists.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到 “Write once, run everywhere” 。

CMake 入门实战

环境

  • 操作系统:Windows 10
  • 系统架构:x64-based PC

x64 是 x86 架构的 64 位拓展——x86-64: 64-bit extended。

打开 PowerShell,使用命令:

systeminfo

可以查看操作系统与系统架构等信息。

安装 MinGW-W64

如果你已经安装 MinGW-W64,可以跳过下面的步骤。

MinGW:Minimalist GNU on Windows
MinGW-w64 与 MinGW 的区别: MinGW 只能编译生成 32 位可执行程序,而 MinGW-W64 则可以编译生成 64 位或 32 位可执行程序。

  1. 下载:

    SourceForge: MinGW-W64 下载地址

    💡 NOTE: 更新到 v9.0.0 后此通过此地址下载的是 mingw-w64-v9.0.0.zip ,需要自行进行构建,现成的可以在 winlibs 找到,往下翻到 Download-Rel

<think>好的,我现在需要回答用户关于如何使用Linux下的Mingw-w64CMakeMake生成的程序转换为Windows的EXE文件的问题。首先,我要确认自己对整个流程的理解是否正确,然后分步骤解释清楚,确保用户能够按照指导操作。 首先,用户提到的是在Linux环境下使用Mingw-w64CMake来生成Windows的可执行文件。这意味着用户可能是在进行跨平台编译,即在Linux系统上编译出能在Windows运行的程序。这通常需要交叉编译工具链,而Mingw-w64正是这样的工具。 接下来,我需要回忆一下CMake在交叉编译中的配置方法。CMake需要一个工具链文件来指定交叉编译器的路径、目标平台等信息。用户可能已经安装Mingw-w64,但需要确认安装是否正确,是否包含所需的库和头文件。 然后,步骤可能包括:安装Mingw-w64,创建CMake工具链文件,配置CMake使用该工具链,运行Make来构建项目,最后处理可能的依赖问题,比如DLL的打包。 需要注意的是,不同Linux发行版的包管理命令不同,比如Ubuntu使用apt,Fedora用dnf,Arch用pacman。需要提醒用户根据系统选择合适的安装命令。 另外,工具链文件的编写是关键部分。需要指定C和C++编译器的路径,目标系统名称(Windows),以及可能需要调整的CMake变量,比如CMAKE_FIND_ROOT_PATH和CMAKE_FIND_ROOT_PATH_MODE_*,以确保CMake在正确的目录下查找依赖库。 用户可能在构建过程中遇到找不到Windows头文件或库的问题,这时候需要确保Mingw-w64的库路径正确,并且工具链文件正确配置。此外,如果项目依赖第三方库,可能需要为Windows交叉编译这些库,或者使用预编译的MinGW版本。 最后,生成的可执行文件可能需要依赖一些DLL,比如libgcc_s_seh-1.dll或libstdc++-6.dll,用户需要将这些DLL打包或静态链接,以便在无MinGW环境的Windows机器上运行。 总结下来,回答的结构应该是先安装Mingw-w64,然后配置CMake工具链文件,接着使用CMakeMake进行构建,最后处理运行时依赖。需要逐步解释每个步骤,并指出可能遇到的问题和解决方法。</think>以下是在Linux系统上使用MinGW-w64CMake进行Windows交叉编译生成exe文件的完整流程: 1. **安装MinGW-w64工具链** ```bash # Ubuntu/Debian sudo apt-get install mingw-w64 # Fedora sudo dnf install mingw64-gcc-c++ # Arch sudo pacman -S mingw-w64 ``` 2. **创建CMake工具链文件** (例如命名为`mingw-toolchain.cmake`) ```cmake set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) ``` 3. **配置CMake工程** ```bash mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE=../mingw-toolchain.cmake .. ``` 4. **编译项目** ```bash make -j$(nproc) ``` **常见问题解决方案**: Q: 出现"Windows.h not found"错误 A: 确保安装MinGW-w64的开发库: ```bash # Ubuntu sudo apt install mingw-w64-tools mingw-w64-common # 验证头文件路径 ls /usr/x86_64-w64-mingw32/include/windows.h ``` Q: 缺少运行时DLL依赖 - 方案1:静态链接 ```cmake # 在CMakeLists.txt中添加 set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") ``` - 方案2:复制所需DLL ```bash # 查找依赖的DLL路径 x86_64-w64-mingw32-objdump -p your.exe | grep 'DLL Name' # 复制DLL到输出目录 cp /usr/x86_64-w64-mingw32/bin/*.dll . ``` **进阶配置建议**: 1. 处理Windows API特性: ```cmake # 在CMakeLists.txt中设置Windows版本宏 add_definitions(-DWINVER=0x0A00 -D_WIN32_WINNT=0x0A00) # 指定Windows 10 ``` 2. 打包资源文件: ```cmake # 添加资源编译器 enable_language(RC) set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) ``` 3. 交叉编译Qt项目: ```cmake set(QT_PATH "/path/to/qt/mingw_64") set(CMAKE_PREFIX_PATH "${QT_PATH}/lib/cmake") ``` **验证生成的exe文件**: ```bash # 使用wine测试运行 sudo apt install wine wine your_program.exe # 检查文件类型 file your_program.exe # 应显示:PE32+ executable (console) x86-64, for MS Windows ``` 通过以上步骤即可在Linux环境下生成完整的Windows可执行文件。实际开发中建议使用CI/CD工具(如GitHub Actions)实现自动化跨平台构建。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值