【发布时间】:2020-04-09 23:46:46
【问题描述】:
这可能是不可能的,但我还是想问。我使用 Clangd 作为 VSCode 的自动完成引擎。效果很好,但是有一个问题。
Clang 的官方 Windows 二进制文件依赖于 MSVC 标准库头文件。如果没有安装 MSVC,Clang 和 Clangd 会抱怨缺少标头。
有一个标志使 Clang 使用 MinGW 的 libstdc++ (--target=x86_64-w64-windows-gnu),我必须将其包含在 compile_commands.json 中。
此解决方案有效,但即使没有compile_commands.json,也有合理的自动完成功能会很好。
如果没有 compile_commands.json,我有没有办法告诉 Clangd 假设 --target=x86_64-w64-windows-gnu?
【问题讨论】:
-
我找到了一个可能的解决方案。启动 Clangd 时,VSCode 扩展会向其标准输入发送一些初始化参数。有一个其他未公开的参数 (
initializationOptions.fallbackFlags),可让您指定自定义标志。现在我只需要一些巧妙的方法来即时修改它。 -
我在类似的船上。您是否尝试过运行设置环境变量的脚本,并将该环境变量作为标志传递?
-
@FranciscoAguilera 我不完全理解这个想法,但现在 VSC 扩展现在允许您直接在配置中指定后备标志,所以这不再是问题了。
-
当您说配置时,您是指
.clangd文件吗?还是 VS 代码settings.json为"clangd.fallbackFlags": [ "%CLANGD_FALLBACK_FLAGS%" ],?出于我的目的,我需要从compile_commands.json条目中解析标志并将其用作后备标志。 -
是的,setting.json。 “我需要从 compile_commands.json 中解析标志” 哦,我明白了。那时可能行不通。我会尝试修改 compile_commands.json