最近我想使用compile_flags. txt文件来支持C++20
开发。当使用结构化绑定和C相关特性时,Clangd会显示恼人的警告,因此我创建了这个文件。我的compile_flags.txt
文件看起来像这样:
-std=c20
然而,当我想编辑一个C文件时,clangd会抱怨基本的include指令:#include <stdio.h>
:
clang[drv_argument_not_allowed_with]: Invalid argument '-std=c++20' not allowed with 'C'.
当然,我删除了compile_flags.txt
文件,它工作得很好。我如何才能同时编写C++20代码和C代码,而不必在每次决定在两者之间切换时手动删除文件?谢谢你的帮助提前:^)
1条答案
按热度按时间cuxqih211#
如果您不想使用
compile_commands.json
文件,那么另一种为clangd提供标志的机制是clangd config file,它比compile_flags.txt
更灵活。Clangd配置文件可以指定要添加的编译器标志,并且可以将配置限制为仅包含路径与特定模式匹配的文件(例如,具有特定扩展名的文件)。这允许基于文件扩展名为不同的语言指定不同的配置。
下面是一个配置文件的示例,它指定应该为
.cpp
文件添加标志-std=c++20
,并且应该为.c
文件添加标志-std=c17
:这将进入项目根目录中名为
.clangd
的文件。