diff options
author | Stephen Kelly <steveire@gmail.com> | 2012-08-08 21:31:52 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2012-08-19 21:45:09 (GMT) |
commit | 1420691b3548ab34c85fb10b4798586e974e4c98 (patch) | |
tree | e64bf3244df40b53f58e193a9f770e4887ea80dd | |
parent | addefc2ae3b33a75a7152730146b46b319118a24 (diff) | |
download | CMake-1420691b3548ab34c85fb10b4798586e974e4c98.zip CMake-1420691b3548ab34c85fb10b4798586e974e4c98.tar.gz CMake-1420691b3548ab34c85fb10b4798586e974e4c98.tar.bz2 |
Add new qt4_use_modules function.
-rw-r--r-- | Modules/FindQt4.cmake | 11 | ||||
-rw-r--r-- | Modules/Qt4Macros.cmake | 21 |
2 files changed, 32 insertions, 0 deletions
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake index e7d25c9..c5d98fa 100644 --- a/Modules/FindQt4.cmake +++ b/Modules/FindQt4.cmake @@ -163,6 +163,17 @@ # filenames can be found in qm_files. The ts_files # must exists and are not updated in any way. # +# function QT4_USE_MODULES( target [link_type] modules...) +# Make <target> use the <modules> from Qt. Using a Qt module means +# to link to the library, add the relevant include directories for the module, +# and add the relevant compiler defines for using the module. +# Modules are roughly equivalent to components of Qt4, so usage would be +# something like: +# qt4_use_modules(myexe Core Gui Declarative) +# to use QtCore, QtGui and QtDeclarative. The optional <link_type> argument can +# be specified as either LINK_PUBLIC or LINK_PRIVATE to specify the same argument +# to the target_link_libraries call. +# # # Below is a detailed list of variables that FindQt4.cmake sets. # QT_FOUND If false, don't try to use Qt. diff --git a/Modules/Qt4Macros.cmake b/Modules/Qt4Macros.cmake index 4324347..76e4604 100644 --- a/Modules/Qt4Macros.cmake +++ b/Modules/Qt4Macros.cmake @@ -439,3 +439,24 @@ macro(QT4_ADD_TRANSLATION _qm_files) set(${_qm_files} ${${_qm_files}} ${qm}) endforeach () endmacro() + +function(qt4_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}) + string(TOUPPER ${_module} _ucmodule) + if (NOT QT_QT${_ucmodule}_FOUND) + message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.") + endif() + if ("${_ucmodule}" STREQUAL "MAIN") + message(FATAL_ERROR "Can not use \"${_module}\" module with qt4_use_modules.") + endif() + target_link_libraries(${_target} ${link_type} ${QT_QT${_ucmodule}_LIBRARY}) + set_property(TARGET ${_target} APPEND PROPERTY INCLUDE_DIRECTORIES ${QT_QT${_ucmodule}_INCLUDE_DIR} ${QT_HEADERS_DIR} ${QT_MKSPECS_DIR}/default) + set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS ${QT_QT${_ucmodule}_COMPILE_DEFINITIONS}) + endforeach() +endfunction() |