配置cmake & 使用make命令

本文介绍如何使用CMake生成跨平台的构建文件,并详细解释了如何安装和配置MinGW,以便在Windows环境下进行C/C++开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备:

cmake:

1,cmake-2.8.12.2

2,cmake-2.8.12.2-win32-x86(GUI)

MinGW:

1,mingw-get-setup

    

说明:

1,cmake(cross platform make

cmake是一个工具,用来描述任意平台的编译过程。

cmake类似于unix下的automake,可以生产Makefile或者project文件。

cmake的组态档叫 cmakelist.txt。

cmake不产生最终的软件,而是通过生产的Makefile或者project文件,再依一般的构建方式使用。

2,MinGW(Minimalist GNU on Windows

MinGW是一个可以使用和发布windows特定头文件和使用GNU工具导入库的集合,可以再GNU/Linux/windows生产本地的windows程序而不要第三方的c运行时库。

MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。


使用:

cmake:

1,官方英文:http://www.cmake.org/cmake/help/cmake_tutorial.html

2,中文翻译:http://www.cnblogs.com/sinojelly/archive/2010/05/22/1741337.html

照着中文版的做了几次,都是编译器的问题,会报各种各样的错误,感觉不是很好用,最终用vs2012发布成功~

MinGW配置可以成功,可以运行!


路径1:需要处理的源文件的路径(cmakelist.txt)

路径2:生产的工程放在的路径

点Configure->选择编译器,上图中选择的是MinGW->“configuring done”->点Generate->"generating done"


MinGW:

配置环境:

cmd: set path=D:\MinGW\bin (配置环境变量,注意path前后不要打空格!!!!!

将D:\MinGW\bin路径下的mingw32-make.exe 改为make.exe

make -v (检测,显示版本号说明配置成功)

### CMake 配置成功但 `make` 命令可用的原因分析 当遇到 **CMake 配置成功但 `make` 命令无法正常工作** 的情况时,可能涉及以下几个方面的问题: #### 1. 构建工具未正确生成 如果构建工具(如 Makefiles 或 Ninja 文件)未能被正确生成,则即使 CMake 配置完成,也无法通过 `make` 执行编译过程。这通常发生在目标平台支持所选的生成器或者缺少必要的依赖项。 解决方案之一是确认当前使用的生成器是否适合操作系统环境[^3]。例如,在 Windows 下默认可能会尝试使用 Visual Studio 工具链而非 GNU Make。可以通过以下方式强制指定生成器: ```bash cmake -G "Unix Makefiles" .. ``` #### 2. 缺少必要库文件路径设置 某些项目需要链接外部库才能完成构建流程。如果没有提供这些库的具体位置或名称,可能导致后续阶段失败。对于同平台而言,处理方法有所区别——Windows 上倾向于自动连接机制而无需显式声明具体库名;但在 Linux 中则需明确指出所需库的名字及其所在目录。 因此,请检查项目的 CMakeLists.txt 是否已正确定义了所有必需的第三方资源,并确保它们可以在系统范围内访问。如果有特定需求的话,也可以手动添加如下形式的变量定义来辅助定位问题根源: ```bash -D GMP_LIBRARIES=/path/to/libgmp.so \ -D MPFR_LIBRARIES=/path/to/libmpfr.so ``` #### 3. 脚本错误或其他异常状况引发中断 除了上述技术层面的因素外,还有可能存在脚本编写上的失误或者是其他未知因素引起的中途退出现象。此时建议仔细查看终端打印出来的日志信息寻找线索。另外还可以启用更详细的调试模式以便获取更多上下文数据帮助诊断难题所在之处。 为了增加输出量级从而便于排查潜在隐患,可考虑加入 `-DCMAKE_VERBOSE_MAKEFILE=ON` 参数重新运行 cmake 过程。 --- 以下是针对此场景的一个综合示例调整方案片段供参考: ```bash mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=Debug \ -D CMAKE_VERBOSE_MAKEFILE=ON \ -D GMP_LIBRARIES=/usr/local/lib/libgmp.so \ -D MPFR_LIBRARIES=/usr/local/lib/libmpfr.so \ -G "Unix Makefiles" .. make ``` --- ### 提交代码样例验证逻辑准确性 下面给出一段简单的 Python 测试函数用来模拟类似情境下的行为表现并捕捉常见类型的错误反馈给开发者进一步改进优化策略。 ```python def test_cmake_build(): import subprocess try: result = subprocess.run(['cmake', '--version'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) if 'not found' in str(result.stdout).lower(): raise Exception('CMake is not installed.') # Simulate basic configuration step. config_result = subprocess.run( ['cmake', '-S.', '-Bbuild', '-DCMAKE_BUILD_TYPE=Release'], check=True, capture_output=True ) # Attempt building with make inside generated directory. build_result = subprocess.run( ['make', '-Cbuild'], check=True, capture_output=True ) print("Build succeeded.") except Exception as e: error_message = f"CMake process failed: {str(e)}" print(error_message) test_cmake_build() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值