From b414cddcb5b76b211098a39edc7017618853f8b1 Mon Sep 17 00:00:00 2001 From: raiqarasool Date: Fri, 12 Sep 2025 14:19:16 -0400 Subject: [PATCH] Add export and install of CMake targets for proper find_package support --- CMakeLists.txt | 27 +++++++++++++++++++++++++-- cmake/evioConfig.cmake.in | 6 +++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c2aa58b5e..9127732f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -139,7 +139,8 @@ if(NOT C_ONLY) /usr/local/include ${Boost_INCLUDE_DIRS} ${LZ4_INCLUDE_DIRS} - ${DISRUPTOR_INCLUDE_DIR} + $ + $ ) # Add the C++ tests/examples @@ -232,6 +233,7 @@ endif() # Basic C library installation - minimal approach install(TARGETS evio + EXPORT evioTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -243,7 +245,8 @@ install(FILES ${C_HEADER_FILES} # C++ components if enabled if(NOT C_ONLY) - install(TARGETS eviocc + install(TARGETS eviocc ${DISRUPTOR_LIBRARY} + EXPORT evioTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -254,6 +257,26 @@ if(NOT C_ONLY) ) endif() +# Export targets and install config for find_package() +install(EXPORT evioTargets + FILE evioTargets.cmake + NAMESPACE evio:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/evio +) + +include(CMakePackageConfigHelpers) + +configure_package_config_file( + ${CMAKE_SOURCE_DIR}/cmake/evioConfig.cmake.in + ${CMAKE_BINARY_DIR}/evioConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/evio +) + +install(FILES + ${CMAKE_BINARY_DIR}/evioConfig.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/evio +) + # Unit testing setup add_test(NAME EvioWriteAndReadBack_builder COMMAND bin/EvioWriteAndReadBack_builder 10) diff --git a/cmake/evioConfig.cmake.in b/cmake/evioConfig.cmake.in index 27930e821..a608d512c 100644 --- a/cmake/evioConfig.cmake.in +++ b/cmake/evioConfig.cmake.in @@ -25,9 +25,9 @@ if(NOT DEFINED C_ONLY) message(WARNING "You may need to set DISRUPTOR_CPP_HOME environment variable.") endif() else() - # If evio was built with FetchContent, we make no assumptions - message(STATUS "evio was built with integrated Disruptor. You need to provide Disruptor separately.") - endif() + # Disruptor is built and exported together with evio + message(STATUS "evio includes Disruptor internally; you do not need to provide it separately.") + endif() endif() # Include the targets file