引言
这篇博客介绍的是,如何在windows环境下搭建基于CMake和GCC的开发环境。这里使用的编辑器是VSCode。害怕麻烦的同学不应该搭建这个开发环境,应该直接使用VS Studiao的集成开发环境。
而我之所以要搭建这个环境,是因为为了方便在Windows下写好程序,直接移植到Linux系统,这样配置基本可以做到不需要怎么改。
OK,让我们开始吧~~~
1 软件安装
配置这个环境的前提是要安装好:
- VSCode
- CMake
- MinGW
关于这三个软件的安装,这里就不多介绍了,但是需要注意的是,在安装好后,需要把CMake和MinGW的环境变量设置到系统环境变量中。
具体而言,就是要把包含有cmake-gui.exe
和gcc.exe,g++.exe,gdb.exe
等应用程序的路径包含到环境变量中,在我的电脑上这两个路径分别为:
D:\software\cmake-3.18.0-rc3-win64-x64\bin
D:\software\MinGW64\bin
此外,在VSCode中,需要下载好以下四个插件:
- C/C++
- C++ Intellisense
- CMake
- CMake Tools
这里面的前两个插件是提供C++自动代码补全的支持的,后两个是提供CMake代码自动补全支持的插件。务必都要下载。
2 创建工程
打开VSCode,创建一个main.cpp,创建一个CMakeLists.txt
main.cpp
#include <iostream>
using namespace std;
int main(int agec, char **argv) {
cout << "Hello world" << endl;
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(cmake_test_project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
add_executable(${PROJECT_NAME} ${DIR_TOOT_SRCS})
3 环境配置
3.1 配置编译(Build)环境
在这里我们使用VSCode中的Task来配置工程的编译环境。
具体来说,就是我们定义一个Task,这个Task的主要工作就是编译工程。
操作步骤:
- 1、产生tasks.json配置文件
- 这里有两种方法:
- 一是:点击上方菜单栏的“终端”>"配置任务"or“配置生成任务”;
- 二是:“Ctrl+Shift+P”,输入task,选择“任务:配置任务”即可。
- 这里生成的tasks.json会出现在.vscode文件夹下。
- 这里需要说明的是,“任务”和“生成任务”的区别就在于,生成任务属于“build”的group,二者没有本质区别。
- 这里有两种方法:
- 2、配置tasks.json文件,具体可见下方程序实例:
这里tasks.json文件是通用的,你可以复制到自己的工程中使用。
tasks.json
{
// 这里配置了三个Task
"tasks": [
// Task 1:生成build文件夹
{
"type": "shell", // 这里决定了task的类型,shell类型就是在命令行里运行command的命令,还有一种类型是“process”,这里就不介绍了
"label": "mk_build", // task的名字
"command": "mkdir", // 需要被运行的命令
"args": ["build"], // 传递给command的参数
"options": {
"cwd": "${workspaceFolder}",
},
},
// Task 2:运行cmake
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"-G",
"MinGW Makefiles", // 这里必须定义生成器,否则默认cmake生成的是VS Studio可编译的工程
"${workspaceFolder}"
],
"options": {
"cwd": "${workspaceFolder}/build", // 工作路径,就是说cmake的输出都会放在${workspaceFolder}/build文件夹下
},
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
// Task 3:运行make
{
"type": "shell",
"label": "build",
"command": "mingw32-make",
"args": ["-j4"],
"options": {
"cwd": "${workspaceFolder}/build",
},
"problemMatcher": [],
"group": {
"kind": "build", // 这里说明这个任务时输入"build"类型的,也就是说明,这是一个生成任务
"isDefault": true
},
"dependsOn": [
"cmake" // 这里设置,说明了这个任务一定要在Task “cmake”执行之后方可执行
]
}
],
"version": "2.0.0"
}
- 3、执行任务:
Ctrl+Shift+B
即可执行定义好的生成任务。另外,也可以通过菜单栏的“终端”栏目运行任务。
3.2 配置调试(Debug)环境
VSCode的提供了一个调试的环境,但是我们需要先配置好launch.json,才可以使用这一个功能。
这里我们介绍操作步骤:
- 1、创建launch.json文件
- 这里同样有两种方法:
- 一是:点击上方菜单栏的“运行”>“打开配置”;
- 二是:“Ctrl+Shift+P”,输入debug,选择“调试:打开launch.json”即可。
- 这里同样有两种方法:
- 2、配置launch.json文件,具体可见下方程序实例:
launch.json
{
"version": "0.2.0",
"configurations": [
// Debug 1,这里也可以配置多个Debug任务,这其实和tasks.json很类似
{
"name": "first_exe", // Debug任务名
"type": "cppdbg", // 类型
"request": "launch",
"program": "${workspaceFolder}/build/cmake_test_project.exe", // 需要调试的应用程序,这是需要按照你的需要进行调整的
"args": [], // 传递参数给应用程序
"stopAtEntry": false,
"cwd": "${workspaceFolder}", // 当前工作路径
"environment": [{"name": "PATH","value": "${PATH};D:/software/opencv/build-gcc/bin;D:/software/aruco/bin"}], // 这里需要特别注意,这里要把应用程序运行需要的动态链接库的路径,放进来,这里也需要你根据自己需要进行调整,我在这里给出一个示范
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:/software/TDM-GCC-64/bin/gdb.exe", // 这里需要填写你自己的gdb.exe的路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
- 3、执行调试:F5
3.3 配置代码自动补全环境
一般来说,把上面两个都配置好,就可以在VSCode里写程序,编译程序,调试程序了。
但是,还有一个非常严重的问题,就是一般的关于C/C++的默认库函数,VSCode是可以自动补全的,只要安装了C/C++插件就够了。
但是呢,我们如果要用第三方库,VSCode就无法自动补全了。所以,我们还需要进一步地去配置。
这里我们主要是要配置C/C++插件,让这个插件可以通过CMake来找到第三方库的头文件,从而提供代码补全的支持。
具体的操作步骤如下:
- 1、创建c_cpp_properties.json配置文件:
- 方法:“Ctrl+Shift+P”,接着输入“C/C++”,选择“C/C++编辑配置(JSON)”
- 2、配置c_cpp_properties.json文件,具体可见下方程序实例:
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "D:/software/TDM-GCC-64/bin/g++.exe", // 这里写你自己的g++的路径
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"configurationProvider": "vector-of-bool.cmake-tools" // 这个很重要,就是这句话在通过cmake引入第三方库的代码补全
}
],
"version": 4
}
- 3、重启VSCode
这里有一个更正
第三方库的代码补全的设置方法,如下,不要按我上面说的做…
参考博客: VSCode中C/C++库文件的配置(自动提示、补全)
https://blog.csdn.net/cbc000/article/details/80670413
关键就是要在includePath里面添加第三方库的头文件路径
4 结语
事实上,说了很多,关于C语言和C++的环境配置一言以蔽之就是,要保证编译器能在编译阶段能找到静态链接库,而应用软件在运行阶段,能找到动态链接库,我们所做的一切配置都是为了这两点。
OK,enjoy your coding time~~~