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

Posted

技术标签:

【中文标题】VSCode 不使用 compile_commands.json 作为库路径【英文标题】:VSCode not using compile_commands.json for library paths 【发布时间】:2018-03-22 15:19:38 【问题描述】:

我已经尝试了所有方法,但无法让 VSCode 识别 compile_commands.json 中的库路径。下面是一些图片来说明我的意思:

项目树

实际文件

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

【问题讨论】:

您有October 2017 update 或更高版本吗? 我愿意。扩展程序、vscode 和 cmake 均已更新到最新版本。 【参考方案1】:

compile_commands.json 文件的生成器正在将包含路径移动到 response files 文件中(“命令”文本中的 @file.rsp 文件:Json 的字段)。一些生成器将在 Windows 上执行此操作以限制在命令行上输入的命令的长度,目前约为 8k 个字符,而 Linux 上为 128k 个字符。从历史上看,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

【讨论】:

以上是关于VSCode 不使用 compile_commands.json 作为库路径的主要内容,如果未能解决你的问题,请参考以下文章

vscode 中的 launch.json 中不允许使用属性 args

为啥每个人的vscode中插件不一样

vscode 不显示 git 密码提示

cnetos vscode 使用问题记录

vscode自动补全c++

在 VSCode 中使用 Julia 的 PlotlyJS 时,放大不适应日期轴