windows下命令行使用cmake初始化工程可能出现的问题

文章讲述了在Windows10环境中使用CMake3.16.2、GCC7.3.0和G++7.3.0时遇到的问题,包括新仓库编译脚本中的错误、cmake-gui配置、强制编译器导致的Makefile问题,以及正确解决方法:清空build目录、配置cmake-gui并使用默认编译器,确保Makefile生成正确。

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

环境:windows10,cmake 3.16.2,gcc 7.3.0,g++ 7.3.0
由于想要在现有编译流程的脚本中新增一个仓库的编译,于是直接在脚本内添加了对应的cmake指令:

cmake -DCMAKE_INSTALL_PREFIX=D:/qt/Tools/mingw730_64/x86_64-w64-mingw32 -DCMAKE_BUILD_TYPE=Relwithdebinfo ../

但是如果该build目录下原先没有cache存在的话,会报错:
在这里插入图片描述

于是再通过cmake-gui来进行CMAKE_C_COMPILER和CMAKE_CXX_COMPILER的配置
但是配置完成后还是会报错:
在这里插入图片描述

在网上搜得可以通过加-DCMAKE_C_COMPILER_FORCED=ON -DCMAKE_CXX_COMPILER_FORCED=ON 这两个参数来解决该报错,试了一下确实有用,但是会有新的问题:
在这里插入图片描述
这样得出来的Makefile的格式不对,并且内容也有问题


正确解决方法
1.清空build目录
2.在空的build目录内执行cmake-gui .
在这里插入图片描述
配置好source目录和binary目录后,点击configure

3.使用自己想要的编译器(我使用的默认)
在这里插入图片描述

4.出现如下信息后继续点击configure
在这里插入图片描述

5.此时配置即可成功(不成功的话找出矛盾点,修改一下),可点击generate
在这里插入图片描述

6.可以回到命令行执行脚本,此时可以编译成功,并执行后续逻辑

### 使用CMakeWindows操作系统中进行项目构建配置 #### 安装CMake 为了能够在Windows使用CMake,需要先完成其安装过程。可以从[CMake官方网站](https://cmake.org)获取适合Windows系统的安装包并依照向导提示完成安装[^2]。 #### 创建`CMakeLists.txt` 对于任何基于CMake的项目来说,核心都是编写好`CMakeLists.txt`文件。此文件定义了项目的结构以及如何编译源代码。下面是一个简单的例子: ```cmake # 设置最低版本需求 cmake_minimum_required(VERSION 3.10) # 设定项目名称和版本号 project(MyProject VERSION 1.0) # 查找使用的编程语言模块 enable_language(CXX) # 添加可执行文件及其对应的源码列表 add_executable(${PROJECT_NAME} main.cpp) ``` 这段脚本指定了最小所需的CMake版本,并声明了一个名为MyProject的新工程,启用了C++支持,最后创建了一个由main.cpp组成的可执行程序[^1]。 #### 配置环境变量(如果必要) 通常情况下,在安装过程中会自动设置路径;如果没有,则可能需要手动将CMake所在的目录添加到系统的PATH环境中去以便命令行能够识别`cmake`命令。 #### 初始化构建目录与生成构建文件 建议在一个独立于源代码树之外的地方建立一个新的构建目录来放置所有的中间产物和最终输出物。这有助于保持工作区整洁有序。进入该新建好的构建文件夹之后运行如下命令: ```bash mkdir build && cd build cmake .. ``` 这里假设`..`代表的是包含有`CMakeLists.txt`的那个父级文件夹位置。此时将会依据当前平台自动生成相应的Visual Studio解决方案(.sln),或是MinGW Makefiles等其他形式的具体实现取决于所处的操作系统及预设条件。 #### 编辑高级编译选项 当涉及到特定平台特性时可以在`CMakeLists.txt`里加入条件判断语句以适应不同OS下的差异性编码逻辑。例如针对Windows特有的部分可以这样写: ```cmake if(WIN32) add_definitions(-DWINDOWS_SPECIFIC_CODE=1) endif() ``` 上述片段展示了怎样通过宏定义的方式让某些仅限于Win环境下才生效的功能得以启用[^5]。 #### 开始构建 一旦成功产生了合适的build system files后就可以利用对应IDE内的工具链或者是直接调用ninja/make/nmake之类的外部builder来进行实际编译流程了。如果是采用VS的话只需打开刚才提到过的.sln文档即可启动GUI界面中的Build菜单项完成整个过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值