frameworks branch now requires CMake 2.8.6 RC 2
Stephen Kelly
steveire at gmail.com
Wed Sep 21 11:03:16 BST 2011
Alexander Neundorf wrote:
> On Sunday, September 04, 2011 09:58:52 PM Stephen Kelly wrote:
> ...
>> With these features it is possible to build individual kde frameworks
>> standalone. I can now cmakekde in itemmodels or in tier1 (because the
>> tier1 libraries do not have dependencies on each other).
>>
>> Please review the ECMQtFramework.cmake file which makes this possible.
>
> Documentation at the top is missing, please add some.
>
> Alex
#- Automatic configuration of a project as a Qt framework.
#
# This module can be used to simplify creation of quality frameworks written
in Qt.
# It sets compiler flags, Qt definitions and CMake options which make sense
to use when creating
# A Qt based framework.
#
# project(myspeciallib)
# ecm_framework_version(5 0 0)
# include(ECMQtFramework)
#
# This will set myspeciallib to be a Qt framework, that is, the name of the
project is
# relevant and used (see below). The version of the project is 5.0.0. It is
important to
# include ECMQtFramework before finding Qt itself.
#
# Specifically being an ECM Qt framework means:
#
# 1) The compiler is configured with export flags. With GCC and clang, this
means enabling
# the -hidden-visibility flags. See the GenerateExportHeader module for more
on generating
# and installing export headers.
#
# 2) A Coverage build type is created and made available in the cmake-gui.
This means that
# running
#
# cmake $SRCDIR -DCMAKE_BUILD_TYPE=Coverage
#
# Will enable the use of the -fprofile-arcs -ftest-coverage flags on GCC.
The Coverage type is also
# available through the cmake-gui program.
#
# 3) Sensible compiler warnings are enabled. These are the flags determined
to be useful through
# a history in KDE buildsystem.
#
# 4) Qt build flags are defined.
# These include
# * Disabling automatic ascii casts provided by Qt (so for example
QLatin1String must be used). This is
# relevant to prevent encoding errors, and makes conversion to QString
potentially faster or avoidable.
#
# * Disabling Qt keywords such as signals and slots so that Q_SIGNALS and
Q_SLOTS must be used instead. This
# is relevant if using the framework together with boost signals.
#
# * Enabling the use of fast concatenation. This makes it possible to create
strings from multiple pieces
# with one memory allocation.
#
# 5) CMake will use imported targets for Qt. This is relevant on windows
because it is easier
# to build both debug and release versions of the framework.
#
# 6) CMake will include the current source and binary directories
automatically while preprocessing. The
# source and binary directories of the current project will be used before
others.
#
# 7) CMake will use built in automatic moc support.
#
# 8) A LIB_SUFFIX variable is made available. This is used to install
libraries optionally
# to for example /lib64 instead of /lib
#
# 9) The ECM_TARGET_DEFAULT_ARGS variable is made available for use by
targets in the framework. This is
# used in install(TARGETS) calls to install components of targets to the
configured binary and library directories,
# to create an export target for the framework, and to put them in a
component for use with CPack. The name of the
# component is the same as the argument to the project call (myspeciallib
above).
#
# 10) The use of RPATH is enabled. (TODO RUNPATH?)
#
# 11) A CMake config file and config version are created and installed. The
config file uses the project name so that:
#
# * The file is called myspeciallibConfig.cmake. A companion file
myspeciallibVersionConfig is also created.
#
# * The variables myspeciallib_VERSION_MAJOR, myspeciallib_VERSION_MINOR,
myspeciallib_VERSION_PATCH are defined
# as specified by the use of ecm_framework_version.
#
# * Standard variables are set for linking to the library and including the
directories of its headers.
#
# 12) The targets file is installed. This means that myspeciallib can be
used as an imported target.
#
# 13) A USE file is installed. This means that consumers of myspeciallib can
#
# include(${myspeciallib_USE_FILE})
#
# which will include the Qt USE file, and add the header directories for
myspeciallib to include_directories()
#
# 14) A version file is created called myspeciallib_version.h, which
contains version information usable by
# the preprocessor. The version file must be installed by the user.
#
# 15) The FeatureSummary module is included.
More information about the kde-core-devel
mailing list