Skip to content

Commit e84484c

Browse files
authored
Merge pull request #118 from herbrechtsmeier/cmake
cmake: Export targets to package config
2 parents 1fdf3d1 + aa850e7 commit e84484c

File tree

2 files changed

+41
-5
lines changed

2 files changed

+41
-5
lines changed

CMakeLists.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ project(cppzmq)
33

44
find_package(ZeroMQ REQUIRED)
55

6+
if (ZeroMQ_FOUND AND (NOT TARGET libzmq OR NOT TARGET libzmq-static))
7+
message(FATAL_ERROR "ZeroMQ version not supported!")
8+
endif()
9+
610
set (${PROJECT_NAME}_VERSION ${ZeroMQ_VERSION})
711
message(STATUS "cppzmq v${${PROJECT_NAME}_VERSION}")
812

@@ -11,21 +15,40 @@ set(CPPZMQ_HEADERS
1115
zmq_addon.hpp
1216
)
1317

18+
foreach (target cppzmq cppzmq-static)
19+
add_library(${target} INTERFACE)
20+
target_include_directories(${target} INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
21+
$<INSTALL_INTERFACE:include>)
22+
endforeach()
23+
24+
target_link_libraries(cppzmq INTERFACE libzmq)
25+
target_link_libraries(cppzmq-static INTERFACE libzmq-static)
26+
1427
include(GNUInstallDirs)
1528
include(CMakePackageConfigHelpers)
1629

30+
install(TARGETS cppzmq cppzmq-static
31+
EXPORT ${PROJECT_NAME}-targets)
32+
1733
install(FILES ${CPPZMQ_HEADERS}
1834
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
1935

2036
# GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share".
2137
set(CPPZMQ_CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}" CACHE STRING "install path for cppzmqConfig.cmake")
2238

39+
if (NOT CMAKE_VERSION VERSION_LESS 3.0)
40+
export(EXPORT ${PROJECT_NAME}-targets
41+
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake")
42+
endif()
2343
configure_package_config_file(${PROJECT_NAME}Config.cmake.in
2444
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
2545
INSTALL_DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR})
2646
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
2747
VERSION ${${PROJECT_NAME}_VERSION}
2848
COMPATIBILITY AnyNewerVersion)
49+
install(EXPORT ${PROJECT_NAME}-targets
50+
FILE ${PROJECT_NAME}Targets.cmake
51+
DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR})
2952
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
3053
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
3154
DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR})

cppzmqConfig.cmake.in

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
# cppzmq cmake module
2+
#
3+
# The following import targets are created
4+
#
5+
# ::
6+
#
7+
# cppzmq-static
8+
# cppzmq
9+
#
210
# This module sets the following variables in your project::
311
#
412
# cppzmq_FOUND - true if cppzmq found on the system
@@ -8,8 +16,13 @@
816

917
@PACKAGE_INIT@
1018

11-
set(PN cppzmq)
12-
set_and_check(${PN}_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@")
13-
set_and_check(${PN}_LIBRARY "@ZeroMQ_LIBRARY@")
14-
set_and_check(${PN}_STATIC_LIBRARY "@ZeroMQ_STATIC_LIBRARY@")
15-
check_required_components(${PN})
19+
include(CMakeFindDependencyMacro)
20+
find_dependency(ZeroMQ)
21+
22+
if(NOT TARGET @PROJECT_NAME@)
23+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
24+
25+
get_target_property(@PROJECT_NAME@_INCLUDE_DIR cppzmq INTERFACE_INCLUDE_DIRECTORIES)
26+
get_target_property(@PROJECT_NAME@_LIBRARY libzmq LOCATION)
27+
get_target_property(@PROJECT_NAME@_STATIC_LIBRARY libzmq-static LOCATION)
28+
endif()

0 commit comments

Comments
 (0)