Project Architecture

The following tree structure represents a typical CMake project directory structure:

<project-root-path>
|
├── CMakeLists.txt
│
├── autobuild/
│   ├── redpesk
│   │   └── autobuild
│   ├── linux
│   │   └── autobuild
│   └── windows
│       └── autobuild
├── conf.d/
│   ├── packaging/
│   │   ├── rpm
│   │   │   └── package.spec
│   │   └── deb
│   │       ├── package.dsc
│   │       ├── debian.package.install
│   │       ├── debian.changelog
│   │       ├── debian.compat
│   │       ├── debian.control
│   │       └── debian.rules
│   ├── cmake
│   │   ├── 00-debian-osconfig.cmake
│   │   ├── 00-suse-osconfig.cmake
│   │   ├── 01-default-osconfig.cmake
│   │   └── config.cmake
│   └── wgt
│       ├── icon.png
│       └── config.xml.in
├── <target>
│   └── <files>
├── <target>
│   └── <file>
└── <target>
    └── <files>
File or Directory Parent Description
root_path n/a CMake project root path. Holds the master CMakeLists.txt file and all general project files.
CMakeLists.txt The master CMakeLists.txt file.  
autobuild/ root_path Scripts generated from app-templates to build packages the same way for differents platforms.
conf.d/ root_path Holds needed files to build, install, debug, and package a redpesk application project.
packaging/ conf.d/ Contains output files used to build packages.
cmake/ conf.d/ Minimally contains the config.cmake file, which is modified from the sample provided in the app-templates submodule.
wgt/ conf.d/ Contains config.xml.in and optionaly the test-config.xml.in template files that are modified from the sample provided with the CMake module for the needs of the project. For more details, see the config.xml.in.sample and test-config.xml.in.sample files.
target root_path A target to build, which is typically a library or executable.

When building projects using CMake, the build process automatically detects the CMakeLists.txt and *.cmake files. To help with this process, the PROJECT_SRC_DIR_PATTERN variable is used for recursive pattern searching from the CMake project’s root_path downward. Each sub-folder below root_path in the project is searched and included during compilation. The directories matching the pattern PROJECT_SRC_DIR_PATTERN variable are scanned.

NOTE: The PROJECT_SRC_DIR_PATTERN variable defaults to “*”.

When the CMakeLists.txt file is found, the directory in which it is found is automatically added to the CMake project.

Similarly, when a file whose extension is .cmake is found, the directory in which that file resides is also added to the CMake project.

NOTE In case you have a .cmake file located in a folder that you do not want to include in the CMake project. You can add a _ in front of the folder name to exclude it from the CMake project.