日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目

發(fā)布時間:2024/9/27 c/c++ 107 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景:

最近從Clion切換到了vscode來進(jìn)行代碼開發(fā),發(fā)現(xiàn)vscode自帶的c/c++插件除了能夠使用debug功能,其余代碼補(bǔ)全,跳轉(zhuǎn)等功能都和基于clangd的clion有較大差距,經(jīng)常出現(xiàn)匹配不上或者跳轉(zhuǎn)不準(zhǔn)確的問題,在這背景下自己折騰了兩天切換到了基于clangd來配置(事實(shí)上vim中的youcompleteme也已經(jīng)基于clangd來實(shí)現(xiàn)c/c++的代碼的補(bǔ)全

配置方法:

首先在vscode的插件商店中搜索clangd,并安裝。

安裝完成后,打開一個已有的工程:

如以下是一個最簡單的項(xiàng)目:

這里使用CMake來配置項(xiàng)目,事實(shí)上可能還存在其他比如bazel,scons,make等項(xiàng)目配置工具:

而clangd是基于compile_commands.json文件來完成對項(xiàng)目的解析,并支持代碼補(bǔ)全和跳轉(zhuǎn)。

這里記錄一下三種生成方式:

1.在CMakeLists.txt文件中添加set(CMAKE_EXPORT_COMPILECOMMANDS ON),之后cd build && cmake .. ,可以發(fā)現(xiàn)在build目錄下已經(jīng)生成了compile_commands.json文件

2.如果是基于make方式來編譯,那么可以先安裝 pip install compiledb,之后在當(dāng)前目錄下運(yùn)行(1) compiledb -n make -C build (2) compiledb make -C build 這兩個命令中的其中一個來生成compile_commands.json文件,其中前者不會執(zhí)行真正的make編譯命令

3.如果是基于其他方式,可以使用https://github.com/rizsotto/Bear 項(xiàng)目中的方式來生成對應(yīng)的compile_commands.json文件

通過以上方式生成完后compile_commands.json文件后,可以在vscode中對clangd的參數(shù)進(jìn)行配置,可以使用clangd --help來獲取一些有用的參數(shù):下面給出我實(shí)際的配置:

其中第一個是指定配置文件所在目錄,第二個是代碼補(bǔ)全的時候完全顯示函數(shù)的參數(shù)類型,而第三個則是避免clangd自動引入一些函數(shù)依賴的頭文件。

在完成以上配置后,就可以愉快的使用clangd進(jìn)行代碼補(bǔ)全了跳轉(zhuǎn)了!

可以看出在下圖復(fù)雜的工程內(nèi)部,函數(shù)的補(bǔ)全和跳轉(zhuǎn)支持也是十分精準(zhǔn)的!

(已知的issue,在和微軟的c/c++一起工作時,會提示不正常,因此使用clangd時需要完全關(guān)閉c/c++的代碼補(bǔ)全等一系列功能,只是將c/c++插件作為debug使用即可)

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。