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.