Version 8 (modified by sylvain.joyeux, 6 years ago) (diff)


This page lists guidelines on packages and package build systems. These are not hard requirements (packages that do not follow these guidelines could be integrated in Rock), but are meant to be followed when possible.

Package Directories

The only mandatory files and directories are and src/. The other ones are optional.

  • doxyfile configuration file
  • src/: Contains all header (*.h/*.hpp) and source files, as well as the pkg-config file(s) for the built libraries.
  • viz/: Source files for a vizkit plugin / widget related to this library
  • bindings/: Bindings for this package for other language, e.g. such as Ruby
    • ruby/: Ruby files and C++-to-Ruby extensions related to this package.
  • resources/: General resources such as images that are needed by the program
  • build/:The target directory for the build process, temporary content. This directory is automatically created by the build system(s)
  • external/: When including software that needs a non standard installation process, or one that can be easily embedded include the external software directly here
  • doc/: should contain additional documentation

Build System Behaviour

  • the build system must support separating the build from the source (i.e. building in a build/ subdirectory)
  • the package must have a "make install" target which installs the relevant binaries and headers in a specified prefix (CMAKE_INSTALL_PREFIX when using CMake). The installation should follow the Linux directory standard.
  • the package should have a "make doc" target which generates documentation for the API in build/doc.
  • headers should be installed in a subdirectory of include/ named as the package (for instance, the slam/envire package should install its includes in include/envire/). As a special exception, packages that have a single include file can install it as include/<package_name>.hpp