From 8b0968b6efcb98463a82380afc75e8e8664c0eed Mon Sep 17 00:00:00 2001 From: Stefano Caiazza Date: Wed, 2 Oct 2019 16:06:58 +0200 Subject: [PATCH 1/2] Added the option not to install the package This can be useful to use this as a direct subproject --- CMakeLists.txt | 74 ++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0be6a812..2df106b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ include (DetectCPPZMQVersion) project(cppzmq VERSION ${DETECTED_CPPZMQ_VERSION}) +option(CPPZMQ_ENABLE_INSTALL "Generate the install target" ON ) + find_package(ZeroMQ QUIET) # libzmq autotools install: fallback to pkg-config @@ -49,41 +51,43 @@ foreach (target cppzmq cppzmq-static) $) endforeach() -target_link_libraries(cppzmq INTERFACE libzmq) -target_link_libraries(cppzmq-static INTERFACE libzmq-static) - -include(GNUInstallDirs) -include(CMakePackageConfigHelpers) - -install(TARGETS cppzmq cppzmq-static - EXPORT ${PROJECT_NAME}-targets) - -install(FILES ${CPPZMQ_HEADERS} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - -# GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share". -set(CPPZMQ_CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}" CACHE STRING "install path for cppzmqConfig.cmake") - -configure_file(libzmq-pkg-config/FindZeroMQ.cmake - libzmq-pkg-config/FindZeroMQ.cmake - COPYONLY) - -export(EXPORT ${PROJECT_NAME}-targets - FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake") -configure_package_config_file(${PROJECT_NAME}Config.cmake.in - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) -write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake - VERSION ${CPPZMQ_VERSION} - COMPATIBILITY AnyNewerVersion) -install(EXPORT ${PROJECT_NAME}-targets - FILE ${PROJECT_NAME}Targets.cmake - DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake - DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake - DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}/libzmq-pkg-config) +target_link_libraries(cppzmq INTERFACE ${ZeroMQ_LIBRARY} ) +target_link_libraries(cppzmq-static INTERFACE ${ZeroMQ_STATIC_LIBRARY}) + +if(CPPZMQ_ENABLE_INSTALL) + include(GNUInstallDirs) + include(CMakePackageConfigHelpers) + + install(TARGETS cppzmq cppzmq-static + EXPORT ${PROJECT_NAME}-targets) + + install(FILES ${CPPZMQ_HEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + # GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share". + set(CPPZMQ_CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}" CACHE STRING "install path for cppzmqConfig.cmake") + + configure_file(libzmq-pkg-config/FindZeroMQ.cmake + libzmq-pkg-config/FindZeroMQ.cmake + COPYONLY) + + export(EXPORT ${PROJECT_NAME}-targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake") + configure_package_config_file(${PROJECT_NAME}Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) + write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + VERSION ${CPPZMQ_VERSION} + COMPATIBILITY AnyNewerVersion) + install(EXPORT ${PROJECT_NAME}-targets + FILE ${PROJECT_NAME}Targets.cmake + DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake + DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}/libzmq-pkg-config) +endif() option(CPPZMQ_BUILD_TESTS "Whether or not to build the tests" ON) From fc8e07cc2b09d9e2f1f8dbdff66931ebfd5191b4 Mon Sep 17 00:00:00 2001 From: Stefano Caiazza Date: Tue, 8 Oct 2019 17:41:26 +0200 Subject: [PATCH 2/2] Added a conditional to switch between searching zeromq variables or targets Additionally corrected the tab/space discrepancy --- CMakeLists.txt | 67 ++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2df106b8..b5b1446d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,41 +51,50 @@ foreach (target cppzmq cppzmq-static) $) endforeach() +if(NOT TARGET libzmq) target_link_libraries(cppzmq INTERFACE ${ZeroMQ_LIBRARY} ) +else() +target_link_libraries(cppzmq INTERFACE libzmq ) +endif() + +if(NOT TARGET libzmq-static) target_link_libraries(cppzmq-static INTERFACE ${ZeroMQ_STATIC_LIBRARY}) +else() +target_link_libraries(cppzmq-static INTERFACE libzmq-static) +endif() if(CPPZMQ_ENABLE_INSTALL) - include(GNUInstallDirs) - include(CMakePackageConfigHelpers) - - install(TARGETS cppzmq cppzmq-static - EXPORT ${PROJECT_NAME}-targets) - - install(FILES ${CPPZMQ_HEADERS} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - # GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share". - set(CPPZMQ_CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}" CACHE STRING "install path for cppzmqConfig.cmake") - - configure_file(libzmq-pkg-config/FindZeroMQ.cmake - libzmq-pkg-config/FindZeroMQ.cmake - COPYONLY) - - export(EXPORT ${PROJECT_NAME}-targets - FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake") - configure_package_config_file(${PROJECT_NAME}Config.cmake.in - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) - write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake - VERSION ${CPPZMQ_VERSION} - COMPATIBILITY AnyNewerVersion) - install(EXPORT ${PROJECT_NAME}-targets - FILE ${PROJECT_NAME}Targets.cmake - DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake + include(GNUInstallDirs) + include(CMakePackageConfigHelpers) + + install(TARGETS cppzmq cppzmq-static + EXPORT ${PROJECT_NAME}-targets) + + install(FILES ${CPPZMQ_HEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + # GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share". + set(CPPZMQ_CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}" CACHE STRING "install path for cppzmqConfig.cmake") + + configure_file(libzmq-pkg-config/FindZeroMQ.cmake + libzmq-pkg-config/FindZeroMQ.cmake + COPYONLY) + + export(EXPORT ${PROJECT_NAME}-targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake") + configure_package_config_file(${PROJECT_NAME}Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) + write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + VERSION ${CPPZMQ_VERSION} + COMPATIBILITY AnyNewerVersion) + install(EXPORT ${PROJECT_NAME}-targets + FILE ${PROJECT_NAME}Targets.cmake + DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}/libzmq-pkg-config) endif()