來源於ros wiki上的問題: how to build a single package by catkin_make
一般來講,在工作空間下,使用catkin_make 將會一次性編譯src下所有的包,因爲catkin_make 相當於以下命令的集合:
$ cd ~/catkin_ws
$ cd src
$ catkin_init_workspace
$ cd ..
$ mkdir build
$ cd build
$ cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel
$ make
但是,如果有一個新添加的包,將源文件等放入到了src下,想要單獨進行編譯,則可以使用:
catkin_make -DCATKIN_WHITELIST_PACKAGES="package1;package2"
這裏可以單獨編譯package1和package2這兩個包,這裏需要注意的應該放入的是package的名字,而不是你的文件夾下的文件名;例如,在src下我的文件夾名叫做kvision, 但是具體的package名稱是kvision下的package.xml文件中的cam_odo_cal
如果是上述原因導致catkin_make 報錯提示:package ×× not found in current workspace, 修改包名爲準確的package名稱即可;
catkin_make -DCATKIN_WHITELIST_PACKAGES 命令結束後,如果想要再回到那種catkin_make 編譯所有包的狀態,執行:
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
即可;
在https://answers.ros.org/question/54178/how-to-build-just-one-package-using-catkin_make/ 這個鏈接中,大神提供了另外的幾種單獨編譯某個包的方法:
1. 使用 --only-pkg-with-deps
catkin_make --only-pkg-with-deps <target_package>
2. 使用catkin)build, 這種情況適用於之前沒有編譯過的情況,如果之前使用的是catkin_make, 後面使用catkin_build時會有錯誤提醒,大意就是需要刪除之前的編譯內容,重新使用catkin_build;
Using Catkin-Tools:
#install build tools
sudo apt-get install python-catkin-tools
#Build specific package
catkin build <target_package>
#Build the package from a directory under the package root
catkin build --this