VS Code下 cmake 配置C++环境(windows )

有人会提出疑问,我们不是用Mingw-w64配置好gcc了吗,不就已经实现C++代码的正常运行了嘛?为什么还要cmake呢?其实不难发现,我们上次配置的gcc仅仅适用于运行单个源文件,但是面对大的项目,就会变得很棘手!

当然,你如果觉得这些配置比较复杂,你可以选择使用Visual Studio或者是更加专业的CLion
这是一个集成块发环境(IDE),所有的东西都不需要你手动去配置,你只需要把程序写好,点击三角形运行就可以了。
缺点:

1.但是这是过于“傻瓜式”的东西,如果想对C或者编译 原理做 进一步的理解的话,还是希望大家 可以自己配置!
2.Visual StudioCLion要钱 !
3.即使说你可以破解,但是Visual Studio的占用空间比较大,一般安装下载完需要3~4GB,会带来一定的卡顿

我们在这里做详细的介绍,以及cmake配置的步骤详解!

一、cmakeVSgcc

1.什么是gcc

gccGNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。

2.gcc的缺陷

在上一篇博文中我们用gcc来编译C++,我们会发现每个可执行的.exe都需要单独配置,也就是说:当你的程序只有一个源文件时,直接就可以用gcc命令编译它。
但是如果你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大

3.引入make

make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式——通过调用makefile文件中用户指定的命令来进行编译和链接的。

4.什么是makefiles

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
make需要按照makefile中的命令执行!
makefile命令中就包含了调用许多编译器(如我们这里多用到的gcc编译器)去编译某个源文件的命令。
人总是“懒惰的”,makefile在一些简单的工程完全可以人工手写,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。因此我们引入了cmake

5.什么是cmake呢?

CMake这个名字是cross platform make的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。
CMake可以更加简单的生成makefile文件给上面的make用。当然CMake还可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。

6.CMake生成makefile的原理

cmake生成makefile的原理是根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。当然CMakeLists.txt就需要你自己去手写了!

二、配置CMake

1.下载Mingw-w64并配置环境变量

请参考本人博文:Visual Studio Code 配置C++环境(Mingw-w64)
此处不再赘述,配置后,我们可以简单的运行一个源文件的程序。但是如果此处没有配置好,后面的工作可能无法进行!

2.下载cmake,并在vscode下载相关插件

cmake官方下载
默认将文件配置到用户环境变量
VS Code下 cmake 配置C++环境(windows )_第1张图片
我这里默认安装在了C盘
VS Code下 cmake 配置C++环境(windows )_第2张图片
配置环境变量CCCXX
VS Code下 cmake 配置C++环境(windows )_第3张图片
Vscode配置相关插件
VS Code下 cmake 配置C++环境(windows )_第4张图片

三、生成makefile文件

这是最关键的一步,也是比较容易出错的一步!

1.创建工作区和测试函数

我们可以选择一个盘,这里我选择的是D盘,在D盘下面,我们创建一个工作区文件clang-work
在这里插入图片描述
然后再该文件夹下写一个简单的main.c程序作为测试程序

#include 
int main(){
 
    int a = 2+3;
    int b = a+3;
 
    for(int i = 0; i<100; i++){
        printf("%i", i);
    }
    
    return 0;
}

2.创建CMakeLists.txt文件

然后在main.c相同该文件下,创建一个CMakeLists.txt文件,配置内容如下:
VS Code下 cmake 配置C++环境(windows )_第5张图片

#-------生成编译文件
cmake_minimum_required(VERSION 2.6)
project(main)
set(SRC_LIST main.c)
add_executable(main ${SRC_LIST}) #生成可执行文件(.exe)
# -----执行命令------------
# cmake -G "MinGW Makefiles" .  # 构建Makefile文件

3.生成makefile文件

cmd执行命令cmake -G "MinGW Makefiles" .
VS Code下 cmake 配置C++环境(windows )_第6张图片
此时,我们可以看到clang-work已经生成了一些文件,包括makefile文件
VS Code下 cmake 配置C++环境(windows )_第7张图片
到此为止,我们已经配置好cmake!
VS Code下 cmake 配置C++环境(windows )_第8张图片
一个源文件的例子似乎没什么意思,因为我们使用cmake就是想多个源文件同时运行啊!

四、cmake执行多个源文件

1.在clang-work下创建包含多个源文件的hello文件夹

VS Code下 cmake 配置C++环境(windows )_第9张图片
hello.c

#include 
#include "hello.h"
void hello(const char * name)
{
printf ("Hello %s!/n", name);
}

hello.h

#ifndef DBZHANG_HELLO_
#define DBZHANG_HELLO_

void hello(const char* name);

#endif //DBZHANG_HELLO_

main.c

#include "hello.h"
int main()
{
hello("World");
return 0;
}

2.配置CMakeLists.txt

project(HELLO)
set(SRC_LIST main.c hello.c)
add_executable(hello ${SRC_LIST})

3.执行程序

同样编译执行完美成功!
VS Code下 cmake 配置C++环境(windows )_第10张图片
参考文档:cmake和CMakeLists.txt的学习
关于cmake的CMakeLists.txt的配置又是一门学问,待更…

下一篇博文我们将会详细的一起学的CMakeLists.txt的配置问题,还请您批评或点赞,谢谢!

你可能感兴趣的:(C/C++)