Supported Build Types

The current release of catkin_tools supports building two types of packages:

  • Catkin – CMake packages that use the Catkin CMake macros
  • CMake – “Plain” CMake packages

There is currently limited support for adding other build types. For information on extending catkin_tools to be able to build other types of packages, see Adding New Build Types. Below are details on the stages involved in building a given package for each of the currently-supported build types.

Catkin

Catkin packages are CMake packages which utilize the Catkin CMake macros for finding packages and defining configuration files.

Configuration Arguments

  • --cmake-args
  • --make-args
  • --catkin-make-args

Build Stages

First Subsequent Description
mkdir
Create package build space if it doesn’t exist.
cmake check
Run CMake configure step once for the
first build and the cmake_check_build_system
target for subsequent builds unless the
--force-cmake argument is given.
preclean optional
Run the clean target before building.
This is only done with the --pre-clean option.
make
Build the default target with GNU make.
install optional
Run the install target after building.
This is only done with the --install option.
setupgen
Generate a setup.sh file to “source” the
result space.
envgen
Generate an env.sh file for loading the
result space’s environment.

CMake

Configuration Arguments

  • --cmake-args
  • --make-args

Build Stages

First Subsequent Description
mkdir
Create package build space if it doesn’t exist.
cmake check
Run CMake configure step once for the
first build and the cmake_check_build_system
target for subsequent builds unless the
--force-cmake argument is given.
preclean optional
Run the clean target before building.
This is only done with the --pre-clean option.
make
Build the default target with GNU make.
install
Run the install target after building,
and install products to the devel space.
If the --install option is given,
products are installed to the install space instead.
setupgen
Generate a setup.sh file if necessary.