ROS 引用同一工作空間下其他包中的 h 檔案

2021-09-24 17:07:06 字數 1377 閱讀 9585

引用同一工作空間下其他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...