c_cpp_properties.json 与compile_commands.json关系

c_cpp_properties.json 是 VS Code 的静态 IntelliSense 配置,VS Code “猜代码怎么编译”的配置文件

compile_commands.json 是构建系统生成的真实编译数据库

如果项目里的 include 特别多,比如:

然后你在 c_cpp_properties.json 里手动写:

"includePath": [
    "${workspaceFolder}/include",
    "${workspaceFolder}/common",
    "${workspaceFolder}/framework",
    "${workspaceFolder}/third_party/boost",
    ...
]

很快就会变成几十上百行,而且:新增目录还要手动改;

CMake 项目的正确做法,让 CMake 告诉 clangd/VSCode

target_include_directories(MyTarget PRIVATE
    include
    common
    framework
    sdk
)

target_include_directories(MyTarget PRIVATE
    ${PROJECT_SOURCE_DIR}/include
    ${PROJECT_SOURCE_DIR}/common
)

然后生成:compile_commands.json,,里面会自动记录:

-Ixxx/include
-Ixxx/common
-Ixxx/framework
...

clangd 直接读取这些信息,,clangd 直接读取这些信息。

CMake
 ↓
compile_commands.json
 ↓
clangd

解决vscode找不到好多头文件都是can not open source file

但是要在clangd下加一下dir

更多推荐