compile_commands.json 找不到。

4

我已经苦恼了一个小时,希望能得到一些帮助。 我想使用 compile_commands.json 文件和vs code以及cpp扩展程序。以下是我的c_cpp_properties.json文件和compile_commands.json文件。

c_cpp_properties.json

...
{
    "name": "Win32",
    "intelliSenseMode": "clang-x64",
    "includePath": [
        "${workspaceRoot}",
        "C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++",
        "C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/mingw32",
        "C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward",
        "C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
        "C:/MinGW/mingw64/include",
        "C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include-fixed"
    ],
    "defines": [
        "_DEBUG",
        "UNICODE",
        "__GNUC__=6",
        "__cdecl=__attribute__((__cdecl__))"
    ],
    "compileCommands": "${workspaceFolder}/BlitzEngine/builds/Debug/compile_commands.json",
    "browse": {
        "path": [                    
            "C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
            "C:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include-fixed",
            "C:/MinGW/mingw64/include"
        ],
        "limitSymbolsToIncludedHeaders": true,
        "databaseFilename": ""
    }
}
...

compile_commands.json

[
{
  "directory": "C:/Users/Emburn/Documents/Projects/BlitzEngine/builds/Debug",
  "command": "C:\\MinGW\\mingw64\\bin\\g++.exe   @CMakeFiles/BlitzEngine.dir/includes_CXX.rsp -g   -o CMakeFiles\\BlitzEngine.dir\\src\\BlitzEngine.cpp.obj -c C:\\Users\\Emburn\\Documents\\Projects\\BlitzEngine\\src\\BlitzEngine.cpp",
  "file": "C:/Users/Emburn/Documents/Projects/BlitzEngine/src/BlitzEngine.cpp"
},
{
  "directory": "C:/Users/Emburn/Documents/Projects/BlitzEngine/builds/Debug",
  "command": "C:\\MinGW\\mingw64\\bin\\g++.exe   @CMakeFiles/BlitzEngine.dir/includes_CXX.rsp -g   -o CMakeFiles\\BlitzEngine.dir\\src\\main.cpp.obj -c C:\\Users\\Emburn\\Documents\\Projects\\BlitzEngine\\src\\main.cpp",
  "file": "C:/Users/Emburn/Documents/Projects/BlitzEngine/src/main.cpp"
},
{
  "directory": "C:/Users/Emburn/Documents/Projects/BlitzEngine/builds/Debug",
  "command": "C:\\MinGW\\mingw64\\bin\\g++.exe   @CMakeFiles/BlitzEngine.dir/includes_CXX.rsp -g   -o CMakeFiles\\BlitzEngine.dir\\src\\RenderWindow.cpp.obj -c C:\\Users\\Emburn\\Documents\\Projects\\BlitzEngine\\src\\RenderWindow.cpp",
  "file": "C:/Users/Emburn/Documents/Projects/BlitzEngine/src/RenderWindow.cpp"
}
]

我尝试使用绝对路径而没有使用${workspaceFolder},但是这也不起作用,每次保存文件时都会出现以下提示:

"${workspaceFolder}/BlitzEngine/builds/Debug/compile_commands.json"
could not be found. Using 'includePath'
setting in c_cpp_properties.json

我的目录树如下:

Projects
+-- .vscode
|   +-- c_cpp_properties.json
+-- BlitzEngine
|   +-- Debug
|   |   +-- compile_commands.json
+-- include
|   +-- <header_files>
+-- src
|   +-- <source_files>

感谢您提前提供的任何帮助!

1
你是手写这些的吗?我认为compile_commands.json的标准做法是使用工具(如cmake)为您生成它。 - Stephen Newell
@StephenNewell 这是由cmake生成的。我只是想让vscode找到这个文件。 - Julia
@StephenNewell 哦,糟糕。我刚把它恢复成正常状态了。我在排除故障时这样做了。但它仍然无法正常工作。 - Julia
你的错误信息仍然显示旧路径。此外,根据您的目录布局猜测,看起来您正在使用workspaceFolder而不是workspaceRoot - Stephen Newell
@StephenNewell 非常感谢,我已经修复了。而且在当前版本的vscode中,workspaceRoot实际上已经被弃用了。建议改用workspaceFolder - Julia
显示剩余2条评论
1个回答

2

我在c_cpp_properties.json 文档中没有看到workspaceFolder。那里的示例使用workspaceRoot,你之前在配置中已经使用了它。


@Julia - 这就是我在冰球比赛进行时回答问题的后果 :) - Stephen Newell
链接已更改为https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference - Tõnu Samuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接