VSCode cpp 检索 include 路径的问题

问题

碰到了一个 VSCode include 路径的问题。我的项目路径在 {workspaceRoot}/include 下,一开始想要以 -I./include 的方式来编译的。不过在 VSCode 中遇到了些麻烦。

解决

使用的是 Microsoft C/C++ Extension。这个插件非常棒,但是在 mac 上因为 bug 的原因之前经常烫烫烫。好在已经 fix 了。在项目路径下的 .vscode 的文件夹下一般而言有四大金刚:c_cpp_properties.jsonlaunch.json,settings.json 以及 tasks.json。其中 $1 用于配置 path……我都没怎么碰过这东西……还以为没啥用呢(。一般配置的都是 $2 和 $4。$3 是自动生成的用户配置,不用管就好。$2 launch.json 用于调试,而 tasks.json 用于 build && run。

查了半天,在 VSCode 的官方博客上找到了:应该在 $1 c_cpp_properties.json 中配置路径。所以变成了现在这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"configurations": [
{
"name": "Mac",
"includePath": [
"/usr/include",
"/usr/local/include",
"/usr/include/c++/4.2.1",
"/usr/include/c++/4.2.1/tr1",
"${workspaceRoot}/include"
],
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "",
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}/include"
]
},
......

emmmm。虽然我不知道 browse 那是什么东西。不过还是加上吧。
然而鬼畜的来了:特么竟然还是报错!!按官博说的,应该已经好了!!
痛苦地找了一个晚上。。。。。。
现在已经是第二天中午了QAQ。
正当我打开 issue,想要像 vscode-cpptools 官方 repository 上报 issue 的时候,看到了官方的提示:上报 issue 之前,请关闭其他插件。看看是否是其他插件的影响。

上报 issue 之前,请关闭其他插件。看看是否是其他插件的影响。
上报 issue 之前,请关闭其他插件。看看是否是其他插件的影响。
上报 issue 之前,请关闭其他插件。看看是否是其他插件的影响。

卧槽,其实这个时候我都没怎么在意……因为另一个插件是我非常喜欢的 clang 的插件啊!虽然不是 clang 官方的(,叫 C/C++ Clang Command Adapter。是五星的插件啊!而且是个霓虹开发者开发的!OWO
然后我关了它。
竟然好了!!可以索引了!!
于是我看了下介绍……
这插件里边写的:

1
2
3
4
5
6
7
Variables
Configurations support some variables which are available in tasks.json. They can be used inside of strings (e.g. "-I${workspaceRoot}/include")
${workspaceRoot}
${cwd}
${env.ENVIRONMENT_VARIABLE}

于是我跑到 settings.json,加了一行这个:
"clang.cxxflags": ["-std=c++11", "-I${workspaceRoot}/include"]
然后就好了……QAQ
然而这就比较诡异了……在点击头文件跳转的时候,关了微软官方的插件就不能跳转;关了 clang 插件,还是能够跳转。说明 clang 插件不对跳转有任何的作用;但是,只要没有配置 args,头文件就会出现红线报错,这时微软的插件检测到错误,也不会帮你跳转……卧槽。这是插件冲突的玄学吗……

emmmm。下次一定要注意,别因为印象好就单独开小灶……因为真正的错误往往藏在你放心的位置,然后耽误你大量的时间……QAQ。