引用同一工作空間下其他package的『.h』檔案,一種方法是建立library生成動態鏈結庫『.so』:
[1][2]
[3]另一種方法是直接引用『.h』檔案:
[1][2]
1)catkin_package(
include_dirs include
#libraries motordriver
#catkin_depends roscpp rospy std_msgs
#depends system_lib )
2)include_directories( include $ )
b_package:
1、修改package.xml檔案(這項好像不修改也能編譯成功):
a_package
a_package
2、修改cmakelist.txt檔案:
find_package( catkin required components
roscpp
rospy
std_msgs
a_package ) (這一步很重要!!!)
catkin_package( include_dirs include
#libraries tracking
#catkin_depends roscpp rospy std_msgs
#depends system_lib ) (這一步好像也是不修改也ok)
include_directories(include $)
3、然後b_package中的『.cpp』檔案引用的時候需要指出『.h』檔案的所屬功能包:
#include
最後貼上自己當時遇到錯誤的提示與關鍵的修改:
錯誤1:project 『***』 tried to find library 『a_package』. the library is neither a target nor built/installed properly. did you compile project 『a_package』? did you find_package() it before the subdirectory containing its code is included?
在這裡插入描述
修改:a_package的cmakelist.txt檔案:
catkin_package(
include_dirs include
#libraries a_package (這裡要注釋掉)
catkin_depends roscpp rospy std_msgs message_runtime
depends system_lib )
錯誤2:fatal error: a_package/xx.h: 沒有那個檔案或目錄
ROS 鏈結同乙個工作空間的其他包的標頭檔案
catkin make編譯時,往往需要鏈結同乙個工作空間的其他包的標頭檔案。如果沒有修改配置檔案直接呼叫該標頭檔案 include否則會出現類似如下的錯誤,也有可能會直接卡死 home xx xx ws srca package src db.hpp 13 26 fatal error b pack...
ROS 工作空間和功能包
工作空間是乙個存放工程開發相關檔案的資料夾 在home下新建乙個資料夾,比如叫catkin ws,在它的下面新建乙個src資料夾,以後用來放源 在src裡面開啟terminal,初始化,結束後會多出乙個cmakelists.txt檔案。切換到catkin ws進行編譯 編譯均是在catkin ws進...
ROS 建立工作空間和包
一 建立ros工作區和包 建立乙個名為catkin ws的資料夾,其中包含另乙個名為src的資料夾。ros工作區也稱為catkin工作區。mkdir p catkin ws src不應該更改src資料夾的名稱。但是,您可以更改工作區資料夾名稱 catkin ws 使用cd命令切換到src資料夾 cd...