最近下载了某开源软件的源码,其使用 CMake 构建。在使用 VS Code 浏览源码时,发现一个奇怪的现象:
1. CMake构建没问题,断点调试也OK;
2. 能通过F12快捷键跳转头文件、函数、类等定义;
3. 一些 #if
条件宏未正确设置,导致代码高亮不对;
4. 许多能正常跳转的头文件标红,光标移过去提示 “#include errors detected based on information provided by the configurationProvider setting. (C/C++ 1696) ”
该错误不太影响正常使用,但是总觉得别捏:#if
宏条件编译的正确代码,几乎都是disable状态被暗色显示。
参考 StackOverflow上的这个帖子 顺利解决了问题,其操作步骤为:
1. Windows系统按 ctrl+shift+p
,MacOS按 command+shift+p
,在命令窗口里输入 edit configurations ,选择json那一项,按回车按钮打开工程的配置文件:
2. 将文件中的 configurationProvider 的值从 “ms-vscode.cmake-tools” 改成 “ms-vscode.cpptools”:
3. 保存配置文件,再返回源代码,能看到宏定义、头文件等已经正确显示了。
除此之外,一些外部依赖包的头文件路径可能不正确,例如找不到 mpi.h
,此时可以编辑该配置文件,将 MPI 的头文件路径加上:
如果存在同名头文件,也可以通过调整顺序实现优先级的调整。