Feb. 9th 2017
Dirk Thomas
find_package(foo) to work
foo_FOUND, foo_VERSION(_...)foo_INCLUDE_DIRECTORIESfoo_LIBRARIES (abs. paths or library names)foo_LIBRARY_DIR (if the prev. one contains names)<name>Config.cmake<lower-case-name>-config.cmakePATH to find executables PYTHONPATH to find Python modules GAZEBO_MODEL_PATH, ROSDISTRO_NAME5 (!) lines:
rosinstall_generatorwstool / vcstoolrosdep installcatkin_make(_isolated) / catkin build / ament build / ?. setup.bash| Build system | Build tool | |
|---|---|---|
| Operate on | a single package | a set of packages |
| Invoking | E.g. python setup.py install or cmake, make, make install |
the build system for each package in topological order |
| In ROS 1 | catkin, CMake | catkin_make(_iso.) [catkin], catkin build [catkin_tools] |
| In ROS 2 | ament_cmake, CMake, Python | ament build [ament_tools] |
| Alternative | Manifest still required, man. gen. CMake config, environment setup?? |
Build each package manually |
| catkin | ament_cmake | |
|---|---|---|
| Platform support | Linux, MacOS, Windows 😜 |
Linux, MacOS, Windows |
| CMake ver. | >= 2.8.11 | >= 3.5 |
| Devel space vs. Symlinks |
Devel space is "custom", pkgs need to work around spec. issues 😕 |
Symlinking instead of copying on install is transparent to the pkg 😉 |
| catkin_basic vs. ament_auto |
Simplify writing CMake code, can't handle certain cases "by design", therefore abandoned |
Convention over configuration, may become the "default" 😍 |
| crawling vs. index |
Lots of filesystem crawling 😢 | Index built at build time, runtime lookup fast 😍 |
pkg-config files (only in catkin)gtest / nose tests| catkin_make(_isolated) | catkin_tools | ament_tools | |
|---|---|---|---|
| Platforms | Lin, Mac, Win | Lin, Mac, Win | Lin, Mac, Win |
| Python ver. | >= 2.7 | >= 2.7 | >= 3.5 |
| Recommended tool, proven reliability | Many great usability features, e.g. config, profile |
Python pkgs, ROS 2 (only), modularity | |
| No package level parallelization, tailored to catkin |
Not recommended yet, tailored to catkin | Almost no usability features |
For more information go to:
wiki.ros.org/catkin/conceptual_overview
design.ros2.org/articles/ament.html