3

这可能是不可能的,但我还是想问。我使用 Clangd 作为 VSCode 的自动完成引擎。它工作得很好,但有一个问题。

Clang 的官方 Windows 二进制文件依赖于 MSVC 标准库头文件。如果未安装 MSVC,Clang 和 Clangd 会抱怨缺少标头。

有一个标志使 Clang 使用 MinGW 的 libstdc++ ( --target=x86_64-w64-windows-gnu),我必须将其包含在compile_commands.json.

此解决方案有效,但即使没有compile_commands.json.

有没有办法让 Clangd 假设--target=x86_64-w64-windows-gnu没有compile_commands.json

4

2 回答 2

1

如果没有 compile_commands.json,有没有办法告诉 Clangd 假设 --target=x86_64-w64-windows-gnu?

clangd开始

compile_flags.txt

如果项目中的所有文件都使用相同的构建标志,则可以将这些标志逐行放入源根目录中的 compile_flags.txt 中。

Clangd 将假定编译命令是 clang $FLAGS some_file.cc。

如果您的项目非常简单,则手动创建此文件是一个合理的起点。

只需compile_flags.txt使用--target=x86_64-w64-windows-gnu.

于 2021-07-20T23:23:17.707 回答
1

在提出问题后的某个时间点,VSCode Clangd 扩展开始向 config: 公开默认标志"clangd.fallbackFlags": ["--target=x86_64-w64-windows-gnu"]

于 2021-07-21T06:09:55.893 回答