catin_make編譯過程,cmake指令依據你的cmakelists.txt 檔案,生成cmakefiles和makefile檔案,make再依據此cmakefiles和makefile檔案編譯鏈結生成可執行檔案,catkin_make是將cmake與make的編譯方式做了乙個封裝的指令工具, 規範了工作路徑與生成檔案路徑.
一、先確定自己的環境變數是否設定正確
export | grep ros
若出現如下的,說明是正確的
declare -x ros_root="/opt/ros/indigo/share/ros"二、建立乙個catkin工作空間
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
三、開啟工作空間,編譯這個工作空間,即使工作空間是空的
$ cd ~/catkin_ws/
$ catkin_make
編譯命令:
$ catkin_make [make_targets] [-dcmake_variables=...]
四、檢視編譯後的目錄
可看到「build」和「devel」這兩個資料夾,與src資料夾並列
在devel資料夾裡,可以看到有幾個setup.*s**件,
通過source命令啟用這些檔案中任何乙個檔案都會將這個工作空間覆蓋到環境中:
$ source devel/setup.bash
五、確認自己的工作空間是否已經設定正確
echo $ros_package_path
如果出現如下的顯示,說明設定正確
/opt/ros/kinetic/share
六、工作空間的檔案結構
乙個catkin的包主要有以下幾部分組成:
(1)必須包括乙個package.xml檔案;
(2)必須包括乙個cmakelists.txt檔案;
(3)在每乙個資料夾下只能有乙個包,且包不允許巢狀。
workspace_folder/ -- workspace
src/ -- source space
cmakelists.txt -- 'toplevel' cmake file, provided by catkin
package_1/
srcinclude
cmakelists.txt -- cmakelists.txt file for package_1
package.xml -- package manifest for package_1
...package_n/
srcinclude
cmakelists.txt -- cmakelists.txt file for package_n
package.xml -- package manifest for package_n
格式1:格式1標準說明是rep-0127
格式2:格式2標準說明是rep-0140
1.在package.xml中主要包含以下資訊:
2. 每個package.xml檔案必須包含的標籤包括:
最高端tag,屬性:format,用於指定格式
:package名稱
:當前版本
:package的基本描述
(至少乙個):維護者
(至少乙個):協議
(至少乙個):一般情況下只需要指定catkin作為編譯工具,在需要交叉編譯的情況下需要增加目標機器的編譯工具。
可選標籤包括: (多個):指定package的** (多個):作者 (多個):編譯時需要依賴的其它package,適用於靜態庫 (多個):宣告本package與其它ros package有衝突,不能同時部署 (多個):宣告本package是其它package的替換版本 :用於新增額外的資訊,比如需要嵌入的其它package的外掛程式,或者一些說明資訊。
以及在格式1和格式2有區別的標籤:
格式1
(多個):進行單元測試時的依賴項,如前兩個標籤中已出現過,則不必再出現
格式2:用於幫助使用本package的其它包傳遞依賴宣告
:構建工具的依賴傳遞宣告
:相當於格式1的run_depend標籤。
: 相當於build_depend + buildtool_depend + exec_depend,避免重複寫三個宣告。不建議對系統依賴使用,因為會強行依賴development級package。
:構建文件所需要的依賴,當前沒什麼用,以後可能會有需要
:進行單元測試時的依賴項,此標籤中的package 可以 在其它標籤**現
上述是對package.xml的基本說明,對於使用者而言,如果通過catkin_create_package命令生成的包,往往已經自動生成了需要的全部標籤,只需要在依賴有所變化的情況下更改(格式1):
catkin基於cmake實現,cmakelist的語句與基本cmake一致,常用的包括:
一、使用catkin_create_pkg指令碼去建立乙個新的安裝包」beginner_tutorials」,這個包依賴於 std_msgs, roscpp, and rospy:
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
這個將會建立乙個 beginner_tutorials資料夾,包含了package.xml and a cmakelists.txt.
在建立的beginner_tutorials資料夾下可以看到package.xml和cmakelists.txt。catkin_create_pkg要求您給出包的名字,及選擇性的給出所建立的包依賴於哪乙個包。他的使用方法如下:
catkin_create_pkg [depend1] [depend2] [depend3]
這樣,我們的乙個包就建立好了,我們可能會需要對包之間的依賴性做一下解釋。我們可以使用rospack命令來檢視包之間的依賴關係。檢視直接依賴關係:
rospack depends1 beginner_tutorials
可以看到,返回的結果正是我們使用catkin_create_pkg時,所使用的引數。我們還可以直接在beginner_tutorials包下的package.xml中檢視包的依賴關係。使用命令:
roscd beginner_tutorials
cat package.xml
二、編譯
使用 catkin_make
catkin_make 是乙個命令工具用來簡化catkin的標準工作流程的,你可以想象一下catkin_make工具可以呼叫cmake和make來完成編譯。
用法:
$ catkin_make [make_targets] [-dcmake_variables=...]
Source Insight建立工程
用source insight建立乙個 閱讀工程,source insight是乙個非常優秀的 閱讀工具,使用它來閱讀 修改 新增 移除 來說是非常方便的,學好對它的使用是非常有好處的。一 前提條件 source insight版本 3.50 源 linux 3.10.4 接下來出現這個 遞迴新增到...
1 建立工程
8.建立通用的showinfoandaddcontactview.h m 既可以給聯絡人展示頁面使用,也可以給新增聯絡人頁面使用 9.建立showinfoviewcontroller.h m檔案,並設定自定義檢視,並且將頁面的uitextfield的邊框去掉,uitextview的背景色清掉,並設定...
vim建立工程檔案
vim需要額外工程管理外掛程式嗎?答案是完全不用。假設我們有乙個工程,放在test目錄下,裡面有main.c,a.c,b.c 1.建立 工程檔案 的過程 1 進入test 目錄,啟動vi 2 用 e 命令分別開啟所有需要加入功能的檔案 3 用 mksession test vim 建立 工程檔案 4...