一、cmake安装
cmake
- cmake-3.17.4.tar.gz : https://cmake.org/files/v3.17/cmake-3.17.4.tar.gz
sudo apt-get install libssl-dev
tar xvf cmake-3.17.4.tar.gz
cd cmake-3.17.4
./configure --prefix=/usr
make -j18 && sudo make install
- 测试
二、配置
- 准备两个最简单的文件----
main.cpp
和CMakeLists.txt
。
#include <iostream>
using namespace std;
int main()
{
cout << "Hello CMake" << endl;
return 0;
}
CMakeLists.txt
cmake_minimum_required (VERSION 2.8.11)
project (test)
set(CMAKE_BUILD_TYPE DEBUG)
set(CMAKE_CXX_STANDARD 17) //使用c++17标准
SET(CMAKE_CXX_COMPILER /usr/bin/g++-7) //使用g++-7 编译
add_executable (test main.cpp)
- 在项目根目录下创建
.vscode
目录,放入以下两个文件
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gdb",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/test",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
program
文件是要调试的文件路径,最后的文件名和CMakeLists.txt
的add_executable
后的第一个名字相匹配。
tasks.json
{
"options": {
"cwd": "${workspaceFolder}/build"
},
"tasks": [
{
"label": "cmake",
"command": "cmake",
"args": [
"-DCMAKE_BUILD_TYPE=Debug",
".."
]
},
{
"label":"make",
"command":"make"
},
{
"label":"build",
"dependsOn":[
"cmake",
"make"
]
}
],
"version": "2.0.0"
}
三、编译调试
- 点击下方的
Build
进行编译。
- 在主函数里打断点,按F5开始调试
注:会出现command not found: msbuild
的错误,不用理会。
四、工程下有多个cmake文件夹
如果一个工程下有多个cmake文件夹,类似如下该如何处理(test2和test3与test1的目录结构相同)。
解决方法
- 在
.vscode
文件夹下创建settings.json
文件,内容如下
{
"cmake.sourceDirectory": "${workspaceFolder}/test1",
"cmake.autoSelectActiveFolder": true
}
这样就表示当前的工程在test1
文件夹下。
- 如果每个工程生成的执行文件不同会给调试带来麻烦,因此在
launch.json
文件中将"program"
改一个固定值,然后将每一个文件夹生成的可执行文件都改成这个值即可。