Linked 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.
It does this by building each package into its own hidden FHS tree, and then symbolically linking all products into the unified devel space which is specified in the workspace configuration.
When building with a linked
layout, Catkin packages are built into FHS trees stored in the .private
hidden directory at the root of the devel space.
Within this directory is a directory for each package in the workspace.
Setup File Generation¶
In the merged
layout, every package writes and then over-writes the colliding setup files in the root of the devel space.
This leads to race conditions and other problems when trying to parallelize building.
With he linked
layout, however, only one package generates these files, and this is either a built-in “prebuild” package, or if it exists in the workspace, the catkin
CMake package, itself.
.catkin File Generation¶
When using the linked
layout, catkin_tools
is also responsible for managing the .catkin
file in the root of the devel space.