catkin_make 只編譯一個包

來源於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

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章