Provided by: extra-cmake-modules_5.62.0-0ubuntu1_amd64 bug


       ecm-kde-modules - ECM KDE Modules Reference


       Extra  CMake  Modules  (ECM)  provides several modules that provide default settings (like
       installation directories, compiler flags  and  other  CMake  options)  aimed  at  software
       produced  by  the  KDE  modules; these are documented here. ECM also provides modules with
       more general functionality,  documented  in  ecm-modules(7),  and  ones  that  extend  the
       functionality of the find_package command, documented in ecm-find-modules(7).

       To  use these modules, you need to tell CMake to find the ECM package, and then add either

          find_package(ECM REQUIRED NO_MODULE)

       Using ${ECM_MODULE_PATH} will also make the other types of modules available.


       Changes various CMake settings to what the KDE community views as more sensible defaults.

       It is recommended to include this module with the NO_POLICY_SCOPE flag, otherwise you  may
       get spurious warnings with some versions of CMake.

       It is split into three parts, which can be independently disabled if desired.

   Runtime Paths
       The default runtime path (used on Unix systems to search for dynamically-linked libraries)
       is set  to  include  the  location  that  libraries  will  be  installed  to  (as  set  in
       LIB_INSTALL_DIR  or,  if  the  former is not set, KDE_INSTALL_LIBDIR), and also the linker
       search path.

       Note that LIB_INSTALL_DIR or alternatively  KDE_INSTALL_LIBDIR  needs  to  be  set  before
       including this module.  Typically, this is done by including the KDEInstallDirs module.

       This  section  can be disabled by setting KDE_SKIP_RPATH_SETTINGS to TRUE before including
       this module.

       Testing is enabled by default, and an option (BUILD_TESTING)  is  provided  for  users  to
       control this. See the CTest module documentation in the CMake manual for more details.

       This  section  can  be disabled by setting KDE_SKIP_TEST_SETTINGS to TRUE before including
       this module.

   Build Settings
       Various CMake build defaults are altered, such as searching source and  build  directories
       for includes first, enabling automoc by default.

       When  find_package(ECM 5.38) or higher is called, this also selects a layout for the build
       dir that helps running executables without installing: all executables are  built  into  a
       toplevel  “bin”  dir,  making it possible to find helper binaries, and to find uninstalled
       plugins (provided that you use kcoreaddons_add_plugin or set  LIBRARY_OUTPUT_DIRECTORY  as
       documented                                                                              on

       This section can be disabled by setting KDE_SKIP_BUILD_SETTINGS to TRUE  before  including
       this module.

       This  section  also  provides  an  “uninstall” target that can be individually disabled by
       setting KDE_SKIP_UNINSTALL_TARGET to TRUE before including this module.

       By default on OS X, X11 and XCB related detections are disabled. However if the need would
       arise  to  use these technologies, the detection can be enabled by setting APPLE_FORCE_X11
       to ON.

       A warning is printed for the developer to know that the detection is  disabled  on  OS  X.
       This message can be turned off by setting APPLE_SUPPRESS_X11_WARNING to ON.

       Since pre-1.0.0.

       ENABLE_CLAZY  option  is  added  (OFF  by default) when clang is being used.  Turning this
       option on will force clang to load the clazy plugins for  richer  warnings  on  Qt-related

       If    clang    is    not    being    used,    this    won’t    have    an   effect.    See

       Since 5.17.0

       · Uninstall target functionality since 1.7.0.

       · APPLE_FORCE_X11 option since 5.14.0 (detecting X11 was previously the default behavior)

       · APPLE_SUPPRESS_X11_WARNING option since 5.14.0

       · CMAKE_AUTORCC enabled by default when supported by cmake (>= 3.0) since 5.62.0

       A fetch-translations target will be set up that will download  translations  for  projects

       KDE_L10N_BRANCH  will  be  responsible  for  choosing  which  l10n  branch  to use for the

       KDE_L10N_AUTO_TRANSLATIONS (OFF by default) will indicate whether translations  should  be
       downloaded when building the project.

       Since 5.34.0

       KDE_L10N_SYNC_TRANSLATIONS   (OFF   by   default)   will   download  the  translations  at
       configuration time instead of build time.

       Since 5.50.0

       Set useful compile and link flags for C++ (and C) code.

       Enables many more warnings than the default, and sets stricter  modes  for  some  compiler
       features.  By default, exceptions are disabled; kde_target_enable_exceptions() can be used
       to re-enable them for a specific target.

       NB: it is recommended to include this module with the NO_POLICY_SCOPE flag, otherwise  you
       may get spurious warnings with some versions of CMake.

       This module provides the following functions:

          kde_source_files_enable_exceptions([file1 [file2 [...]]])

       Enables  exceptions for specific source files.  This should not be used on source files in
       a language other than C++.

          kde_target_enable_exceptions(target <INTERFACE|PUBLIC|PRIVATE>)

       Enables exceptions for a specific target.  This should not be used on a  target  that  has
       source files in a language other than C++.


       Enables  exceptions  for  C++  source  files  compiled  for the CMakeLists.txt file in the
       current directory and all subdirectories.

       Since pre-1.0.0.

       Set stricter compile and link flags for KDE Frameworks modules.

       The KDECompilerSettings module is included and, in addition, various defines  that  affect
       the Qt libraries are set to enforce certain conventions.

       For  example, constructions like QString(“foo”) are prohibited, instead forcing the use of
       QLatin1String or QStringLiteral, and some Qt-defined keywords like signals and slots  will
       not be defined.

       NB:  it is recommended to include this module with the NO_POLICY_SCOPE flag, otherwise you
       may get spurious warnings with some versions of CMake.

       Since pre-1.0.0.

       Define KDE standard installation directories.

       Note that none of the variables defined by this module provide any information  about  the
       location of already-installed KDE software.

       Inclusion of this module defines the following variables:

              destination for files of a given type

              corresponding absolute path

       where  <dir> is one of (default values in parentheses and alternative, deprecated variable
       name in square brackets):

              application bundles (/Applications/KDE) [BUNDLE_INSTALL_DIR]

              executables and libraries (<empty>) [EXEC_INSTALL_PREFIX]

       BINDIR user executables (EXECROOTDIR/bin) [BIN_INSTALL_DIR]

              system admin executables (EXECROOTDIR/sbin) [SBIN_INSTALL_DIR]

       LIBDIR object     code     libraries      (EXECROOTDIR/lib,      EXECROOTDIR/lib64      or
              EXECROOTDIR/lib/<multiarch-tuple on Debian) [LIB_INSTALL_DIR]

              executables  for  internal  use  by  programs  and  libraries  (BINDIR  on Windows,
              LIBDIR/libexec otherwise) [LIBEXEC_INSTALL_DIR]

              CMake packages, including config files (LIBDIR/cmake) [CMAKECONFIG_INSTALL_PREFIX]

              Qt     plugins     (LIBDIR/plugins     or      qmake-qt5’s      QT_INSTALL_PLUGINS)

              Plugins (QTPLUGINDIR) [PLUGIN_INSTALL_DIR]

              QtQuick1    imports   (QTPLUGINDIR/imports   or   qmake-qt5’s   QT_INSTALL_IMPORTS)

       QMLDIR QtQuick2 imports (LIBDIR/qml or qmake-qt5’s QT_INSTALL_QML) [QML_INSTALL_DIR]

              C and C++ header files (include) [INCLUDE_INSTALL_DIR]

              modifiable single-machine data (var)

              modifiable architecture-independent data (com)

              read-only architecture-independent data root (share) [SHARE_INSTALL_PREFIX]

              read-only architecture-independent data (DATAROOTDIR) [DATA_INSTALL_DIR]

              documentation   bundles   generated    using    kdoctools    (DATAROOTDIR/doc/HTML)

              kconfig description files (DATAROOTDIR/config.kcfg) [KCFG_INSTALL_DIR]

              kconf_update scripts (DATAROOTDIR/kconf_update) [KCONF_UPDATE_INSTALL_DIR]

              services for KDE Frameworks 5 (DATAROOTDIR/kservices5) [SERVICES_INSTALL_DIR]

              service     types     for    KDE    Frameworks    5    (DATAROOTDIR/kservicetypes5)

              knotify description files (DATAROOTDIR/kxmlgui5) [KXMLGUI_INSTALL_DIR]

              Kapptemplate and Kdevelop templates (kdevappwizard/templates)

              knotify description files (DATAROOTDIR/knotifications5) [KNOTIFYRC_INSTALL_DIR]

              icons (DATAROOTDIR/icons) [ICON_INSTALL_DIR]

              knotify description files (DATAROOTDIR/locale) [LOCALE_INSTALL_DIR]

              sound files (DATAROOTDIR/sounds) [SOUND_INSTALL_DIR]

              templates (DATAROOTDIR/templates) [TEMPLATES_INSTALL_DIR]

              desktop wallpaper images (DATAROOTDIR/wallpapers) [WALLPAPER_INSTALL_DIR]

       APPDIR application    desktop    files     (DATAROOTDIR/applications)     Since     1.1.0.

              desktop directories (DATAROOTDIR/desktop-directories) [XDG_DIRECTORY_INSTALL_DIR]

              mime description files (DATAROOTDIR/mime/packages) [XDG_MIME_INSTALL_DIR]

              AppStream component metadata files (DATAROOTDIR/metainfo)

              documentation bundles in QCH format for Qt-extending libraries (DATAROOTDIR/doc/qch
              or qmake-qt5’s QT_INSTALL_DOCS) Since 5.36.0.

       QCHDIR documentation bundles in QCH format (DATAROOTDIR/doc/qch) Since 5.36.0.

       MANDIR man documentation (DATAROOTDIR/man) [MAN_INSTALL_DIR]

              info documentation (DATAROOTDIR/info)

              D-Bus (DATAROOTDIR/dbus-1)

              D-Bus interfaces (DBUSDIR/interfaces) [DBUS_INTERFACES_INSTALL_DIR]

              D-Bus session services (DBUSDIR/services) [DBUS_SERVICES_INSTALL_DIR]

              D-Bus system services (DBUSDIR/system-services) [DBUS_SYSTEM_SERVICES_INSTALL_DIR]

              read-only single-machine data  (etc,  or  /etc  if  CMAKE_INSTALL_PREFIX  is  /usr)

              application configuration files (SYSCONFDIR/xdg) [CONFIG_INSTALL_DIR]

              autostart files (CONFDIR/autostart) [AUTOSTART_INSTALL_DIR]

              Qt  logging  categories  files  directory  (DATAROOTDIR/qlogging-categories5) Since

       JARDIR Java AAR/JAR files for Android. Since 5.62.0

       If KDE_INSTALL_USE_QT_SYS_PATHS is set to TRUE before including this module,  the  default
       values  for  some  variables  are instead queried from Qt5’s qmake (where mentioned in the
       parentheses above).  If not set, it will default to TRUE if Qt5’s qmake is found and  it’s
       QT_INSTALL_PREFIX  is  the same as CMAKE_INSTALL_PREFIX, otherwise default to FALSE.  This
       variable should NOT be set from within CMakeLists.txt files, instead is intended to be set
       manually when configuring a project which uses KDEInstallDirs (e.g. by packagers).

       If  KDE_INSTALL_DIRS_NO_DEPRECATED  is  set  to  TRUE  before  including  this module, the
       deprecated variables (listed in the square brackets above) are not defined.

       In addition, for each KDE_INSTALL_* variable, an equivalent  CMAKE_INSTALL_*  variable  is
       defined. If KDE_INSTALL_DIRS_NO_DEPRECATED is set to TRUE, only those variables defined by
       the    GNUInstallDirs    module    (shipped    with    CMake)     are     defined.      If
       KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES is set to TRUE, no variables with a CMAKE_ prefix will
       be defined by this module (other than CMAKE_INSTALL_DEFAULT_COMPONENT_NAME - see below).

       The KDE_INSTALL_<dir> variables (or their CMAKE_INSTALL_<dir> or deprecated  counterparts)
       may  be passed to the DESTINATION options of install() commands for the corresponding file
       type.  They are set in the CMake cache, and so the defaults above  can  be  overridden  by

       Note  that  the  KDE_INSTALL_<dir>, CMAKE_INSTALL_<dir> or deprecated form of the variable
       can be changed using CMake command line variable definitions; in either case, all forms of
       the  variable  will be affected. The effect of passing multiple forms of the same variable
       on the command line (such as KDE_INSTALL_BINDIR and CMAKE_INSTALL_BINDIR is undefined.

       The variable KDE_INSTALL_TARGETS_DEFAULT_ARGS is also defined (along with  the  deprecated
       form INSTALL_TARGETS_DEFAULT_ARGS).  This should be used when libraries or user-executable
       applications are installed, in the following manner:

          install(TARGETS mylib myapp ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})

       It MUST NOT be used for installing plugins, system admin executables or  executables  only
       intended  for  use  internally  by  other  code.   Those should use KDE_INSTALL_PLUGINDIR,

       Additionally, CMAKE_INSTALL_DEFAULT_COMPONENT_NAME  will  be  set  to  ${PROJECT_NAME}  to
       provide a sensible default for this CMake option.

       Note  that  mixing  absolute  and  relative  paths,  particularly  for  BINDIR, LIBDIR and
       INCLUDEDIR, can cause issues with exported targets. Given  that  the  default  values  for
       these  are relative paths, relative paths should be used on the command line when possible
       (eg: use  -DKDE_INSTALL_LIBDIR=lib64  instead  of  -DKDE_INSTALL_LIBDIR=/usr/lib/lib64  to
       override the library directory).

       Since pre-1.0.0.

       NB:  The variables starting KDE_INSTALL_ are available since 1.6.0, unless otherwise noted
       with the variable.

       The KDE_INSTALL_PREFIX_SCRIPT option will install a ${CMAKE_INSTALL_PREFIX}/ file
       that  allows to easily incorporate the necessary environment variables for the prefix into
       a process.

       Packages KApptemplate/KDevelop compatible application templates

       This module provides a functionality to package in a tarball and install project templates
       compatible with the format used by KApptemplate and KDevelop. Useful for providing minimal
       examples for the usage of the KDE Frameworks.

       This module provides the following function:

          kde_package_app_templates(TEMPLATES <template> [<template> [...]]
                                    INSTALL_DIR <directory>)

       INSTALL_DIR is the directory to install the template package to.  In most cases  you  will
       want to use the variable KDE_INSTALL_KTEMPLATESDIR from KDEInstallDirs.

       TEMPLATES  lists  subdirectories containing template files; each <template> directory will
       be packaged into  a  file  named  <template>.tar.bz2  and  installed  to  the  appropriate

       The  template  is  a  minimal  source  tree  of an application as if it was an application
       project by itself, with names (file names or text inside) the text files replaced  by  the
       following placeholders when needed:

              name of generated project base folder ex: %{APPNAMELC} for KAppTemplate

              project name as entered by user ex: MyKApp

              project name in lower case ex: mykapp

              project name in upper case ex: MYKAPP

              license header for cpp file

              license header for h file

              author name ex: George Ignacious

              author email ex:

              project version ex: 0.1


              path   of   generated   project   base  folder,  used  in  .kdevtemplate  with  the
              ShowFilesAfterGeneration entry KDevelop >= 5.1.1 supports relative paths with  that
              entry, making this placeholder obsolete

       Multiple templates can be passed at once.

       Since 5.18


       ecm(7), ecm-modules(7), ecm-find-modules(7)


       KDE Developers