我最近一直在使用vscode+clangd的編譯環境替代了vscode自帶的c/c++插件。感覺clangd的環境更加優秀,能夠更好找到函數、全局變量等定義調用等。
如果使用keil C51以及MDK環境開發51單片機或者STM32單片機就需要使用到了EIDE這個插件這個插件現在能夠自動生成compile_commands.json文件,這樣clangd插件就可以找到并生成“.cache”文件夾。就可以愉快的玩耍了。(c/c++就可以先禁掉了)。下面是具體過程。
一、以下是keil MDK工程導入方法。
這里選擇“no”的好處就是EIDE插件生成相關文件在指定文件夾中,不會污染工程文件。
EIDE插件自動生成這些重要文件以及文件夾。
其中build文件夾下的子文件夾有clangd需要的compile_commands.json文件。
.clangd文件夾可以指定頭文件路徑。
還是好多頭文件、函數無法找到。
這個時候就需要在clangd插件中指定“compile_commands.json”所在路徑了
最后,右鍵---》命令面板---》clangd:Restart Language Server
二、keil C51工程EIDE調入
到這里自動生成EIDE相關文件尤其是build文件夾以及.clangd文件,不用做什么build文件夾下的compile_commands.json文件已經被clangd識別了。
但是現在有一個問題就是reg51文件找不到。這就需要用的.clangd文件了
改成:
右鍵---》命令面板---》Clangd:Restart Language Server
最后:需要注意的是路徑、文件名不能有中文,否則無法識別。
keil C51導入工程的時候也可以自己指定一個文件夾,但是需要自己在clangd的配置中指定compile_commands.json的路徑。以及在工程文件所在文件夾下創建一個.clangd文件夾,指定頭文件reg51.h所在路徑。
也就說EIDE自己生成的.clangd文件不起作用。(可能是一個bug)