1ECM-KDE-MODULES(7)            Extra CMake Modules           ECM-KDE-MODULES(7)
2
3
4

NAME

6       ecm-kde-modules - ECM KDE Modules Reference
7

INTRODUCTION

9       Extra CMake Modules (ECM) provides several modules that provide default
10       settings (like installation directories, compiler flags and other CMake
11       options) aimed at software produced by the KDE modules; these are docu‐
12       mented here. ECM also provides modules with more general functionality,
13       documented in ecm-modules(7), and ones that extend the functionality of
14       the find_package command, documented in ecm-find-modules(7).
15
16       To use these modules, you need to tell CMake to find the  ECM  package,
17       and  then add either ${ECM_MODULE_PATH} or ${ECM_KDE_MODULE_DIR} to the
18       CMAKE_MODULE_PATH variable:
19
20          find_package(ECM REQUIRED NO_MODULE)
21          set(CMAKE_MODULE_PATH ${ECM_MODULE_DIR})
22
23       Using ${ECM_MODULE_PATH} will also make  the  other  types  of  modules
24       available.
25

ALL KDE MODULES

27   KDECMakeSettings
28       Changes  various CMake settings to what the KDE community views as more
29       sensible defaults.
30
31       It is recommended to include this module with the NO_POLICY_SCOPE flag,
32       otherwise you may get spurious warnings with some versions of CMake.
33
34       It  is  split  into three parts, which can be independently disabled if
35       desired.
36
37   Runtime Paths
38       The default runtime path (used on Unix systems to  search  for  dynami‐
39       cally-linked  libraries)  is set to include the location that libraries
40       will be installed to (as set in LIB_INSTALL_DIR or, if  the  former  is
41       not set, KDE_INSTALL_LIBDIR), and also the linker search path.
42
43       Note  that LIB_INSTALL_DIR or alternatively KDE_INSTALL_LIBDIR needs to
44       be set before including  this  module.   Typically,  this  is  done  by
45       including the KDEInstallDirs module.
46
47       This section can be disabled by setting KDE_SKIP_RPATH_SETTINGS to TRUE
48       before including this module.
49
50   Testing
51       Testing is enabled by default, and an option  (BUILD_TESTING)  is  pro‐
52       vided  for users to control this. See the CTest module documentation in
53       the CMake manual for more details.
54
55       This section can be disabled by setting KDE_SKIP_TEST_SETTINGS to  TRUE
56       before including this module.
57
58   Build Settings
59       Various  CMake build defaults are altered, such as searching source and
60       build directories for includes first, enabling automoc by default.
61
62       When find_package(ECM 5.38) or higher is called, this  also  selects  a
63       layout  for  the  build  dir  that  helps  running  executables without
64       installing: all executables are built into a toplevel “bin” dir, making
65       it  possible  to  find helper binaries, and to find uninstalled plugins
66       (provided that  you  use  kcoreaddons_add_plugin  or  set  LIBRARY_OUT‐
67       PUT_DIRECTORY               as               documented              on
68       https://community.kde.org/Guidelines_and_HOWTOs/Making_apps_run_uninstalled).
69
70       This section can be disabled by setting KDE_SKIP_BUILD_SETTINGS to TRUE
71       before including this module.
72
73       This section also provides an “uninstall” target that can be  individu‐
74       ally  disabled  by  setting  KDE_SKIP_UNINSTALL_TARGET  to  TRUE before
75       including this module.
76
77       By default on OS X, X11 and XCB related detections are  disabled.  How‐
78       ever  if  the need would arise to use these technologies, the detection
79       can be enabled by setting APPLE_FORCE_X11 to ON.
80
81       A warning is printed for the developer to know that  the  detection  is
82       disabled on OS X.  This message can be turned off by setting APPLE_SUP‐
83       PRESS_X11_WARNING to ON.
84
85       Since pre-1.0.0.
86
87       ENABLE_CLAZY option is added (OFF by default) when clang is being used.
88       Turning  this  option on will force clang to load the clazy plugins for
89       richer warnings on Qt-related code.
90
91       If  clang  is  not  being  used,  this  won’t  have  an  effect.    See
92       https://commits.kde.org/clazy?path=README.md
93
94       Since 5.17.0
95
96       · Uninstall target functionality since 1.7.0.
97
98       · APPLE_FORCE_X11 option since 5.14.0 (detecting X11 was previously the
99         default behavior)
100
101       · APPLE_SUPPRESS_X11_WARNING option since 5.14.0
102
103       · CMAKE_AUTORCC enabled by default when supported  by  cmake  (>=  3.0)
104         since 5.62.0
105
106   Translations
107       A  fetch-translations target will be set up that will download transla‐
108       tions for projects using l10n.kde.org.
109
110       KDE_L10N_BRANCH will be responsible for choosing which l10n  branch  to
111       use for the translations.
112
113       KDE_L10N_AUTO_TRANSLATIONS  (OFF  by  default)  will  indicate  whether
114       translations should be downloaded when building the project.
115
116       Since 5.34.0
117
118       KDE_L10N_SYNC_TRANSLATIONS (OFF by default) will download the  transla‐
119       tions at configuration time instead of build time.
120
121       Since 5.50.0
122
123   KDECompilerSettings
124       Set useful compile and link flags for C++ (and C) code.
125
126       Enables  many  more  warnings than the default, and sets stricter modes
127       for some compiler  features.   By  default,  exceptions  are  disabled;
128       kde_target_enable_exceptions() can be used to re-enable them for a spe‐
129       cific target.
130
131       NB: it is recommended to include this module with  the  NO_POLICY_SCOPE
132       flag,  otherwise  you  may  get spurious warnings with some versions of
133       CMake.
134
135       This module provides the following functions:
136
137          kde_source_files_enable_exceptions([file1 [file2 [...]]])
138
139       Enables exceptions for specific source files.  This should not be  used
140       on source files in a language other than C++.
141
142          kde_target_enable_exceptions(target <INTERFACE|PUBLIC|PRIVATE>)
143
144       Enables exceptions for a specific target.  This should not be used on a
145       target that has source files in a language other than C++.
146
147          kde_enable_exceptions()
148
149       Enables exceptions for C++ source files compiled for the CMakeLists.txt
150       file in the current directory and all subdirectories.
151
152       Since pre-1.0.0.
153
154   KDEFrameworkCompilerSettings
155       Set stricter compile and link flags for KDE Frameworks modules.
156
157       The  KDECompilerSettings  module  is included and, in addition, various
158       defines that affect the Qt libraries are set to enforce certain conven‐
159       tions.
160
161       For  example, constructions like QString(“foo”) are prohibited, instead
162       forcing the use of QLatin1String or QStringLiteral, and some Qt-defined
163       keywords like signals and slots will not be defined.
164
165       NB:  it  is recommended to include this module with the NO_POLICY_SCOPE
166       flag, otherwise you may get spurious warnings  with  some  versions  of
167       CMake.
168
169       Since pre-1.0.0.
170
171   KDEInstallDirs
172       Define KDE standard installation directories.
173
174       Note  that  none  of  the  variables defined by this module provide any
175       information about the location of already-installed KDE software.
176
177       Inclusion of this module defines the following variables:
178
179       KDE_INSTALL_<dir>
180              destination for files of a given type
181
182       KDE_INSTALL_FULL_<dir>
183              corresponding absolute path
184
185       where <dir> is one of (default values in parentheses  and  alternative,
186       deprecated variable name in square brackets):
187
188       BUNDLEDIR
189              application bundles (/Applications/KDE) [BUNDLE_INSTALL_DIR]
190
191       EXECROOTDIR
192              executables and libraries (<empty>) [EXEC_INSTALL_PREFIX]
193
194       BINDIR user executables (EXECROOTDIR/bin) [BIN_INSTALL_DIR]
195
196       SBINDIR
197              system admin executables (EXECROOTDIR/sbin) [SBIN_INSTALL_DIR]
198
199       LIBDIR object  code  libraries  (EXECROOTDIR/lib,  EXECROOTDIR/lib64 or
200              EXECROOTDIR/lib/<multiarch-tuple on Debian) [LIB_INSTALL_DIR]
201
202       LIBEXECDIR
203              executables for internal use by programs and  libraries  (BINDIR
204              on Windows, LIBDIR/libexec otherwise) [LIBEXEC_INSTALL_DIR]
205
206       CMAKEPACKAGEDIR
207              CMake packages, including config files (LIBDIR/cmake) [CMAKECON‐
208              FIG_INSTALL_PREFIX]
209
210       QTPLUGINDIR
211              Qt plugins (LIBDIR/plugins  or  qmake-qt5’s  QT_INSTALL_PLUGINS)
212              [QT_PLUGIN_INSTALL_DIR]
213
214       PLUGINDIR
215              Plugins (QTPLUGINDIR) [PLUGIN_INSTALL_DIR]
216
217       QTQUICKIMPORTSDIR
218              QtQuick1    imports    (QTPLUGINDIR/imports    or    qmake-qt5’s
219              QT_INSTALL_IMPORTS) [IMPORTS_INSTALL_DIR]
220
221       QMLDIR QtQuick2  imports  (LIBDIR/qml  or  qmake-qt5’s  QT_INSTALL_QML)
222              [QML_INSTALL_DIR]
223
224       INCLUDEDIR
225              C and C++ header files (include) [INCLUDE_INSTALL_DIR]
226
227       LOCALSTATEDIR
228              modifiable single-machine data (var)
229
230       SHAREDSTATEDIR
231              modifiable architecture-independent data (com)
232
233       DATAROOTDIR
234              read-only    architecture-independent    data    root    (share)
235              [SHARE_INSTALL_PREFIX]
236
237       DATADIR
238              read-only    architecture-independent     data     (DATAROOTDIR)
239              [DATA_INSTALL_DIR]
240
241       DOCBUNDLEDIR
242              documentation   bundles  generated  using  kdoctools  (DATAROOT‐
243              DIR/doc/HTML) [HTML_INSTALL_DIR]
244
245       KCFGDIR
246              kconfig     description     files      (DATAROOTDIR/config.kcfg)
247              [KCFG_INSTALL_DIR]
248
249       KCONFUPDATEDIR
250              kconf_update          scripts         (DATAROOTDIR/kconf_update)
251              [KCONF_UPDATE_INSTALL_DIR]
252
253       KSERVICES5DIR
254              services for KDE  Frameworks  5  (DATAROOTDIR/kservices5)  [SER‐
255              VICES_INSTALL_DIR]
256
257       KSERVICETYPES5DIR
258              service  types for KDE Frameworks 5 (DATAROOTDIR/kservicetypes5)
259              [SERVICETYPES_INSTALL_DIR]
260
261       KXMLGUI5DIR
262              knotify   description   files   (DATAROOTDIR/kxmlgui5)    [KXML‐
263              GUI_INSTALL_DIR]
264
265       KTEMPLATESDIR
266              Kapptemplate and Kdevelop templates (kdevappwizard/templates)
267
268       KNOTIFY5RCDIR
269              knotify  description files (DATAROOTDIR/knotifications5) [KNOTI‐
270              FYRC_INSTALL_DIR]
271
272       ICONDIR
273              icons (DATAROOTDIR/icons) [ICON_INSTALL_DIR]
274
275       LOCALEDIR
276              knotify       description       files       (DATAROOTDIR/locale)
277              [LOCALE_INSTALL_DIR]
278
279       SOUNDDIR
280              sound files (DATAROOTDIR/sounds) [SOUND_INSTALL_DIR]
281
282       TEMPLATEDIR
283              templates (DATAROOTDIR/templates) [TEMPLATES_INSTALL_DIR]
284
285       WALLPAPERDIR
286              desktop   wallpaper   images  (DATAROOTDIR/wallpapers)  [WALLPA‐
287              PER_INSTALL_DIR]
288
289       APPDIR application  desktop  files   (DATAROOTDIR/applications)   Since
290              1.1.0.  [XDG_APPS_INSTALL_DIR]
291
292       DESKTOPDIR
293              desktop       directories      (DATAROOTDIR/desktop-directories)
294              [XDG_DIRECTORY_INSTALL_DIR]
295
296       MIMEDIR
297              mime     description      files      (DATAROOTDIR/mime/packages)
298              [XDG_MIME_INSTALL_DIR]
299
300       METAINFODIR
301              AppStream component metadata files (DATAROOTDIR/metainfo)
302
303       QTQCHDIR
304              documentation  bundles  in QCH format for Qt-extending libraries
305              (DATAROOTDIR/doc/qch  or  qmake-qt5’s   QT_INSTALL_DOCS)   Since
306              5.36.0.
307
308       QCHDIR documentation  bundles in QCH format (DATAROOTDIR/doc/qch) Since
309              5.36.0.
310
311       MANDIR man documentation (DATAROOTDIR/man) [MAN_INSTALL_DIR]
312
313       INFODIR
314              info documentation (DATAROOTDIR/info)
315
316       DBUSDIR
317              D-Bus (DATAROOTDIR/dbus-1)
318
319       DBUSINTERFACEDIR
320              D-Bus     interfaces      (DBUSDIR/interfaces)      [DBUS_INTER‐
321              FACES_INSTALL_DIR]
322
323       DBUSSERVICEDIR
324              D-Bus    session    services    (DBUSDIR/services)    [DBUS_SER‐
325              VICES_INSTALL_DIR]
326
327       DBUSSYSTEMSERVICEDIR
328              D-Bus  system  services   (DBUSDIR/system-services)   [DBUS_SYS‐
329              TEM_SERVICES_INSTALL_DIR]
330
331       SYSCONFDIR
332              read-only    single-machine    data    (etc,    or    /etc    if
333              CMAKE_INSTALL_PREFIX is /usr) [SYSCONF_INSTALL_DIR]
334
335       CONFDIR
336              application   configuration   files    (SYSCONFDIR/xdg)    [CON‐
337              FIG_INSTALL_DIR]
338
339       AUTOSTARTDIR
340              autostart files (CONFDIR/autostart) [AUTOSTART_INSTALL_DIR]
341
342       LOGGINGCATEGORIESDIR
343              Qt logging categories files directory (DATAROOTDIR/qlogging-cat‐
344              egories5) Since 5.59.0
345
346       JARDIR Java AAR/JAR files for Android. Since 5.62.0
347
348       If KDE_INSTALL_USE_QT_SYS_PATHS is set to TRUE  before  including  this
349       module,  the default values for some variables are instead queried from
350       Qt5’s qmake (where mentioned in the parentheses above).  If not set, it
351       will default to TRUE if Qt5’s qmake is found and it’s QT_INSTALL_PREFIX
352       is the same as CMAKE_INSTALL_PREFIX, otherwise default to FALSE.   This
353       variable should NOT be set from within CMakeLists.txt files, instead is
354       intended to be set manually when configuring a project which uses  KDE‐
355       InstallDirs (e.g. by packagers).
356
357       If  KDE_INSTALL_DIRS_NO_DEPRECATED is set to TRUE before including this
358       module, the deprecated variables (listed in the square brackets  above)
359       are not defined.
360
361       In   addition,   for   each   KDE_INSTALL_*   variable,  an  equivalent
362       CMAKE_INSTALL_* variable is defined. If  KDE_INSTALL_DIRS_NO_DEPRECATED
363       is set to TRUE, only those variables defined by the GNUInstallDirs mod‐
364       ule      (shipped      with      CMake)      are      defined.       If
365       KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES is set to TRUE, no variables with a
366       CMAKE_  prefix  will  be   defined   by   this   module   (other   than
367       CMAKE_INSTALL_DEFAULT_COMPONENT_NAME - see below).
368
369       The KDE_INSTALL_<dir> variables (or their CMAKE_INSTALL_<dir> or depre‐
370       cated counterparts)  may  be  passed  to  the  DESTINATION  options  of
371       install()  commands  for  the corresponding file type.  They are set in
372       the CMake cache, and so the defaults above can be overridden by users.
373
374       Note that the KDE_INSTALL_<dir>, CMAKE_INSTALL_<dir> or deprecated form
375       of  the variable can be changed using CMake command line variable defi‐
376       nitions; in either case, all forms of the variable  will  be  affected.
377       The  effect  of passing multiple forms of the same variable on the com‐
378       mand line (such as KDE_INSTALL_BINDIR and CMAKE_INSTALL_BINDIR is unde‐
379       fined.
380
381       The  variable  KDE_INSTALL_TARGETS_DEFAULT_ARGS  is also defined (along
382       with the deprecated form INSTALL_TARGETS_DEFAULT_ARGS).  This should be
383       used  when  libraries or user-executable applications are installed, in
384       the following manner:
385
386          install(TARGETS mylib myapp ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
387
388       It MUST NOT be used for installing plugins, system admin executables or
389       executables  only  intended  for  use  internally by other code.  Those
390       should    use     KDE_INSTALL_PLUGINDIR,     KDE_INSTALL_SBINDIR     or
391       KDE_INSTALL_LIBEXECDIR respectively.
392
393       Additionally,   CMAKE_INSTALL_DEFAULT_COMPONENT_NAME  will  be  set  to
394       ${PROJECT_NAME} to provide a sensible default for this CMake option.
395
396       Note that mixing absolute and relative paths, particularly for  BINDIR,
397       LIBDIR  and  INCLUDEDIR,  can cause issues with exported targets. Given
398       that the default values for these are relative  paths,  relative  paths
399       should   be   used   on   the  command  line  when  possible  (eg:  use
400       -DKDE_INSTALL_LIBDIR=lib64      instead      of      -DKDE_INSTALL_LIB‐
401       DIR=/usr/lib/lib64 to override the library directory).
402
403       Since pre-1.0.0.
404
405       NB:  The  variables  starting  KDE_INSTALL_  are available since 1.6.0,
406       unless otherwise noted with the variable.
407
408       The     KDE_INSTALL_PREFIX_SCRIPT     option     will     install     a
409       ${CMAKE_INSTALL_PREFIX}/prefix.sh  file  that allows to easily incorpo‐
410       rate the necessary environment variables for the prefix into a process.
411
412   KDETemplateGenerator
413       Packages KApptemplate/KDevelop compatible application templates
414
415       This module provides a  functionality  to  package  in  a  tarball  and
416       install  project  templates compatible with the format used by KApptem‐
417       plate and KDevelop. Useful for providing minimal examples for the usage
418       of the KDE Frameworks.
419
420       This module provides the following function:
421
422          kde_package_app_templates(TEMPLATES <template> [<template> [...]]
423                                    INSTALL_DIR <directory>)
424
425       INSTALL_DIR  is  the  directory to install the template package to.  In
426       most cases you will want to use the variable  KDE_INSTALL_KTEMPLATESDIR
427       from KDEInstallDirs.
428
429       TEMPLATES  lists  subdirectories  containing template files; each <tem‐
430       plate> directory will be packaged into a file named  <template>.tar.bz2
431       and installed to the appropriate location.
432
433       The template is a minimal source tree of an application as if it was an
434       application project by itself, with names (file names or  text  inside)
435       the text files replaced by the following placeholders when needed:
436
437       %{PROJECTDIRNAME}
438              name  of  generated  project  base  folder  ex: %{APPNAMELC} for
439              KAppTemplate
440
441       %{APPNAME}
442              project name as entered by user ex: MyKApp
443
444       %{APPNAMELC}
445              project name in lower case ex: mykapp
446
447       %{APPNAMEUC}
448              project name in upper case ex: MYKAPP
449
450       %{CPP_TEMPLATE}
451              license header for cpp file
452
453       %{H_TEMPLATE}
454              license header for h file
455
456       %{AUTHOR}
457              author name ex: George Ignacious
458
459       %{EMAIL}
460              author email ex: foo@bar.org
461
462       %{VERSION}
463              project version ex: 0.1
464
465       Deprecated:
466
467       %{dest}
468              path of generated project base  folder,  used  in  .kdevtemplate
469              with  the  ShowFilesAfterGeneration entry KDevelop >= 5.1.1 sup‐
470              ports relative paths with that entry,  making  this  placeholder
471              obsolete
472
473       Multiple templates can be passed at once.
474
475       Since 5.18
476

SEE ALSO

478       ecm(7), ecm-modules(7), ecm-find-modules(7)
479
481       KDE Developers
482
483
484
485
4865.64                             Nov 08, 2019               ECM-KDE-MODULES(7)
Impressum