解決VS Code下找不到ROS頭文件和無法自動補(bǔ)全的問題

環(huán)境

  1. Ubuntu 18.04
  2. VS Code 插件: C/C++
  3. ROS Melodic
  4. gcc, clang(可選)

工作目錄

項目myproject文件夾位于~/catkin_ws/src/myproject绽昼, 關(guān)于ROS catkin_ws工作空間的創(chuàng)建可以參考這里.

步驟

1. 構(gòu)建并導(dǎo)出編譯命令
  1. 確保當(dāng)前.cpp源文件已被添加到項目文件夾下的CMakeLists.txt中咏窿,例如:

add_executable(node_name src/main.cpp)

如果有其它自定義頭文件路徑也可以一并設(shè)置嗜憔,沒有的可以略過(注意ROS頭文件所在路徑不需要在這里指定):

target_include_directories(node_name PUBLIC ${PROJECT_SOURCE_DIR}/include)

  1. ~/catkin_ws/src/myproject下執(zhí)行下列命令導(dǎo)出編譯命令(myproject需要修改為自己的項目名辰企,或者刪掉侮叮,構(gòu)建catkin_ws下的所有項目。

catkin build [myproject] -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

或者酌媒,將set(CMAKE_EXPORT_COMPILE_COMMANDS ON)加入到自己項目文件的CMakeLists.txt文件中候齿,然后執(zhí)行,這樣在每次構(gòu)建時都會自動導(dǎo)出編譯命令瞳筏。

catkin build [myproject]

構(gòu)建完成后稚瘾,在~/catkin_ws/build/myproject/下會生成一個compile_commands.json文件,這個文件可以用來實(shí)現(xiàn)代碼的自動補(bǔ)全功能.

2. VS Code 設(shè)置

在VS Code中 按下Ctrl+Shift+P打開主命令框姚炕,輸入 C/C++: Edit configurations (UI)摊欠,打開配置C/C++的UI界面。滾到最下方柱宦,展開Advanced Settings些椒,在Compile command設(shè)置中輸入如下內(nèi)容(myproject需要修改成工程文件夾名,或者直接輸入上一步生成的compile_commands.json文件的絕對路徑):

${workspaceFolder}/../../build/[myproject]/compile_commands.json

Screenshot from 2020-08-22 22-04-00.png
3. 重啟VS Code

重啟VS Code掸刊,或者Ctrl+Shift+P打開主命令框輸入 Developer: Reload Window

4. 效果

最終效果如下免糕,可以看到頭文件可以被找到,并且可以給出自動補(bǔ)全忧侧。(如果這一步仍然提示找不到頭文件石窑,但是可以實(shí)現(xiàn)自動補(bǔ)全,檢查一下是否有其它C++插件在工作蚓炬,例如clangd, C++ Intellisense 等)


Screenshot from 2020-08-22 23-36-00.png

使用Clang提供自動補(bǔ)全(可選)

Clang編譯器提供的自動補(bǔ)全功能一般更友好一些松逊,比如,如果上述步驟默認(rèn)采用gcc編譯器肯夏,ROS_INFO仍存在警告提示经宏,而且不能自動補(bǔ)全Ros::Rate等一些類,而Clang沒有這些問題驯击。使用Clang編譯器的配置如下:


Screenshot from 2020-08-22 23-39-20.png

上面文件可以 Ctrl + Shift +P 輸入C/C++: Edit configurations (JSON)打開烁兰,注意這個文件和之前使用的C/C++: Edit configurations (UI) 是自動同步的,修改一處即可余耽。
沒有安裝Clang的話需要sudo apt install clang
注意:這些設(shè)置只保證自動補(bǔ)全功能使用Clang編譯器缚柏,不會影響最終編譯時候所選擇的編譯器苹熏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碟贾,一起剝皮案震驚了整個濱河市币喧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袱耽,老刑警劉巖杀餐,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朱巨,居然都是意外死亡史翘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門冀续,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琼讽,“玉大人,你說我怎么就攤上這事洪唐∽甑牛” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵凭需,是天一觀的道長问欠。 經(jīng)常有香客問我,道長粒蜈,這世上最難降的妖魔是什么顺献? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮枯怖,結(jié)果婚禮上注整,老公的妹妹穿的比我還像新娘。我一直安慰自己嫁怀,他們只是感情好设捐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塘淑,像睡著了一般萝招。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上存捺,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天槐沼,我揣著相機(jī)與錄音,去河邊找鬼捌治。 笑死岗钩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肖油。 我是一名探鬼主播兼吓,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼森枪!你這毒婦竟也來了视搏?” 一聲冷哼從身側(cè)響起审孽,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浑娜,沒想到半個月后佑力,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筋遭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年打颤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漓滔。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡编饺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出响驴,到底是詐尸還是另有隱情反肋,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布踏施,位于F島的核電站石蔗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏畅形。R本人自食惡果不足惜养距,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望日熬。 院中可真熱鬧棍厌,春花似錦、人聲如沸竖席。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毕荐。三九已至束析,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憎亚,已是汗流浹背员寇。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留第美,地道東北人蝶锋。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像什往,于是被迫代替她去往敵國和親扳缕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349