很早之前讨论过关于为什么clangd这种lsp不能正确识别arm compiler的 __ARM_COMPILER_VERSION
这种宏,导致的结果是LSP服务器会报错说找不到<config_site>
这种头文件,或者说COMPILER_VERSION
未定义。就算把include/c++/...下面一堆库文件直接加到compile_commands.json
搜索路径也无效。
当时,提及可行的解决办法是在.clangd
里面直接-I
所有的编译器宏,但是工作量非常大。现在我发现arm自家的vscode-keil-studio-pack插件正好会自动生成.clangd文件并正确添加相应的宏,在这个issue中维护人员提及:ARM-software/vscode-keil-studio-pack#16。
因为本人电脑原因,暂时无法安装那个插件,请各位如果有空可以帮助尝试一下,issue提及的模板是:https://github.com/tungchiahui/CubeMX_MDK5to6_Template。
只要拿到那个.clangd
文件,所有问题就都迎刃而解了。