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.
envgen
Generate environment setup file for building.
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.