环境配置
win10 操作系统
使用到的工具包
- cmake 版本号 3.20.0 cmake下载地址
- mingw64 版本MinGw x86_64-8.1.0-release-posix-seh-rt_v6-rev0 csdn下载地址
- 如果使用vscode作为编辑器请自行下载vscode编辑器 这里不做说明
有关gcc以及cmake的系统环境配置
将mingw64压缩包解压至C盘符下,将cmake的安装程序安装过程中选择并记住安装位置,例如我的cmake安装位置在机器的C:\CMake下面。
在win10系统-》高级环境设置-》高级-》环境变量中的系统环境变量Path这个变量名称的值中,加入mingw64以及cmake的bin目录路径,例如下面
![](https://i-blog.csdnimg.cn/blog_migrate/e54212064fcaf2eee57b94ef266e471b.jpeg#pic_center)
对于安装好的cmake 以及 mingw64来说,打开powershell 输入命令会显示正确的版本号,例如我这测试用的migw64 版本号为MinGW 8.1.0 以及cmake版本号为3.20.0-rc
![](https://i-blog.csdnimg.cn/blog_migrate/0d4596922c9ea317d0d923de558a0201.jpeg#pic_center)
测试cmake
这次主要测试win10下的cmake而不是说明cmake的语法以及使用的各种细节,因此我们仅仅用简单的c++代码来测试以下,首先说明的是通常我们需要一个最基本的c++代码文件,另外一个是CMakeLists.txt文件,注意CMakeLists.txt文件的后缀名为txt,文件名称为CMakeLists不要少些字母。我将上述文件放到一个名称为CPP_E的目录下,同时我们将生成的文件的中间结果和最后的执行文件都存在bulid目录下面,这样最大保证视觉上简单,文件结构如下
![](https://i-blog.csdnimg.cn/blog_migrate/1d19b640e783af7dd787497f45a676c5.jpeg#pic_center)
#include<iostream>
using namespace std;
int main(){
cout<<"hello world"<<endl;
return 0;
}
CMakeLists.txt内容:这个是最基本的三行内容,第一行是说明版本号,第二行为创建的工程名称,第三个才是有实质作用的将hello.cpp 编译成的二进制文件result,正确执行后会生成result.exe文件,要说明的是在CMakeLists.txt文档第三行 我们直接写result就可以,不写result.exe (具体原因不清楚,但是个人认为可能cmake是跨平台的工具,linux下面可能不需要exe后缀文件,因此放到windows平台这里也不写)。
cmake_minimum_required(VERSION 3.20)
project(vscode_cmake)
add_executable(result hello.cpp)
初次使用cmake应该注意的问题
很多朋友机器上都安装visual studio 2015或者以上版本的IDE,因为cmake会找寻系统中安装的C和C++编译器,在vs2015安装目录存在中文字符的情况下,cmake会找不到编译器,但是比较奇怪的是我个人的笔记本没有使用过vs2015这种IDE,而只是安装了MinGW的编译器也会有类似的错误提示,例如我个人在初次在powershell下使用cmake命令提示无法找到编译器,后来在网上搜索cmake无法找寻C编译器的问题时,看到B站的一个视频,这个视频的讲解者说明初次使用cmake配合MinGW的编译器要用到如下的命令(在视频的37分钟讲述,链接给出 https://www.bilibili.com/video/BV13K411M78v?p=2),首先进入bulid目录中,再打命令行。
![](https://i-blog.csdnimg.cn/blog_migrate/46a0a8a7f473bda7988d5eb855d5d3cd.jpeg#pic_center)
上面的最后几行Configuring done Generating done 提示表示正确生成,应该注意到在进入build目录后,键入的命令为
cmake -G "MinGW Makefiles" ..
请注意后面还有两个“…” 这是因为CMakeLists.txt文件在build上一级目录中。
最后键入
mingw32-make
顺利构建目标 result.exe,当然运行result.exe要键入.\result.exe
才能正确显示。
![](https://i-blog.csdnimg.cn/blog_migrate/7ea703683a0ad9589c9b12321e85af6e.jpeg#pic_center)
最后,还要说明这种方法只是适合MinGW+cmake在win10的使用,我个人没有测试Linux 系统,另外一旦使用cmake 构建出错,build目录下会生成错误的文件。为了避免异常情况,请及时清空build目录下面无用的错误生成的文件或者文件夹。