如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

Cod*_*key 12 c++ cmake visual-studio-code

我正在尝试使用 libTooling 编写一个工具。我对其进行了设置,以便它可以使用 LLVM 文档中的示例进行编译。然而,C/C++ IntelliSense 似乎不适用于 CMake 项目。

我的工具位于:

<project>/clang-tools-extra/mytool

现在,C/C++ 扩展尝试读取compile_config.json,并告诉我<project>/build/compile_config.json找不到,而是使用includePathfrom c_cpp_properties.json

我尝试在工作区设置中手动添加包含路径:

{
    "C_Cpp.default.includePath": [
        "../../",
        "../../clang/Frontend/",
        "../../clang/Tooling/",
        "../../llvm/Support/"
    ],
    "C_Cpp.default.browse.path": [
        "../.."
    ]
}
Run Code Online (Sandbox Code Playgroud)

或者在一个文件中c_cpp_properties.json。但它仍然在错误的位置搜索包含内容。例如包括:

#include "llvm/Support/CommandLine.h"
Run Code Online (Sandbox Code Playgroud)

它试图在 中查找<project>/llvm/include/llvm/Support/CommandLine.h。因此,显然它从 command_config.json 中读取了一些内容,尽管它说找不到它(虽然它在那里),但这是错误的。llvm/include根本不应该添加。

rus*_*tyx 16

对于 VSCode 1.63+(2022 或更高版本):

1.安装CMake 工具扩展 ( ms-vscode.cmake-tools)。

2.将其放入.vscode/c_cpp_properties.json

{
    "configurations": [
        {
            "name": "CMake",
            "compileCommands": "${config:cmake.buildDirectory}/compile_commands.json",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ],
    "version": 4
}
Run Code Online (Sandbox Code Playgroud)


小智 5

您需要安装 cmake-tool 扩展 (ms-vscode.cmake-tools) 并将以下配置添加到您的c_cpp_properties.json

{
    "configurations": [
        {
            "compileCommands": "${workspaceFolder}/_build/compile_commands.json",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ],
    "version": 4
}
Run Code Online (Sandbox Code Playgroud)

它对我有用


poo*_*a13 4

1) 将“compileCommands”指向“compile_commands.json”
2) 您可能需要添加 **,例如:../../**双星使其递归
3) 您可以使用一些变量,例如,${workspaceRoot}而不是在包含路径中使用相对路径