前言

上次在vscode配置 c++ 开发环境(一):智能提示文章中介绍了如何在 vscode 中配置 c++语言的智能提示,时间又过了很久,vscode 用的也越来越得心应手,今天终于有机会更新这个系列的第二篇文章,讲讲如何配置includePath来避免不愉快的波浪线和怎么用 vscode 对 cpp 程序进行调试。

头文件目录配置

在默认情况下,就算是已经将 cpp 开发相关的插件装好,用 VScode 打开一个 cpp 文件的时候,通常还会看到令人不悦的波浪线,就像下面这样:

软件找不到头文件时会有波浪线提示
软件找不到头文件时会有波浪线提示

刚开始的时候我也非常的头疼这个问题,后来在vscode 官方博客的文章中找到了解决方案。

首先,在使用习惯上,要用 vscode 打开源代码所在的文件夹而不是打开单个文件,比如所,我有个Josephus.cpp源文件在cppcode文件夹下,那么就要在终端上输入code cppcode 用 vscode 打开这个文件夹,再对那个源代码文件进行编辑和处理,而避免直接code Josephus.cpp打开单个文件。(下面的相关配置都是基于这个使用习惯的基础之上的)

然后,在文件夹下新建.vscode目录(如果该目录已经存在,则可以略过这一步)。

.vscode文件夹下,新建c_cpp_properties.jsonjson 配置文件,在文件中粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"configurations": [
{
"name": "Mac",
"includePath": [
"/usr/include",
"/usr/local/include",
"/usr/include/c++/4.2.1"

],
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "",
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
]
},
"intelliSenseMode": "clang-x64",
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
]
}
],
"version": 3
}

在这个配置文件中,includePath字段是指定 VScode 搜索头文件的目录,如果目录中不存在源代码里引用的头文件,则会有波浪线提示。

所以,将用到的头文件所在的位置都添加到该字段中,就可以解决“波浪线”问题了。

调试设置

在 Windows 上面用 VS 进行 C++开发的时候,最吸引人的一个功能是完善的调试功能,类似的功能在 VScode 上也可以实现。

首先,在.vscode文件夹下新建 launch.jsontasks.json两个配置文件,其中,launch.json文件是配置调试信息,tasks.json是用于配置编译信息。

tasks.json文件下,粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"version": "0.1.0",
"command": "clang++",
"args": ["-g","${file}","-o","${file}.out"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}

上述代码中,command字段是编译程序(编译命令),根据个人喜好可以填g++或 clang++(编译 C++),如果想编译 c,也可以填 gcc 或 clang。
args字段是编译时添加的指令,${file}.out中${file}指的是当前编辑文件的文件名。(如果是在 Windows 下面配置,需要写成${file}.exe

launch.json文件下,粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${file}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
}
]
}

"program": "${file}.out"字段表示调试的目标程序。

两个文件都配置好之后,打开要调试的 cpp 文件,首先选择“任务”->“运行任务…”,弹出的窗口中选择clang++,这一步是编译程序生成.out 文件的过程。

运行完毕后,选择“调试”->”启动调试“或按 F5快捷键,启动调试。如果看到下面这样的界面,表示配置没有问题,进入调试过程。

调试Josephus.cpp
调试Josephus.cpp

参考网站

如何在VSCode内编译运行C++