Pre- and Post-installation Disk Layout reference¶
Source directory
This page describes the intended layout of build and install folders, in particular with respect to the Filesystem Hierarchy standard (FHS).
e.g. for package ‘pkg’:
src/
pkg/
CMakeLists.txt
package.xml # contains inter-package and system dependencies
# as specified in `REP 127 <http://www.ros.org/reps/rep-0127.html>`_
include/
pkg/
header.hpp
otherheader.hpp
msg/
PkgMsg.msg
src/
pkg/
__init__.py
module.py
CMakeLists.txt
source.cpp
srv/
PkgSrv.srv
Todo
Mention what happens with a manifest.xml
file for backward compatibility with rosbuild
Build directory
build/
CATKIN_IGNORE # an empty file to guide catkin to not search in subfolders for package.xml files
CMakeCache.txt
cmake_install.cmake
Makefile
devel/ # the layout of that folder follows the (see install directory)
.catkin # identifies folder as a catkin devel/install space
# it contains a semicolon separated list of source folders if the workspace is a devel space
env.sh
setup.bash
setup.sh
setup.zsh
_setup_util.py # functions for the setup shell scripts
bin/ # just "anointed" central binaries (i.e. rosrun)
etc/ # environment hooks, configuration files
catkin/
profile.d/
10.ros.sh # e.g. defining the ROS_MASTER_URI
langs/ # to determine which message generators are available
roscpp # contains "C++"
rospy # contains "Python"
include/ # header files of generated code
lib/ # all compiled libraries go here
pkgconfig/ # generated .pc files for all packages
pythonX.Y/
dist-packages/
pkg/ # generated Python code
__init__.py # generated file to relay imports into src directory of that package
pkg/ # compiled binaries of that package
share/ # all package-specific but architecture independent files
pkg/ # one folder per package
cmake/ # generated pkgConfig.cmake and pkgConfig-version.cmake for find_package()
CMakeFiles/
pkgN/ # the usual CMake-generated stuff
catkin_generated/ # files generated by catkin
cmake/
CMakeFiles
cmake_install.cmake
installspace/ # files generated by catkin which will be installed
Makefile
...
Install directory
The layout of the install directory follows the Filesystem Hierarchy Standard (FHS).
/opt/ros/groovy/ # defined by the CMAKE_INSTALL_PREFIX
# very similar to the devel space folder
# therefore in the following only the differences are mentioned
.catkin # identifies folder as a catkin devel/install space
# the file is empty which indicates that it is an installspace
lib/
pythonX.Y/
dist-packages/
pkg/ # besides the generated Python code
# contains the Python source code of package
include/ # besides the generated header files
# contains all header files from the source directories
share/
pkg/ # further resources (i.e. icons) copied from source directory
manifest.xml # provide export information for legacy rosmake based stacks/packages
action/
msg/
Foo.msg
Bar.msg
something.launch # the rest is as the package installs it
stacks/
dry_stack1 # packages built via legacy rosmake
dry_stack2 # packages built via legacy rosmake