From c0b092d7967e1815ba56a6d1aa00f14d58ae3464 Mon Sep 17 00:00:00 2001 From: Abhijit Kundu Date: Tue, 2 Dec 2014 20:36:53 -0500 Subject: [PATCH] modernized cmake installation with IMPORTED target export --- CMakeLists.txt | 1 - cmake/InstallProjectConfig.cmake | 9 ++++----- cmake/InstallSettings.cmake | 2 +- cmake/QtPropertyBrowserConfig.cmake.in | 27 +++++++++++++++++++++----- src/CMakeLists.txt | 23 +++++++++++++--------- 5 files changed, 41 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77db889..a4e80d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,3 @@ - CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) PROJECT(QtPropertyBrowser) diff --git a/cmake/InstallProjectConfig.cmake b/cmake/InstallProjectConfig.cmake index 65fe5d5..d93b3ff 100644 --- a/cmake/InstallProjectConfig.cmake +++ b/cmake/InstallProjectConfig.cmake @@ -5,15 +5,14 @@ configure_package_config_file( ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION ${INSTALL_CMAKE_DIR} - PATH_VARS INSTALL_INCLUDE_DIR + ) + +install(EXPORT ${PROJECT_NAME}Targets + DESTINATION ${INSTALL_CMAKE_DIR} ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT Devel - ) - -install(EXPORT ${PROJECT_NAME}Targets - DESTINATION ${INSTALL_CMAKE_DIR} ) \ No newline at end of file diff --git a/cmake/InstallSettings.cmake b/cmake/InstallSettings.cmake index 3c46014..c30fea5 100644 --- a/cmake/InstallSettings.cmake +++ b/cmake/InstallSettings.cmake @@ -17,7 +17,7 @@ SET(INSTALL_INCLUDE_DIR include/${PROJECT_NAME} CACHE PATH "Install dir for head IF(WIN32 AND NOT CYGWIN) SET(DEF_INSTALL_CMAKE_DIR CMake) ELSE() - SET(DEF_INSTALL_CMAKE_DIR lib/CMake/${PROJECT_NAME}) + SET(DEF_INSTALL_CMAKE_DIR lib/cmake/${PROJECT_NAME}) ENDIF() SET(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Install dir for CMake files") diff --git a/cmake/QtPropertyBrowserConfig.cmake.in b/cmake/QtPropertyBrowserConfig.cmake.in index 9bebd38..445941d 100644 --- a/cmake/QtPropertyBrowserConfig.cmake.in +++ b/cmake/QtPropertyBrowserConfig.cmake.in @@ -1,13 +1,30 @@ # Config file for the QtPropertyBrowser package -# It defines the following variables +# This adds QtPropertyBrowser IMPORTED target +# +# Usage example: +# +# find_package(QtPropertyBrowser) +# add_executable(foo foo.cpp) +# target_link_libraries(foo QtPropertyBrowser) +# +# Additionaly you can use the following varaibles: +# # QtPropertyBrowser_FOUND - standard CMake Package found indicator -# QtPropertyBrowser_INCLUDE_DIRS - include directories for QtPropertyBrowser +# QtPropertyBrowser_INCLUDE_DIR - include directories for QtPropertyBrowser alone +# QtPropertyBrowser_INCLUDE_DIRS - include directories for QtPropertyBrowser with all dpendencies # QtPropertyBrowser_DEFINITIONS - Definitions needed to build with QtPropertyBrowser # QtPropertyBrowser_LIBRARIES - Libraries needed to build with QtPropertyBrowser -set (QtPropertyBrowser_FOUND true) +include(CMakeFindDependencyMacro) +find_dependency(Qt5Widgets) -@PACKAGE_INIT@ -set_and_check (QtPropertyBrowser_INCLUDE_DIRS "@PACKAGE_INSTALL_INCLUDE_DIR@") +# Our library dependencies (contains definitions for IMPORTED targets) +if(NOT TARGET QtPropertyBrowser) + include("${CMAKE_CURRENT_LIST_DIR}/QtPropertyBrowserTargets.cmake") +endif() + +# @PACKAGE_INIT@ + +# check_required_components(QtPropertyBrowser) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7bf9643..8c3cc28 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -60,16 +60,21 @@ add_dependencies(${TARGET_NAME} ${QT_TARGETS}) include(GenerateExportHeader) generate_export_header(${TARGET_NAME}) -set_target_properties(${TARGET_NAME} PROPERTIES - PUBLIC_HEADER "${_PUBLIC_HDRS};${_IMPL_HDRS}" - ) - install(TARGETS ${TARGET_NAME} EXPORT ${TARGET_NAME}Targets - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" - ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" - PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}" - COMPONENT dev + RUNTIME DESTINATION ${INSTALL_BIN_DIR} + LIBRARY DESTINATION ${INSTALL_LIB_DIR} + ARCHIVE DESTINATION ${INSTALL_LIB_DIR} + INCLUDES DESTINATION ${INSTALL_INCLUDE_DIR} +) + +install( + FILES + ${_PUBLIC_HDRS} + ${_IMPL_HDRS} + DESTINATION + ${INSTALL_INCLUDE_DIR} + COMPONENT + Devel )