summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Huff <eric.huff@ihsmarkit.com>2020-05-28 23:53:56 +0000
committerAlan Antonuk <alan.antonuk@gmail.com>2020-05-31 19:51:59 -0700
commitd416b8b16d196085106cfe137a0ff6919a9f6752 (patch)
treee691c25e52c8605f2bbc9d36b7fae84d13e82782
parent9ee7b7b2c655392ac0f76f0bef488aaea1d89da8 (diff)
downloadrabbitmq-c-d416b8b16d196085106cfe137a0ff6919a9f6752.tar.gz
Add rabbitmq-c-config.cmake generation
Generating a -config.cmake or Config.cmake lets rabbitmq-c be discoverable via cmake's `find_package`, and allows easier use in the vcpkg ecosystem.
-rw-r--r--CMakeLists.txt39
-rw-r--r--cmake/rabbitmq-c-config.cmake.in4
-rw-r--r--librabbitmq/CMakeLists.txt4
3 files changed, 45 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a39645f..a58679a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -272,6 +272,8 @@ if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
message(FATAL_ERROR "One or both of BUILD_SHARED_LIBS or BUILD_STATIC_LIBS must be set to ON to build")
endif()
+set(targets_export_name rabbitmq-targets)
+
add_subdirectory(librabbitmq)
if (BUILD_EXAMPLES)
@@ -329,6 +331,43 @@ set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
configure_file(cmake/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/librabbitmq/config.h)
configure_file(librabbitmq.pc.in ${CMAKE_CURRENT_BINARY_DIR}/librabbitmq.pc @ONLY)
+
+include(CMakePackageConfigHelpers)
+set(RMQ_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/rabbitmq-c)
+set(project_config "${CMAKE_CURRENT_BINARY_DIR}/rabbitmq-c-config.cmake")
+set(version_config "${CMAKE_CURRENT_BINARY_DIR}/rabbitmq-c-config-version.cmake")
+
+write_basic_package_version_file(
+ "${version_config}"
+ VERSION ${RMQ_VERSION}
+ COMPATIBILITY AnyNewerVersion)
+
+configure_package_config_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rabbitmq-c-config.cmake.in"
+ "${project_config}"
+ INSTALL_DESTINATION "${RMQ_CMAKE_DIR}")
+
+
+if(BUILD_SHARED_LIBS)
+ list(APPEND INSTALL_TARGETS rabbitmq)
+endif()
+if(BUILD_STATIC_LIBS)
+ list(APPEND INSTALL_TARGETS rabbitmq-static)
+endif()
+
+export(TARGETS ${INSTALL_TARGETS}
+ NAMESPACE rabbitmq::
+ FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake)
+
+install(FILES ${project_config} ${version_config}
+ DESTINATION ${RMQ_CMAKE_DIR}
+ )
+
+install(EXPORT ${targets_export_name}
+ DESTINATION ${RMQ_CMAKE_DIR}
+ NAMESPACE rabbitmq::
+ )
+
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/librabbitmq.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
diff --git a/cmake/rabbitmq-c-config.cmake.in b/cmake/rabbitmq-c-config.cmake.in
new file mode 100644
index 0000000..8d03749
--- /dev/null
+++ b/cmake/rabbitmq-c-config.cmake.in
@@ -0,0 +1,4 @@
+@PACKAGE_INIT@
+
+include(${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake)
+check_required_components(rabbitmq-c)
diff --git a/librabbitmq/CMakeLists.txt b/librabbitmq/CMakeLists.txt
index bd5369a..50d7834 100644
--- a/librabbitmq/CMakeLists.txt
+++ b/librabbitmq/CMakeLists.txt
@@ -131,7 +131,7 @@ if (BUILD_SHARED_LIBS)
set_target_properties(rabbitmq PROPERTIES VERSION ${RMQ_VERSION} SOVERSION ${RMQ_SOVERSION})
endif (WIN32)
- install(TARGETS rabbitmq
+ install(TARGETS rabbitmq EXPORT "${targets_export_name}"
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -165,7 +165,7 @@ if (BUILD_STATIC_LIBS)
set_target_properties(rabbitmq-static PROPERTIES VERSION ${RMQ_VERSION} SOVERSION ${RMQ_SOVERSION} OUTPUT_NAME rabbitmq)
endif (WIN32)
- install(TARGETS rabbitmq-static
+ install(TARGETS rabbitmq-static EXPORT "${targets_export_name}"
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)