关于clangd的配置问题

对于clangd的配置问题,可以用compile_commands.json来解决

compile_commands.json从哪来

在CMakeLists.txt来进行编译设置,然后在运行cmake时添加参数
​-DCMAKE_EXPORT_COMPILE_COMMANDS=True​​
亦或者在CMakeLists.txt里添加​set(CMAKE_EXPORT_COMPILE_COMMANDS True

我只是想写袖珍的程序,不用cmake怎么办

clangd官网上提供了另一种解决方法,在小工程中可以使用compile_flags.txt,这东西的好处在于它能手写,里面放的参数应该和clang++的编译参数一致,缺点是一行只能一个参数。所以语句-I libwidget/include不得不写成

-I
libwidget/include/

当然你也可能注意到了,在vscode的clangd插件里有Arguments一项,可以设置很多东西
配的方法参照网上找的某个博主的博文
但是,这里的设置是全局的,当你想对项目进行差异化调整,不好意思,不行;而且,在这里设置不了C++标准,项目的头文件查找。
我今天晚上发这个的原因是突然发现clangd不支持C++20的语法。
解决方法:在vscode打开的文件夹下新建文件compile_flags.txt,输入-std=c++20
愉快的使用<format>吧!

END