使用 clangd 取代 cpptools 作為 vscode 的 C/C++ LSP


使用 clangd 取代 cpptools 作為 vscode 的 C/C++ LSP

起因

vscode 官方推薦的 C/C++ 插件是 cpptools,但是這個插件十分吃資源,並且容易崩潰。在網上看了一下,吐槽這個問題的並不是我一個人,遂決定換一個。經過一番比較,決定使用 clangd 來取代 cpptools 作為新的 C/C++ LSP。

我們直接在擴展里選擇 clangd 安裝並啟用,這里注意 clangd 與 cpptools 存在沖突,所以首先要把 cpptools 卸載。

問題

接下來的問題是,clangd 需要有一個 compile_commands.json 文件才能工作,這一點是比不上之前的 cpptools 安裝即用方便的。

解決方案

CMAKE 項目

對於 CMake 項目,比較簡單,只需要定義 CMAKE_EXPORT_COMPILE_COMMANDS 即可導出該文件,這也是最容易的操作方案:

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1

Makefile 項目

對於 Makefile 項目,官方並沒有給出推薦的解決辦法,這里我找到了兩個解決辦法:

  1. 一個是使用 bear
    一般Linux發行版都可以用自帶包管理器安裝,Ununtu下安裝命令為:
sudo apt install bear

使用 bear 生成 compile_commands.json 時,只需要在原本的編譯命令前添加 bear 前綴即可,如:

bear make -C src
  1. 另一種方式是使用python編寫的工具 compiledb
    安裝命令:
sudo pip install compiledb

使用方式同樣是在原有make命令前添加 compiledb 前綴。特別的,只生成 compile_commands.json 不編譯項目,可以使用 -n 選項:

compiledb -n make

參考博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM