Provided by: extra-cmake-modules_5.18.0-0ubuntu1_amd64 

NAME
ecm-find-modules - ECM Find Modules Reference
INTRODUCTION
Find modules are used by the CMake find_package command to search for packages that do not provide their
own CMake package config files. CMake provides an extensive set of find modules, and Extra CMake Modules
(ECM) adds to that.
To use ECM's find modules, you need to tell CMake to find the ECM package, and then add either
${ECM_MODULE_PATH} or ${ECM_FIND_MODULE_DIR} to the CMAKE_MODULE_PATH variable:
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_FIND_MODULE_DIR})
Using ${ECM_MODULE_PATH} will also make the modules intended for direct use by CMake scripts available
(see ecm-modules(7) and ecm-kde-modules(7)).
You can also make local copies of find modules using the ecm_use_find_modules function from
ECMUseFindModules, which is automatically included when ECM is found:
find_package(ECM REQUIRED NO_MODULE)
ecm_use_find_modules(
DIR "${CMAKE_BINARY_DIR}/cmake"
MODULES FindEGL.cmake
)
set(CMAKE_MODULE_PATH "${CMAKE_BINARY_DIR}/cmake")
This allows selective use of ECM's find modules, and the NO_OVERRIDE argument can be used to ensure that
if CMake ships its own version of that find module, it will be used instead.
ALL FIND MODULES
FindEGL
Try to find EGL.
This will define the following variables:
EGL_FOUND
True if (the requested version of) EGL is available
EGL_VERSION
The version of EGL; note that this is the API version defined in the headers, rather than the
version of the implementation (eg: Mesa)
EGL_LIBRARIES
This can be passed to target_link_libraries() instead of the EGL::EGL target
EGL_INCLUDE_DIRS
This should be passed to target_include_directories() if the target is not used for linking
EGL_DEFINITIONS
This should be passed to target_compile_options() if the target is not used for linking
If EGL_FOUND is TRUE, it will also define the following imported target:
EGL::EGL
The EGL library
In general we recommend using the imported target, as it is easier to use. Bear in mind, however, that
if the target is in the link interface of an exported library, it must be made available by the package
config file.
Since pre-1.0.0.
FindKF5
Find KDE Frameworks 5 with a single find_package() call.
This will use the package config files provided by the individual frameworks. For example, if you wish
to find KArchive, which presents itself to CMake as KF5Archive (ie: you would do find_package(KF5Archive)
to find it directly), you can do
find_package(KF5 COMPONENTS Archive)
If all the required components (those given in the COMPONENTS argument, but not those given in the
OPTIONAL_COMPONENTS argument) are found, KF5_FOUND will be set to true. Otherwise, it will be set to
false.
Since pre-1.0.0.
FindLibGit2
Try to find libgit2 on a Unix system.
This will define the following variables:
LIBGIT2_FOUND
True if (the requested version of) libgit2 is available
LIBGIT2_VERSION
The version of libgit2
LIBGIT2_LIBRARIES
This can be passed to target_link_libraries() instead of the LibGit2::LibGit2 target
LIBGIT2_INCLUDE_DIRS
This should be passed to target_include_directories() if the target is not used for linking
LIBGIT2_DEFINITIONS
This should be passed to target_compile_options() if the target is not used for linking
If LIBGIT2_FOUND is TRUE, it will also define the following imported target:
LibGit2::LibGit2
The libgit2 library
In general we recommend using the imported target, as it is easier to use. Bear in mind, however, that
if the target is in the link interface of an exported library, it must be made available by the package
config file.
Since 1.3.0.
FindOpenEXR
Try to find the OpenEXR libraries.
This will define the following variables:
OpenEXR_FOUND
True if OpenEXR is available
OpenEXR_LIBRARIES
Link to these to use OpenEXR
OpenEXR_INCLUDE_DIRS
Include directory for OpenEXR
OpenEXR_DEFINITIONS
Compiler flags required to link against OpenEXR
and the following imported targets:
OpenEXR::IlmImf
The OpenEXR core library
In general we recommend using the imported target, as it is easier to use. Bear in mind, however, that
if the target is in the link interface of an exported library, it must be made available by the package
config file.
Since pre-1.0.0.
FindPng2Ico
Try to find png2ico.
If the png2ico executable is not in your PATH, you can provide an alternative name or full path location
with the Png2Ico_EXECUTABLE variable.
This will define the following variables:
Png2Ico_FOUND
True if png2ico is available.
Png2Ico_EXECUTABLE
The png2ico executable.
If Png2Ico_FOUND is TRUE, it will also define the following imported target:
Png2Ico::Png2Ico
The png2ico executable.
and the following variables:
Png2Ico_HAS_COLORS_ARGUMENT
Whether png2ico accepts a --colors argument. Matthias Benkmann's tool does, while the version of
png2ico from the "KDE On Windows" (kdewin) project does not.
Png2Ico_HAS_RCFILE_ARGUMENT
Whether png2ico accepts an --rcfile argument. The version of png2ico from the "KDE On Windows"
(kdewin) project does, while Matthias Benkmann's tool does not.
Since 1.7.0.
FindQtWaylandScanner
Try to find qtwaylandscanner.
If the qtwaylandscanner executable is not in your PATH, you can provide an alternative name or full path
location with the QtWaylandScanner_EXECUTABLE variable.
This will define the following variables:
QtWaylandScanner_FOUND
True if qtwaylandscanner is available
QtWaylandScanner_EXECUTABLE
The qtwaylandscanner executable.
If QtWaylandScanner_FOUND is TRUE, it will also define the following imported target:
Wayland::QtScanner
The qtwaylandscanner executable.
This module provides the following functions to generate C++ protocol implementations:
• ecm_add_qtwayland_client_protocol
• ecm_add_qtwayland_server_protocol
ecm_add_qtwayland_client_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>
[PREFIX <prefix>])
Generate C++ wrapper to Wayland client protocol files from <xmlfile> XML definition for the <basename>
interface and append those files to <source_files_var>. Pass the <prefix> argument if the interface
names don't start with qt_ or wl_.
WaylandScanner is required and will be searched for.
ecm_add_qtwayland_server_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>
[PREFIX <prefix>])
Generate C++ wrapper to Wayland server protocol files from <xmlfile> XML definition for the <basename>
interface and append those files to <source_files_var>. Pass the <prefix> argument if the interface
names don't start with qt_ or wl_.
WaylandScanner is required and will be searched for.
Since 1.4.0.
FindSharedMimeInfo
Try to find the shared-mime-info package.
This will define the following variables:
SharedMimeInfo_FOUND
True if system has the shared-mime-info package
UPDATE_MIME_DATABASE_EXECUTABLE
The update-mime-database executable
and the following imported targets:
SharedMimeInfo::UpdateMimeDatabase
The update-mime-database executable
The follow macro is available:
update_xdg_mimetypes(<path>)
Updates the XDG mime database at install time (unless the $DESTDIR environment variable is set, in which
case it is up to package managers to perform this task).
Since pre-1.0.0.
FindWayland
Try to find Wayland.
This is a component-based find module, which makes use of the COMPONENTS and OPTIONAL_COMPONENTS
arguments to find_module. The following components are available:
Client Server Cursor Egl
If no components are specified, this module will act as though all components were passed to
OPTIONAL_COMPONENTS.
This module will define the following variables, independently of the components searched for or found:
Wayland_FOUND
True if (the requestion version of) Wayland is available
Wayland_VERSION
Found Wayland version
Wayland_TARGETS
A list of all targets imported by this module (note that there may be more than the components
that were requested)
Wayland_LIBRARIES
This can be passed to target_link_libraries() instead of the imported targets
Wayland_INCLUDE_DIRS
This should be passed to target_include_directories() if the targets are not used for linking
Wayland_DEFINITIONS
This should be passed to target_compile_options() if the targets are not used for linking
For each searched-for components, Wayland_<component>_FOUND will be set to true if the corresponding
Wayland library was found, and false otherwise. If Wayland_<component>_FOUND is true, the imported
target Wayland::<component> will be defined. This module will also attempt to determine
Wayland_*_VERSION variables for each imported target, although Wayland_VERSION should normally be
sufficient.
In general we recommend using the imported targets, as they are easier to use and provide more control.
Bear in mind, however, that if any target is in the link interface of an exported library, it must be
made available by the package config file.
Since pre-1.0.0.
FindWaylandScanner
Try to find wayland-scanner.
If the wayland-scanner executable is not in your PATH, you can provide an alternative name or full path
location with the WaylandScanner_EXECUTABLE variable.
This will define the following variables:
WaylandScanner_FOUND
True if wayland-scanner is available.
WaylandScanner_EXECUTABLE
The wayland-scanner executable.
If WaylandScanner_FOUND is TRUE, it will also define the following imported target:
Wayland::Scanner
The wayland-scanner executable.
This module provides the following functions to generate C protocol implementations:
• ecm_add_wayland_client_protocol
• ecm_add_wayland_server_protocol
ecm_add_wayland_client_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>)
Generate Wayland client protocol files from <xmlfile> XML definition for the <basename> interface and
append those files to <source_files_var>.
ecm_add_wayland_server_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>)
Generate Wayland server protocol files from <xmlfile> XML definition for the <basename> interface and
append those files to <source_files_var>.
Since 1.4.0.
FindX11_XCB
Try to find the X11 XCB compatibility library.
This will define the following variables:
X11_XCB_FOUND
True if (the requested version of) libX11-xcb is available
X11_XCB_VERSION
The version of libX11-xcb (this is not guaranteed to be set even when X11_XCB_FOUND is true)
X11_XCB_LIBRARIES
This can be passed to target_link_libraries() instead of the EGL::EGL target
X11_XCB_INCLUDE_DIR
This should be passed to target_include_directories() if the target is not used for linking
X11_XCB_DEFINITIONS
This should be passed to target_compile_options() if the target is not used for linking
If X11_XCB_FOUND is TRUE, it will also define the following imported target:
X11::XCB
The X11 XCB compatibility library
In general we recommend using the imported target, as it is easier to use. Bear in mind, however, that
if the target is in the link interface of an exported library, it must be made available by the package
config file.
Since pre-1.0.0.
FindXCB
Try to find XCB.
This is a component-based find module, which makes use of the COMPONENTS and OPTIONAL_COMPONENTS
arguments to find_module. The following components are available:
XCB
ATOM AUX COMPOSITE CURSOR DAMAGE
DPMS DRI2 DRI3 EVENT EWMH
GLX ICCCM IMAGE KEYSYMS PRESENT
RANDR RECORD RENDER RENDERUTIL RES
SCREENSAVER SHAPE SHM SYNC UTIL
XEVIE XF86DRI XFIXES XINERAMA XINPUT
XKB XPRINT XTEST XV XVMC
If no components are specified, this module will act as though all components except XINPUT (which is
considered unstable) were passed to OPTIONAL_COMPONENTS.
This module will define the following variables, independently of the components searched for or found:
XCB_FOUND
True if (the requestion version of) xcb is available
XCB_VERSION
Found xcb version
XCB_TARGETS
A list of all targets imported by this module (note that there may be more than the components
that were requested)
XCB_LIBRARIES
This can be passed to target_link_libraries() instead of the imported targets
XCB_INCLUDE_DIRS
This should be passed to target_include_directories() if the targets are not used for linking
XCB_DEFINITIONS
This should be passed to target_compile_options() if the targets are not used for linking
For each searched-for components, XCB_<component>_FOUND will be set to true if the corresponding xcb
library was found, and false otherwise. If XCB_<component>_FOUND is true, the imported target
XCB::<component> will be defined. This module will also attempt to determine XCB_*_VERSION variables for
each imported target, although XCB_VERSION should normally be sufficient.
In general we recommend using the imported targets, as they are easier to use and provide more control.
Bear in mind, however, that if any target is in the link interface of an exported library, it must be
made available by the package config file.
Since pre-1.0.0.
SEE ALSO
ecm(7), ecm-modules(7), ecm-kde-modules(7)
COPYRIGHT
KDE Developers
5.18 March 07, 2016 ECM-FIND-MODULES(7)