下载安装VSCODE+CMAKE
Cmake安装请看我的这篇帖子:
https://blog.csdn.net/TU_Dresden/article/details/122373789?spm=1001.2014.3001.5501
VScode下载:
下载好之后,使用dpkg命令安装
sudo dpkg -i codexxxxxx.deb
安装vscode相关插件
点击左侧按钮进入vscode的插件商店,安装Microsoft出品的两个插件,C/C++以及Cmake,装好之后重启vscode。
建立工作目录
vscode需要一个文件夹作为工作目录(workspace),相当于其他IDE的项目文件夹。所以我们先建立一个文件夹,用作工作目录。进入工作目录,用code .指令打开vscode,会自动加载工作目录。
mkdir cmakeprojectcd cmakeproject
code.
建立src和include目录及主程序
通常来说,一个规范的c++项目需要src和include两个文件夹,分别用于存放类的头文件和源文件。我们在工作空间建立src和include,分别创建一个头文件archer.h 和archer.cpp 。
最后,创建一个main.cpp ,用作主程序。最后如图所示:
代码如下:
archer.h
#pragmaonce#include<iostream>#include<string>usingnamespace std;classarcher{private:
string name;int arrow_amount;public:archer(string name_input);~archer();voidshoot();};
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"intmain(){
archera_good_archer("yangyouji");
a_good_archer.shoot();return0;}
建立build目录及配置cmake
vscode本身并不具备编译功能,需要借助cmake和gcc来实现编译。所以本质上,我们是通过一系列配置,使vscode能够自动调用cmake的指令,在底层通过cmake来编译并运行我们的程序。
所以,我们需要先配置cmake的环境。我们先在工作空间根目录创建一个CMakeLists.txt ,这个文件是cmake的编译单,告诉cmake要编译些啥,头文件在哪,编译成什么样子。另外还要新建一个build 文件夹,用于存放cmake产生的中间文件和编译好的可执行程序。如图所示:
附上CMakeLists.txt的代码:
cmake_minimum_required(VERSION3.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++开发了!