# ecm-modules(7)

## Introduction

Extra CMake Modules (ECM) provides various modules that provide useful functions for CMake scripts. ECM actually provides three types of modules that can be used from CMake scripts: those that extend the functionality of the `find_package` command are documented in `ecm-find-modules(7)`; those that provide standard settings for software produced by the KDE community are documented in `ecm-kde-modules(7)`. The rest provide macros and functions for general use by CMake scripts and are documented here.

To use these modules, you need to tell CMake to find the ECM package, and then add either `${ECM_MODULE_PATH}` or `${ECM_MODULE_DIR}` to the `CMAKE_MODULE_PATH` variable:

    find_package(ECM REQUIRED NO_MODULE)
    set(CMAKE_MODULE_PATH ${ECM_MODULE_DIR})

Using `${ECM_MODULE_PATH}` will also make the find modules and KDE modules available.

Note that there are also toolchain modules, documented in `ecm-toolchains(7)`, but these are used by users building the software rather than developers writing CMake scripts.

## All Modules

- CheckAtomic
- ECMAddAndroidApk
- ECMAddAppIcon
- ECMAddQch
- ECMAddQtDesignerPlugin
- ECMAddTests
- ECMCheckOutboundLicense
- ECMConfiguredInstall
- ECMCoverageOption
- ECMCreateQmFromPoFiles
- ECMDeprecationSettings
- ECMEnableSanitizers
- ECMFeatureSummary
- ECMFindModuleHelpers
- ECMFindQmlModule
- ECMGenerateDBusServiceFile
- ECMGenerateExportHeader
- ECMGenerateHeaders
- ECMGeneratePkgConfigFile
- ECMGeneratePriFile
- ECMGeneratePythonBindings
- ECMGenerateQDoc
- ECMGenerateQmlTypes
- ECMInstallIcons
- ECMMarkAsTest
- ECMMarkNonGuiExecutable
- ECMOptionalAddSubdirectory
- ECMPackageConfigHelpers
- ECMPoQmTools
- ECMQmlModule
- ECMQtDeclareLoggingCategory
- ECMQueryQt
- ECMSetupQtPluginMacroNames
- ECMSetupVersion
- ECMSourceVersionControl
- ECMUninstallTarget
- ECMUseFindModules
- ECMWinResolveSymlinks
- QtVersionOption