Basic concepts

The environment is the deployment unit used to reuse configuration of host system with various build tools, and particularly compilers in use.

. It basically contains:

  • CMake scripts used to configure to host system with given tools.
  • Eventually prebuild binaries, possibly for various build tool versions and host platforms.
  • git version control information.
  • CMake projects files used to generate CMake build tool configuration files (also called toolchain files).

environments have been imagined since it can become quite complex to provide a valid configuration of host to a team of developpers, in such a way that they do not have to bother too much about configuring their host with adequate build tools.

Environment structure

An environment is implemented as folder hierarchy inside a worskpace. This is in the same time a CMake project and a git repository.

CMake project

An environment is a CMake project structured according to the standard folder hierarchy defined below:

  • the root folder of the environment has the name of the environment. This folder is basically a git repository which allows to manage concurrent work and version control on a package‚Äôs content.
  • the .git folder contains version control related information, automatically managed by the git tool.
  • the root .gitignore file is used to exclude from version control some artefacts like temporary files.
  • the CMakeLists.txt file defines the process used to configure the workspace. It also contains meta-information on the environment (authors and institutions, repository address, license, etc.).
  • the build folder is from where configuration is perfomed.
  • the src folder contains hand written cmake scripts that really implement the configuration process.
  • the share folder contains some specific cmake files used by the build process.
  • the license.txt file contains the license that applies to the environment source code itself (the CMake code). This file is generated by the build process.
  • the README.md file contains the text presenting the environment in the source project online site.

Git repository

Environments, as any deployment unit, are also git repositories, whose content is structured according to the previously defined pattern. git is used to version all text files and git-lfs may be used if the repository also contains binaries or archives.

Contrarily to packages, there is no semantic version bound to an environment project.