環(huán)境
- Ubuntu 18.04
- VS Code 插件: C/C++
- ROS Melodic
- gcc, clang(可選)
工作目錄
項目myproject文件夾位于~/catkin_ws/src/myproject
绽昼, 關(guān)于ROS catkin_ws工作空間的創(chuàng)建可以參考這里.
步驟
1. 構(gòu)建并導(dǎo)出編譯命令
- 確保當(dāng)前.cpp源文件已被添加到項目文件夾下的CMakeLists.txt中咏窿,例如:
add_executable(node_name src/main.cpp)
如果有其它自定義頭文件路徑也可以一并設(shè)置嗜憔,沒有的可以略過(注意ROS頭文件所在路徑不需要在這里指定):
target_include_directories(node_name PUBLIC ${PROJECT_SOURCE_DIR}/include)
- 在
~/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
3. 重啟VS Code
重啟VS Code掸刊,或者Ctrl+Shift+P打開主命令框輸入 Developer: Reload Window
4. 效果
最終效果如下免糕,可以看到頭文件可以被找到,并且可以給出自動補(bǔ)全忧侧。(如果這一步仍然提示找不到頭文件石窑,但是可以實(shí)現(xiàn)自動補(bǔ)全,檢查一下是否有其它C++插件在工作蚓炬,例如clangd, C++ Intellisense 等)
使用Clang提供自動補(bǔ)全(可選)
Clang編譯器提供的自動補(bǔ)全功能一般更友好一些松逊,比如,如果上述步驟默認(rèn)采用gcc編譯器肯夏,ROS_INFO仍存在警告提示经宏,而且不能自動補(bǔ)全Ros::Rate等一些類,而Clang沒有這些問題驯击。使用Clang編譯器的配置如下:
上面文件可以 Ctrl + Shift +P 輸入C/C++: Edit configurations (JSON)打開烁兰,注意這個文件和之前使用的C/C++: Edit configurations (UI) 是自動同步的,修改一處即可余耽。
沒有安裝Clang的話需要sudo apt install clang
注意:這些設(shè)置只保證自動補(bǔ)全功能使用Clang編譯器缚柏,不會影響最終編譯時候所選擇的編譯器苹熏。