ECMGeneratePriFile¶
Generate a .pri file for the benefit of qmake-based projects.
As well as the function below, this module creates the cache variable
ECM_MKSPECS_INSTALL_DIR and sets the default value to mkspecs/modules.
This assumes Qt and the current project are both installed to the same
non-system prefix. Packagers who use -DCMAKE_INSTALL_PREFIX=/usr will
certainly want to set ECM_MKSPECS_INSTALL_DIR to something like
share/qt5/mkspecs/modules.
The main thing is that this should be the modules subdirectory of either
the default qmake mkspecs directory or of a directory that will be in the
$QMAKEPATH environment variable when qmake is run.
ecm_generate_pri_file(BASE_NAME <baseName>
LIB_NAME <libName>
[VERSION <version>] # since 5.83
[DEPS "<dep> [<dep> [...]]"]
[FILENAME_VAR <filename_variable>]
[INCLUDE_INSTALL_DIRS <dir> [<dir> [...]]] # since 5.92
[INCLUDE_INSTALL_DIR <dir>] # deprecated since 5.92
[LIB_INSTALL_DIR <dir>])
If your CMake project produces a Qt-based library, you may expect there to be
applications that wish to use it that use a qmake-based build system, rather
than a CMake-based one. Creating a .pri file will make use of your
library convenient for them, in much the same way that CMake config files make
things convenient for CMake-based applications. ecm_generate_pri_file()
generates just such a file.
VERSION specifies the version of the library the .pri file describes. If
not set, the value is taken from the context variable PROJECT_VERSION.
This variable is usually set by the project(... VERSION ...) command or,
if CMake policy CMP0048 is not NEW, by ECMSetupVersion.
For backward-compatibility with older ECM versions the
PROJECT_VERSION_STRING variable as set by ECMSetupVersion
will be preferred over PROJECT_VERSION if set, unless the minimum
required version of ECM is 5.83 and newer. Since 5.83.
BASE_NAME specifies the name qmake project (.pro) files should use to refer to
the library (eg: KArchive). LIB_NAME is the name of the actual library to
link to (ie: the first argument to add_library()). DEPS is a space-separated
list of the base names of other libraries (for Qt libraries, use the same
names you use with the QT variable in a qmake project file, such as “core”
for QtCore). FILENAME_VAR specifies the name of a variable to store the path
to the generated file in.
INCLUDE_INSTALL_DIRS are the paths (relative to CMAKE_INSTALL_PREFIX) that
include files will be installed to. It defaults to
${INCLUDE_INSTALL_DIR}/<baseName> if the INCLUDE_INSTALL_DIR variable
is set. If that variable is not set, the CMAKE_INSTALL_INCLUDEDIR variable
is used instead, and if neither are set include is used. LIB_INSTALL_DIR
operates similarly for the installation location for libraries; it defaults to
${LIB_INSTALL_DIR}, ${CMAKE_INSTALL_LIBDIR} or lib, in that order.
INCLUDE_INSTALL_DIR is the old variant of INCLUDE_INSTALL_DIRS, taking only one
directory.
Example usage:
ecm_generate_pri_file(
BASE_NAME KArchive
LIB_NAME KF5KArchive
DEPS "core"
FILENAME_VAR pri_filename
VERSION 4.2.0
)
install(FILES ${pri_filename} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})
A qmake-based project that wished to use this would then do:
QT += KArchive
in their .pro file.
Since pre-1.0.0.