Catkin Tools

Introduction

  • Installation: sudo apt install python-catkin-tools

  • It's time to migrate from catkin_make to catkin build !

catkin build command

  • rosbuild was the very first build tool developed by ROS community

  • Then comes catkin_make to help automate the merged build process at the top level

  • To address the numerous drawbacks of the merged build process,catkin_make_isolated was introduced to isolated build process for each package

  • Finally, catkin build is the most recent method to build packages, with improved performance

  • See catkin history for more information

catkin devel space

  • In addition to the merged and isolated devel space layouts provided by catkin_make and catkin_make_isolated, respectively, catkin_tools provides a default linked layout which enables robust cleaning of individual packages from a workspace.

  • Specifically, catkin packages are built in the .private hidden directory at the root of the devel space. Files in devel space are symbolic links to files in .privatefolder.

  • Additionally, to avoid race condition on setup files (e.g., setup.bash) and other problems in parallelize building, in linked layout only one package generates these files. A package named catkin_tools_prebuild may be built first (before all other packages) for this purpose.

  • To use merged layout, run command catkin config --merge-devel.

example catkin commands

#mkdir -p ~/catkin_ws/src
#cd ~/catkin_ws
catkin init  # cf. catkin_init_workspace

catkin config --extend /opt/ros/melodic  # extend explicitly
catkin config --merge-devel              # linked --> merged
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

#cd src
catkin create pkg example
# cf. catkin_create_pkg example

catkin create pkg example --catkin-deps std_msgs
# cf. catkin_create_pkg example std_msgs
# deps will be added to catkin COMPONENTS

catkin create pkg example --system-deps PCL
# no corresponding command in old style (catkin_make system)
# will generate a new line: find_package(PCL REQUIRED)

catkin list  # List the packages in the workspace

catkin build  # can run at all levels (~/catkin_ws, ~/catkin_ws/src, within pkg)
catkin build example_pkg  # build only this package
cd ~/catkin_ws/src/example_pkg && catkin build --this
#echo 'source ~/catkin_ws/devel/setup.bash' >> ~/.bashrc

catkin clean
catkin clean example_pkg  # clean only this package

FAQ & Troubleshooting

WARNING: Your current environment's CMAKE_PREFIX_PATH is different from the
cached CMAKE_PREFIX_PATH used the last time this workspace was built.

If you want to use a different CMAKE_PREFIX_PATH you should call `catkin clean`
to remove all references to the previous CMAKE_PREFIX_PATH.
  • This warning can be ignored and it will continue to use the cached path. It often happens after new workspaces are established and setup files are sourced.

  • Alternatively, it can be resolved by explicitly extending other workspaces.

    • catkin config --extend /opt/ros/melodic

    • to revert, catkin config --no-extend

Last updated