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.