(→Major FindQt4.cmake improvements) |
|||
| (3 intermediate revisions by one user not shown) | |||
| Line 23: | Line 23: | ||
The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle has been kept and we try to follow it. | The [[Policies/CMake_Commit_Policy|commit policy]] introduced during the 4.3 development cycle has been kept and we try to follow it. | ||
| + | |||
| + | ===Major FindQt4.cmake improvements=== | ||
| + | |||
| + | A lot of work went into FindQt4.cmake. This includes: | ||
| + | * Synced with FindQt4.cmake from CMake 2.8.0. Our version and the one shipped with CMake 2.8.0 are now almost identical again, there are only a bunch of minor differences left. | ||
| + | * Support for Qt 4.6 added. I.e. support for the QtMultimedia and QtScriptTools libraries has been added. | ||
| + | * Support for ActiveQt (Windows only) has been added. | ||
| + | * New variables QT_COLLECTIONGENERATOR_EXECUTABLE, QT_DESIGNER_EXECUTABLE and QT_LINGUIST_EXECUTABLE. | ||
| + | * New macros QT4_CREATE_TRANSLATION() and QT4_ADD_TRANSLATION(). | ||
| + | * Improved support for Mac OSX, including Qt installed as frameworks | ||
| + | * Improved support for Windows, including handling release/debug libraries (see "Imported targets") | ||
| + | * Support for static Qt libraries and the UseQt.cmake file fixed. | ||
| + | * FindQt4.cmake has been split into FindQt4.cmake, Qt4Macros.cmake and Qt4ConfigDependentSettings.cmake. | ||
| + | * Improved support for flexible Qt install locations under Windows (see "Imported targets") | ||
| + | |||
| + | '''Imported Targets''' | ||
| + | |||
| + | FindQt4.cmake now creates an imported library target for each of the Qt libraries which has been found. These imported targets can then be used like "normal" targets in CMakeLists.txt, e.g. in TARGET_LINK_LIBRARIES(). | ||
| + | These imported targets are named "Qt4::<library name>", e.g. Qt4::QtCore or Qt4::QtGui. | ||
| + | This brings several advantages: | ||
| + | * one imported library can have different locations for different buildtypes, i.e. for debug builds its IMPORTED_LOCATION_DEBUG property can point to the debug version of the library, while its IMPORTED_LOCATION_RELEASE property can point to the release version of the library | ||
| + | * If some library kfoo links against such an imported Qt4 library, and kfoo is exported, the export file will list Qt4::QtCore etc. as dependency, and not the absolute file path to the QtCore library. This has the big advantage, that the location of the QtCore library (and the other Qt libraries) is resolved at cmake-time of the software which uses kfoo, and not fixed to the location of QtCore where it was when kfoo was built. This is especially helpful for installing and building against KDE on Windows. | ||
| + | |||
| + | If the variable QT_USE_IMPORTED_TARGETS is set to TRUE before FindQt4.cmake is executed, also the Qt library variables like QT_QTCORE_LIBRARY are set to point to these imported targets instead to the file path. This is the case automatically when doing a find_package(KDE4). | ||
===New libraries: knewstuff3, kunitconversion and kdewebkit=== | ===New libraries: knewstuff3, kunitconversion and kdewebkit=== | ||
Contents |
As with KDE 4.2 and 4.3, also for KDE 4.4 still CMake >= 2.6.2 is required, so no changes in this regard.
This change is under certain circumstances not source compatible. For each of the Qt libraries now an imported library target is created, e.g. for the QtCore library an imported target named "Qt4::QtCore" is created, and similar for the other libraries. If the variable QT_USE_IMPORTED_TARGETS is set to TRUE before searching for Qt4, then the Qt library variables like QT_QTCORE_LIBRARY are set to point at these imported targets. When doing a FIND_PACKAGE(KDE4), this variable is set automatically to TRUE. This change is source incompatible in the following circumstances:
In all other uses there should be no incompatibilities. E.g. usage in TARGET_LINK_LIBRARIES() works the same, and you can also test the variables for validity: if (QT_QTCORE_LIBRARY) ...
The commit policy introduced during the 4.3 development cycle has been kept and we try to follow it.
A lot of work went into FindQt4.cmake. This includes:
Imported Targets
FindQt4.cmake now creates an imported library target for each of the Qt libraries which has been found. These imported targets can then be used like "normal" targets in CMakeLists.txt, e.g. in TARGET_LINK_LIBRARIES(). These imported targets are named "Qt4::<library name>", e.g. Qt4::QtCore or Qt4::QtGui. This brings several advantages:
If the variable QT_USE_IMPORTED_TARGETS is set to TRUE before FindQt4.cmake is executed, also the Qt library variables like QT_QTCORE_LIBRARY are set to point to these imported targets instead to the file path. This is the case automatically when doing a find_package(KDE4).
With KDE 4.4 3 new libraries were added to kdelibs: the knewstuff3 library, the kunitconversion library and the kdewebkit library. These libraries come with their associated variables. So if you want to link against these libraries, use ${KDE4_KNEWSTUFF3_LIBS}, ${KDE4_KUNITCONVERSION_LIBS} and ${KDE4_KDEWEBKIT_LIBS} respectively. They don't require an additional include directory.
With KDE 4.4 the kdecore library now contains a new authorization component, called KAuth, which support PolicyKit. Along with it come two new macros, KDE4_INSTALL_AUTH_ACTIONS() and KDE4_INSTALL_AUTH_HELPER_FILES(). These macros help with generating and installing the policy action files.
Some completely new installed modules have been added during this cycle:
Also added were FindPolkitQt-1.cmake and FindPolkitQt.cmake, but both are used only internally inside kdelibs and both are not installed.