blob: 6079a3d2e7247693da3908e02b48f13a29fa2801 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
---
edit_link: ''
title: Project Architecture
origin_url: >-
https://git.automotivelinux.org/src/cmake-apps-module/plain/docs/dev_guide/project-architecture.md?h=master
---
<!-- WARNING: This file is generated by fetch_docs.js using /home/boron/Documents/AGL/docs-webtemplate/site/_data/tocs/devguides/master/cmake-apps-module-guides-devguides-book.yml -->
# Project Architecture
The following tree structure represents a typical CMake project
directory structure:
```tree
<project-root-path>
|
├── CMakeLists.txt
│
├── autobuild/
│ ├── agl
│ │ └── 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 an AGL 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.
|