frameworks branch now requires CMake 2.8.6 RC 2

Stephen Kelly steveire at gmail.com
Wed Sep 21 10:03:16 UTC 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-buildsystem mailing list