VSCode + clang + ccls 搭建 C/C++ 開發環境

推薦插件:git

  • C/C++(建議關閉補全和錯誤提示等功能,由於實在是太爛了)
  • ccls
  • Code Runner
  • Cmake
  • CMake Tools

其餘好用的插件:github

  • GNU Assembler Language Support
  • Bracket Pair Colorizer 2
  • Visual Studio Blue Theme
  • Color Highlight
  • Markdown All in one
  • One Dark Pro
  • Git History
  • Remote - WSL
  • LinkerScript

安裝 clang 和 ccls

在windows上安裝clang並編譯ccls

目前我在msys2上和用msvc編譯出來的都有問題,啓動後一寫代碼就會crash🙃json

在MSYS2上安裝gcc等:windows

pacman -S --needed mingw-w64-x86_64-{gcc,gdb,make,binutils}

惋惜的是並無ccls的軟件包,若是想在windows上用,須要本身在MSYS2上編譯:api

pacman -S --needed mingw-w64-x86_64-{clang,clang-tools-extra,polly,cmake,jq,ninja,ncurses,rapidjson}
# 而後下載ccls源碼並編譯
cd ccls
cmake -H. -BRelease -G Ninja -DCMAKE_CXX_FLAGS=-D__STDC_FORMAT_MACROS
ninja -C Release

出現錯誤:bash

ninja: error: '/mingw64/lib/libz3.dll.a', needed by 'ccls.exe', missing and no known rule to make it

解決辦法:
打開./Release/build.ninja,搜索/mingw64/lib/libz3.dll.a,會找到兩個,都改爲絕對路徑(好比我這裏分別改爲D$:/msys64/mingw64/lib/libz3.dll.aD:/msys64/mingw64/lib/libz3.dll.a),以後再:ui

ninja -C Release

等幾分鐘編譯完成後,把./Release/ccls.exe複製到一個在PATH裏的目錄就行。插件

在Manjaro上安裝clang和ccls

在Manjaro上就很方便了debug

sudo pacman -S --needed gcc clang ccls

插件配置以及 Project Setup

這裏只介紹一小小小小小部分code

ccls 插件

給個例子,在工做區設置中添加:

"ccls.clang.extraArgs": [
        "-Iinc",
        "-Ipath/to/headers",
    ],

保存,而後就會提示你重啓ccls,若是沒提示,那就Ctrl+Shift+P,輸入ccls: Restart language server來重啓ccls。這樣ccls就將incpath/to/headers這兩個文件夾做爲頭文件目錄了。

其餘推薦設置:

"ccls.completion.detailedLabel": true,
"ccls.completion.enableSnippetInsertion": true,
"ccls.codeLens.enabled": false,

生成 compile_commands.json 文件

若是是使用make管理代碼,須要使用bear:

sudo pacman -S --needed bear

cmake等等,詳見ccls的wiki

# 清理之前的目標文件
make clean
# 生成 compile_commands.json
bear make

而後重啓ccls,就會自動索引

C/C++ 插件

ccls沒有提供debug支持而ms-vscode.cpptools有,可是ms-vscode.cpptools的代碼補全等功能與ccls重複(並且很laji),因此須要把ms-vscode.cpptools的這些功能禁用,添加以下設置:

"C_Cpp.autocomplete": "Disabled",
"C_Cpp.errorSquiggles": "Disabled",
"C_Cpp.intelliSenseEngine": "Disabled",

其餘

  • 附上個人settings.json
  • 另外就是看文檔,看文檔,看文檔
相關文章
相關標籤/搜索