summaryrefslogtreecommitdiffstats
path: root/src/corelib/Qt5CoreMacros.cmake
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-05-05 23:40:19 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-10 23:15:56 +0200
commitc2f8fe64f1273ed25a8e5834f86dc19b79805855 (patch)
treecc885f61da329b384d1b79a62174db8f8f68be1d /src/corelib/Qt5CoreMacros.cmake
parent78b9de746c9328cb56339d36598a67977360be2b (diff)
Make the qt5_use_modules public API.
This cmake function handles all of the necessary logic for using the include directories of Qt modules, linking to Qt modules, adding the required definitions, and most importantly, adding the position independent flags required on UNIX systems to use Qt by default. The function relies on functionality available in CMake 2.8.8, so it is only available if that version of CMake or greater is used. Change-Id: Ibe698e06819129479348c240844264c41553b5fb Reviewed-by: Alexander Neundorf <neundorf@kde.org> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src/corelib/Qt5CoreMacros.cmake')
-rw-r--r--src/corelib/Qt5CoreMacros.cmake32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake
index 4a10fad9eb..41748b52ec 100644
--- a/src/corelib/Qt5CoreMacros.cmake
+++ b/src/corelib/Qt5CoreMacros.cmake
@@ -202,3 +202,35 @@ function(QT5_ADD_RESOURCES outfiles )
endforeach()
set(${outfiles} ${${outfiles}} PARENT_SCOPE)
endfunction()
+
+
+if (NOT CMAKE_VERSION VERSION_LESS 2.8.8)
+ function(qt5_use_modules _target _link_type)
+ if ("${_link_type}" STREQUAL "LINK_PUBLIC" OR "${_link_type}" STREQUAL "LINK_PRIVATE" )
+ set(modules ${ARGN})
+ set(link_type ${_link_type})
+ else()
+ set(modules ${_link_type} ${ARGN})
+ endif()
+ foreach(_module ${modules})
+ if (NOT Qt5${_module}_FOUND)
+ message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.")
+ endif()
+ target_link_libraries(${_target} ${link_type} ${Qt5${_module}_LIBRARIES})
+ set_property(TARGET ${_target} APPEND PROPERTY INCLUDE_DIRECTORIES ${Qt5${_module}_INCLUDE_DIRS})
+ set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS ${Qt5${_module}_COMPILE_DEFINITIONS})
+
+ # We can't just append to the COMPILE_FLAGS property. That creats a ';' separated list
+ # which breaks the compile commmand line.
+ # Ensure non-duplication here manually instead.
+ get_property(_target_type TARGET ${_target} PROPERTY TYPE)
+ if ("${_target_type}" STREQUAL "EXECUTABLE" AND Qt5${_module}_EXECUTABLE_COMPILE_FLAGS)
+ get_target_property(_flags ${_target} COMPILE_FLAGS)
+ string(FIND "${_flags}" "${Qt5${_module}_EXECUTABLE_COMPILE_FLAGS}" _find_result)
+ if (NOT _find_result)
+ set_target_properties(${_target} PROPERTIES COMPILE_FLAGS "${_flags} ${Qt5${_module}_EXECUTABLE_COMPILE_FLAGS}")
+ endif()
+ endif()
+ endforeach()
+ endfunction()
+endif()