VSCode + clang + ccls 搭建 C/C++ 开发环境


推荐插件:

  • C/C++(建议关闭补全和错误提示等功能,因为实在是太烂了)
  • ccls
  • Code Runner
  • Cmake
  • CMake Tools

其他好用的插件:

  • 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🙃

在MSYS2上安装gcc等:

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

可惜的是并没有ccls的软件包,如果想在windows上用,需要自己在MSYS2上编译:

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

出现错误:

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),之后再:

ninja -C Release

等几分钟编译完成后,把./Release/ccls.exe复制到一个在PATH里的目录就行。

在Manjaro上安装clang和ccls

在Manjaro上就很方便了

sudo pacman -S --needed gcc clang ccls

插件配置以及 Project Setup

这里只介绍一小小小小小部分

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
  • 另外就是看文档,看文档,看文档


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM