VSCode不使用compile_commands.json作为库路径

时间:2018-03-22 15:19:38

标签: c++ cmake visual-studio-code mingw-w64 msys

我已尝试过所有内容,但我无法让VSCode识别compile_commands.json内的库路径。下面是一些图片,以显示我的意思:

项目树
The project tree

实际文件
The actual files

正如您所看到的,C / C ++扩展程序未检测到我的库,即使它们包含在由CMake生成的compile_commands.json中。对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

您的compile_commands.json文件的生成器正在将包含路径移动到response files文件中(Json的“ command”:字段文本中的@file.rsp文件)。某些生成器将在Windows上执行此操作,以限制在命令行上输入的命令长度,与Linux上的〜128k字符相比,当前大约为8000个字符。从历史上看,Windows的限制甚至更短,因此即使不超过行长限制,某些工具也会主动将所有内容移至@files。

很遗憾,vscode-cpptools扩展名当前未处理此@file.rsp语法。参见此thread

在调用Cmake时尝试使用Ninja生成器。对我来说(在MSys2中运行mingw64),Ninja创建了独立的compile_commands.json文件,vscode-cpptools可以正确解析。

从源目录的根目录调用cmake的示例:

$ cmake -H"." -B"${output_dir}" -G"Ninja" -DCMAKE_EXPORT_COMPILE_COMMANDS=1