新聞中心
補(bǔ)充vscode + clangd 開發(fā) c\c++
一個(gè)項(xiàng)目用makefile管理,工程很大,vscode的ms cpp tools代碼跳轉(zhuǎn)功能基本處于殘廢狀態(tài),
有想將makefile 遷移至cmake,但是大概看了下工程量很大,基本不現(xiàn)實(shí),吃力不討好;
沒辦法,繼續(xù)clangd,clangd所需要的compile_command.json 再makefile下無法類似cmake一鍵生成,
不過makefile 上同樣有一個(gè)工具可以利用,bear
bear安裝,源碼編譯還是apt-install都可以,大部分linux系統(tǒng)都有對(duì)應(yīng)的分發(fā)包。
ubuntu 20.04 :
sudo apt install bear
使用方法也很簡(jiǎn)單,基本原理好像就是使用LD_PRELOAD去捕獲對(duì)應(yīng)的命令。
就是在編譯代碼的命令前添加 bear即可
bear文檔寫的是,
bear --
但是我這邊分發(fā)包版本bear 2.3.11,以上運(yùn)行有問題。運(yùn)行命令不需要破折號(hào),如下
bear make xxxx -j18
需要make clean,重新編譯,原理如上所述,所以必須全量編譯才能攔截對(duì)應(yīng)的命令。
有可能會(huì)提示
ld.so: object '/usr/${LIB}/bear/libear.so' from LD_PRELOAD
命令里添加 -libear 強(qiáng)行指定庫地址可以正常使用。
usage: bear [-h] [--version] [--verbose] [--cdb] [--use-cc]
[--use-c++] [--append] [--libear LIBEAR]
...
bear -l /usr/lib/x86_64-linux-gnu/bear/libear.so make -j18
這個(gè)問題可能跟系統(tǒng)有關(guān)系,我用了別人的docker 鏡像,bear安裝上去后運(yùn)行移植提示以上錯(cuò)誤,后面自己做一個(gè)重新寫dockerfile做docker鏡像,就不再提示了,僅供參考吧
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章題目:c++makefile+clangd生成compile-創(chuàng)新互聯(lián)
文章起源:http://fisionsoft.com.cn/article/dsgioh.html