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 作为库路径的主要内容,如果未能解决你的问题,请参考以下文章