ros_and_cmake - yuhannah/skills_map GitHub Wiki

ROS 的编译和 cmake 的编译

ROS官网

https://www.ros.org/

ROS的catkin编译指导

https://wiki.ros.org/catkin/Tutorials

ROS的catkin的CMakeLists.txt

https://wiki.ros.org/catkin/CMakeLists.txt

https://docs.ros.org/en/groovy/api/catkin/html/dev_guide/generated_cmake_api.html#catkin-package

https://answers.ros.org/question/58498/what-is-the-purpose-of-catkin_depends/

ROS 的编译

cd ~/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make

目录名称不限于catkin_ws,只要在 package 所在的目录src初始化生成 CMakeLists.txt 就能编译。

只编译 src 下的部分 package:

catkin_make -DCATKIN_WHITELIST_PACKAGES=“package1;package2”

重置上述筛选条件,编译全部 package:

catkin_make -DCATKIN_WHITELIST_PACKAGES=“”

cmake 的编译

cd ~/catkin_ws/src
catkin_init_workspace
cd ..
mkdir build
cd build
cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel
make

不论在什么目录结构下都能用 cmake 编译:

将 package 所在的目录作为 workspace,初始化生成 CMakeLists.txt。

cd ~/1/2/3/
catkin_init_workspace   # 在3/下生成CMakeLists.txt
cd ../../
mkdir build             # 在1/下创建build
cd build
cmake ../2/3/ -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel  # 在1/下生成devel
make                    # 编译结果在build里

在 workspace 基础上,搭建 cmake 项目:

目录结构:

- 1
-   build
-   libs
-      src
-          open_karto
-          slam_karto
-          sba
-          CMakeLists.txt
-      devel
-   CMakeLists.txt

在项目目录1/下新建buid/文件夹,用于存放编译结果:

cd ~/1
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../libs/devel
make

编译通过,libs 编译的库在 libs/devel/ 下,项目的编译结果在 1/build/ 下。