下载安装VSCODE+CMAKE
Cmake安装请看我的这篇帖子:
https://blog.csdn.net/TU_Dresden/article/details/122373789?spm=1001.2014.3001.5501
VScode下载:
https://vscode.cdn.azure.cn/stable/f80445acd5a3dadef24aa209168452a3d97cc326/code_1.64.2-1644445741_amd64.deb
下载好之后,使用dpkg命令安装
sudo dpkg -i codexxxxxx.deb
安装vscode相关插件
点击左侧按钮进入vscode的插件商店,安装Microsoft出品的两个插件,C/C++以及Cmake,装好之后重启vscode。
建立工作目录
vscode需要一个文件夹作为工作目录(workspace),相当于其他IDE的项目文件夹。所以我们先建立一个文件夹,用作工作目录。进入工作目录,用code .指令打开vscode,会自动加载工作目录。
mkdir cmakeproject
cd cmakeproject
code .
建立src和include目录及主程序
通常来说,一个规范的c++项目需要src和include两个文件夹,分别用于存放类的头文件和源文件。我们在工作空间建立src和include,分别创建一个头文件 archer.h 和 archer.cpp 。
最后,创建一个 main.cpp ,用作主程序。最后如图所示:
代码如下:
archer.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
class archer
{
private:
string name;
int arrow_amount;
public:
archer(string name_input);
~archer();
void shoot();
};
archer.cpp
#include "archer.h"
archer::archer(string name_input)
{
this->name = name_input;
this->arrow_amount = 100;
}
archer::~archer()
{
}
void archer::shoot()
{
cout << "I have" << this->arrow_amount << "arrows!" << endl;
cout << "shoot!" << endl;
this->arrow_amount = this->arrow_amount - 1;
cout << "I have" << this->arrow_amount << "arrows now!" << endl;
cout << "Finish!" << endl;
}
main.cpp
#include "archer.h"
int main()
{
archer a_good_archer("yangyouji");
a_good_archer.shoot();
return 0;
}
建立build目录及配置cmake
vscode本身并不具备编译功能,需要借助cmake和gcc来实现编译。所以本质上,我们是通过一系列配置,使vscode能够自动调用cmake的指令,在底层通过cmake来编译并运行我们的程序。
所以,我们需要先配置cmake的环境。我们先在工作空间根目录创建一个 CMakeLists.txt ,这个文件是cmake的编译单,告诉cmake要编译些啥,头文件在哪,编译成什么样子。另外还要新建一个 build 文件夹,用于存放cmake产生的中间文件和编译好的可执行程序。如图所示:
附上CMakeLists.txt的代码:
cmake_minimum_required(VERSION 3.0)
project(MyCmakeProj)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_BUILD_TYPE Debug)
include_directories(${CMAKE_SOURCE_DIR}/include)
add_executable(my_exe main.cpp src/archer.cpp)
此时,点击vscode菜单栏的“终端”,开个新终端,在build目录输入cmake指令,再输入make进行编译,就可以生成可执行文件了。
cd build
cmake ..
make
配置json文件 自动调用cmake和gdb
刚才我们实现了手动编译运行。那么能否让vscode像其他IDE一样自动进行编译,运行以及下断电debug呢?当然可以,只需要配置tasks.json 以及 launch.json 两个文件即可。
launch.json主要描述了两件事,生成可执行文件(编译),运行可执行文件。而生成可执行文件的过程,则在tasks.json中描述。也就是说,在我们点击vscode的运行(Ctrl+F5)或调试运行(F5)之后,vscode会去调用tasks.json进行编译,再调用launch.json运行可执行文件或调试(下断点运行)可执行文件。
Ctrl+Shift+P调出vscode控制台,输入task,生成一个tasks.json文件,替换为以下内容:
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build"
},
"tasks": [
{
"type": "shell",
"label": "cmake",//第一个动作,执行cmake
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",//第二个动作,执行make
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": [
]
},
{
"label": "Build",//把上面的两个动作绑定,命名为Build
"dependsOrder": "sequence",
"dependsOn":[
"cmake",
"make"
]
}
]
}
上面的tasks.json描述了编译过程。可以看出,这套指令有两个步骤,cmake … 和 make ,刚好是我们上一节手动输入的编译指令。
点击左侧瓢虫按钮,创建launch.json,替换为如下内容:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
//只需要改两处
//第一处,在这里指定你的可执行文件的路径和名称
"program": "${workspaceFolder}/build/my_exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "Build",//第二处,绑定刚才的task
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
这里我们指定了可执行文件的路径以及上面tasks.json对应的label名,绑定编译指令。
此时,按下Ctrl+F5,成功运行,至此,VSCODE + CMAKE 环境配置成功,可以快乐地进行C/C++开发了!