From c181965a1cb974fa8116e2e0b920d78e6678c4c0 Mon Sep 17 00:00:00 2001 From: Marc Reilly Date: Sat, 12 Jun 2021 11:20:38 +1000 Subject: [PATCH] Add project install/export in CMakeLists.txt Signed-off-by: Marc Reilly --- CMakeLists.txt | 48 +++++++++++++++++++++++++++++++++- cmake/qtpromiseConfig.cmake.in | 5 ++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 cmake/qtpromiseConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 7967e59..c485944 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,8 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") find_package(Qt5 5.6.0 REQUIRED COMPONENTS Core) +include(GNUInstallDirs) + set(CMAKE_AUTOMOC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -18,7 +20,11 @@ add_library(qtpromise INTERFACE) add_library(qtpromise::qtpromise ALIAS qtpromise) target_link_libraries(qtpromise INTERFACE Qt5::Core) -target_include_directories(qtpromise INTERFACE "${CMAKE_CURRENT_LIST_DIR}/include") +target_include_directories(qtpromise + INTERFACE + "$" + "$" +) add_definitions( -DQT_DEPRECATED_WARNINGS @@ -79,6 +85,46 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") ) endif() +install( + TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}_Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Runtime + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime + ) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "qtpromiseConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/cmake/qtpromiseConfig.cmake.in" + "${PROJECT_BINARY_DIR}/qtpromiseConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qtpromise/cmake +) + +install( + EXPORT ${PROJECT_NAME}_Targets + FILE qtpromiseTargets.cmake + NAMESPACE qtpromise:: + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qtpromise/cmake +) + +install( + FILES "${PROJECT_BINARY_DIR}/qtpromiseConfig.cmake" + "${PROJECT_BINARY_DIR}/qtpromiseConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qtpromise/cmake + ) + +install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/qtpromise + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtpromise/src) +install(FILES ${PROJECT_SOURCE_DIR}/include/QtPromise + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtpromise/include) + + if(NOT SUBPROJECT) enable_testing() add_subdirectory(tests) diff --git a/cmake/qtpromiseConfig.cmake.in b/cmake/qtpromiseConfig.cmake.in new file mode 100644 index 0000000..2f93b61 --- /dev/null +++ b/cmake/qtpromiseConfig.cmake.in @@ -0,0 +1,5 @@ + +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +check_required_components("@PROJECT_NAME@")