catkin_make catkin_make install 文件结构 build devel install src
编译
01.文件结构:
source /opt/ros/melodic/setup.bash
src:源空间
build:编译空间
devel:开发空间
install:安装空间
02.编译命令
build 和 devel 文件夹由 catkin_make 命令自动创建;
install 文件夹由 catkin_make install 命令自动创建。
catkin_make install 的作用是:创建一个可以运行,但不含源码的工程包,以便于给客户等其他人使用,但同时不至于泄露源码的这么一个作用
catkin_make install 和 cmake install 不是一个作用--
catkin_make -DCATKIN_WHITELIST_PACKAGES="" -DCMAKE_INSTALL_PREFIX=/usr/local/test install
03.具体说明
src
一个 package 下必须包含 CMakeLists.txt 和 package.xml 两个文件
include 和 src 分别存放头文件(*.h)和源程序文件(*.c/*.cpp等);
scripts 存放脚本文件(比如Python文件 *.py,shell文件 *.sh);
launch 存放 launch文件(*.launch),用于批量运行多个可执行文件;
config 存放配置文件(*.yaml等);
build:编译空间
存放CMake和catkin的缓存信息、配置信息和其他中间文件。缓存和中间文件
devel:开发空间
存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等
catkin_make install 把install文件夹分享给其他人就可以
排查错误:
注意引用的文件不存在,也可能是文件中有个别字符不对应 alone along l1 ll
启动
source /opt/t_ws/devel/setup.bash
nohup roslaunch t_ws_node t_ws.launch >t_ws_node.out 2>&1 &
ROS使用catkin_make编译
基础说明
$ cd ~/catkin_ws #回到工作空间,catkin_make必须在工作空间下执行
$ catkin_make #开始编译
$ source ~/catkin_ws/devel/setup.bash #刷新坏境
--pkg PKG [PKG ...] 只对某个PKG进行make package
--only-pkg-with-deps ONLY_PKG_WITH_DEPS [ONLY_PKG_WITH_DEPS ...]
将指定的package列入白名单 CATKIN_WHITELIST_PACKAGES,
之编译白名单里的package。该环境变量存在于CMakeCache.txt
源代码--src --> build --> devel
catkin_make之后,应该在catkin工作区的根目录中注意到两个新文件夹:build和devel文件夹。
在build文件夹中将调用cmake和make, 缓存信息和中间文件
在devel文件夹中将包含所有生成的文件和目标,以及setup。* sh文件,以便您可以像安装它一样使用它
目标文件(包括头文件,动态链接库,静态链接库,可执行文件)环境变量等
文件系统层次结构标准(FHS)
一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文件等等)
CMakeLists.txt package 的包名-依赖-源文件-目标文件等编译规则
package.xml -- 报名-版本号-作者-依赖信息等
功能包编译
1. 编译工作空间下的所有功能包
catkin_make
2. 编译工作空间下特定的功能包
catkin_make -DCATKIN_WHITELIST_PACKAGES=“package1;package2”
3. 编译工作空间下特定的功能包
catkin_make --pkg package_name
4.catkin_make安装到指定目录
source /opt/ros/kinetic/setup.bash
catkin_make -DCMAKE_INSTALL_PREFIX=/opt/ros/kinetic install
关于 DCMAKE_INSTALL_PREFIX
关于 DCATKIN_WHITELIST_PACKAGES 说明
01.编译功能包
catkin_make -DCATKIN_WHITELIST_PACKAGES="需要单独编译的包名"
02.但是如再次使用catkin_make编译所有功能包时会出现仅仅只编译上次设置的单独功能包,如果想要再次使用catkin_make编译所有功能包,需要执行:
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
切换到所有功能包
catkin_make install 中和 CmakeList.txt 中的配置
install用于指定在安装时运行的规则。它可以用来安装很多内容,可以包括目标二进制、动态库、静态库以及文件、目录、脚本等
# 将源代码添加到此项目的可执行文件。
add_executable (Server "Server0327.cpp" "Server0327.h")
target_link_libraries
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}/..
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
)
install(DIRECTORY launch/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch
)
install(DIRECTORY conf/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/conf
)
参考
https://blog.csdn.net/zhaodeming000/article/details/119884395
ROS简介 https://www.kancloud.cn/zhouws/robot_ustc_mooc/2153666