# Build System Overview

# Features

The build system facilitates CMake capabilities to enable easy creation of customer application builds and to provide centralized build configuration and user settings.

<div class="contents" id="bkmrk-makefile-%2F-solution-"><div class="textblock">- Makefile / solution compilation incl. 3rd party components
- Makefile / solution generation considering dependencies
- Central module naming
- Overridable project and user options (features)
- Overridable build rules (compiler and tool-chain settings)
- System detection (OS, CPU, GPU, Compiler, ...) considering cross compilation
- Collection of available OS and GPU device packs
- Code generation for build-dependent sources (e.g. configuration files)
- Version validation
- CMake Logging and Tracing

</div></div>

# Build System Structure

#### <a class="anchor" id="bkmrk-"></a>CGI-Studio Build System Structure

The build system is a modular environment for CGI-Studio components, automatically detecting [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]"), [Courier](http://dev.doc.cgistudio.at/APILINK/namespace_courier.html) and FeatStd libraries to provide easy application inclusion.

<p class="callout warning">This information is outdated with the new cmake environment from CGIStudio 3.14 on</p>

<div class="contents" id="bkmrk-filename%28foldername%29"><div class="textblock"><table border="1" cellpadding="5" cellspacing="0" width="800"><tbody><tr bgcolor="#d4d4d4"><th>**Filename(Foldername)**</th><th>**Description**</th></tr><tr><td>cgistudio\_cmake\_main.cmake</td><td>Entry point, provides common information and constants  
Defines CGI-Studio component "projects"</td></tr><tr><td>cgistudio\_detection\_inc.cmake</td><td>Provides detection facilities for various components</td></tr><tr><td>cgistudio\_cmake\_variables.cmake</td><td>CMake switch management, enables deprecating and overriding of CMake GUI variables</td></tr><tr><td>cgistudio\_build\_rules\_cxx.cmake</td><td>Provides build settings and compiler options</td></tr><tr><td>cgistudio\_version\_check\_inc.cmake</td><td>Provides version check facilities, used by e.g. CgiStudioCanderaConfigVersion</td></tr><tr><td>cgistudio\_pclint\_inc.cmake</td><td>Provides PC-Lint related facilities, incl. PC-Lint related user settings</td></tr></tbody></table>

</div></div>