The user’s workspace provides few options for configuration. if you type the following commands in the workspace:

cd <workspace>/build
ccmake ..

you will see a list of options, but none of them should be modified by hand. CMAKE_BUILD_TYPE and CMAKE_INSTALL_PREFIX are not meaningfull, the CMAKE_TOOLCHAIN_FILE should be set using the profiles command. The PID_OFFICIAL_REMOTE_ADDRESS is used to show the user the address of the official workspace- i.e. the central repository providing PID API. This address should be let unchanged except you know what you are doing. Indeed changing the address to another one will define another workspace, which may be interesting only for PID users that want to contribute to PID APIs.

There are also other options that may appear: these options are relative to the activation of plugins. They have the form: PLUGIN_<plugin name>.


Plugins are extensions of the PID cmake system: they are used to implement specific behaviors. These specific behaviors are useful when, for instance, users need to interface the PID system with some development tools that require specific configurations.

As an example, the plugin atom_clang_complete is used to generate specific .clang_complete files used by the atom tool plugins clang linter (to get compiler message in realtime) and clang autocomplete (to implement auto completion). These files are generated depending on the configuration of packages.

All PID plugins are placed in the share/cmake/plugins folder of the workspace. Each plugin is defined in a dedicated folder with same name as plugin. This folder contains two files:

  • plugin_description.cmake: this file contains general information about the plugin.

  • plugin_activate.cmake: this file contains the cmake script that will be executed by packages once the plugin is active.

To activate the plugin, users simply have to use the dedicated option provided by the workspace. For instance the atom_clang_complete plugin provides a PLUGIN_atom_clang_complete option. By default the value of this CMake option OFF. By setting it to ON the user activate the plugin which means that its behavior will be executed by any package anytime it is configured.