From c4a05f5e3aa1af35ed73c5a2883fce9723d06132 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 24 Jun 2012 19:28:43 +0200 Subject: Refactor the creation of imported targets into a macro. This will make it easier to handle cases where the Qt installation and the build do not match exactly. For example, on Windows, it would be possible to do: ./configure -debug make make install make release make release_install In which case, both debug and release libraries would be installed even though it was only configured with -debug. On non-Windows, the debug and release libraries would overwrite each other, so it is not necessary to support it. Similarly, we want to handle cases in the future where (on non-Windows) both static and shared libraries would be installed (again, not described with a single build configuration). Change-Id: Ib7916c9664a0f72e40156a03bdfc79a4a6c24350 Reviewed-by: Oswald Buddenhagen Reviewed-by: Stephen Kelly --- mkspecs/cmake/Qt5BasicConfig.cmake.in | 60 +++++++++++++++-------------------- 1 file changed, 26 insertions(+), 34 deletions(-) (limited to 'mkspecs') diff --git a/mkspecs/cmake/Qt5BasicConfig.cmake.in b/mkspecs/cmake/Qt5BasicConfig.cmake.in index a93c5cc569..c7a624319d 100644 --- a/mkspecs/cmake/Qt5BasicConfig.cmake.in +++ b/mkspecs/cmake/Qt5BasicConfig.cmake.in @@ -112,6 +112,28 @@ list(APPEND _Qt5Gui_LIB_DEPENDENCIES ${JPEG_LIBRARIES}) !!ENDIF # Static +macro(_populate_imported_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + \"IMPORTED_LOCATION_${Configuration}\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${LIB_LOCATION}\" +!!ELSE + \"IMPORTED_LOCATION_${Configuration}\" \"$${CMAKE_LIB_DIR}$${LIB_LOCATION}\" +!!ENDIF + ) + if(IMPLIB_LOCATION) + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + \"IMPORTED_IMPLIB_${Configuration}\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\" +!!ELSE + \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\" +!!ENDIF + ) + endif() +endmacro() + if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) !!IF !isEmpty(CMAKE_STATIC_TYPE) add_library(Qt5::$${CMAKE_MODULE_NAME} STATIC IMPORTED) @@ -123,42 +145,12 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) !!ENDIF !!IF !isEmpty(CMAKE_DEBUG_TYPE) - set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES - IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" -!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) - IMPORTED_LOCATION_DEBUG \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" -!!ELSE - IMPORTED_LOCATION_DEBUG \"$${CMAKE_LIB_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" -!!ENDIF - ) -!!IF !isEmpty(CMAKE_IMPLIB_FILE_LOCATION_DEBUG) - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES - IMPORTED_IMPLIB_DEBUG \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" - ) -!!ENDIF -!!ENDIF + _populate_imported_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF // CMAKE_DEBUG_TYPE !!IF !isEmpty(CMAKE_RELEASE_TYPE) - set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES - IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" -!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) - IMPORTED_LOCATION_RELEASE \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" -!!ELSE - IMPORTED_LOCATION_RELEASE \"$${CMAKE_LIB_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" -!!ENDIF -) -!!IF !isEmpty(CMAKE_IMPLIB_FILE_LOCATION_RELEASE) - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES -!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) - IMPORTED_IMPLIB_RELEASE \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" -!!ELSE - IMPORTED_IMPLIB_RELEASE \"$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" -!!ENDIF - ) -!!ENDIF -!!ENDIF + _populate_imported_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF // CMAKE_RELEASE_TYPE endif() -- cgit v1.2.3