blob: 85b97b7fa003282e1eeb1113c4668a9b73e3f731 (
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
|
Extra CMake Modules
===================
Additional functionality for the CMake build system
Introduction
------------
The Extra CMake Modules package, or ECM, adds to the modules provided by CMake,
including both ones used by `find_package()` to find common software and ones
that can be used directly in `CMakeLists.txt` files to perform common tasks.
In addition, it provides common build settings used in software produced by the
KDE community.
While the driving force of this module is to reduce duplication in CMake scripts
across KDE software, it is intended to be useful for any software that uses the
CMake build system.
Usage
-----
To use ECM, add the following to your `CMakeLists.txt`:
find_package(ECM <ecm-version> REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
(note that you may want to append `${ECM_MODULE_PATH}` to `CMAKE_MODULE_PATH`
instead). You can then just include the modules you require, or use
`find_package()` as needed. For example:
include(ECMInstallIcons)
Developers of KDE software will often want to use the KDE standard settings
provided by ECM; they can do the following:
find_package(ECM <ecm-version> REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
include(KDEInstallDirs)
include(KDECompilerSettings)
include(KDECMakeSettings)
Note that any combination of the above includes can be used if you only want
some of the settings. Some of the functionality of `KDECMakeSettings` can also
be selectively disabled; see the documentation at the top of
`kde-modules/KDECMakeSettings.cmake` for more details.
Organization
------------
This module is organised as follows:
- `attic/` contains most of the CMake modules shipped with kdelibs 4. These
can be used to form the basis of cleaned-up modules, either for inclusion in
ECM or for private use in a project.
- `find-modules/` contains the modules used by CMake's `find_package()` command.
- `kde-modules/` contains modules that provide some common settings for KDE
applications and frameworks.
- `modules/` contains the modules that should be included directly by CMake
scripts, other than those in `kde-modules/`.
- `tests/` contains automated tests for the functionality provided by ECM
modules.
License
-------
All code in this repository is licensed under the [BSD 2-Clause license][1].
[1]: http://opensource.org/licenses/BSD-2-Clause
Links
-----
- Home page: <https://projects.kde.org/projects/kdesupport/extra-cmake-modules>
- Mailing list: <https://mail.kde.org/mailman/listinfo/kde-buildsystem>
- IRC channel: \#kde-devel on Freenode
- Git repository: <https://projects.kde.org/projects/kdesupport/extra-cmake-modules/repository>
|