diff --git a/CMakeLists.txt b/CMakeLists.txt index 92dfd42a..8f201698 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,13 @@ endif() project(${LIB_TARGET} LANGUAGES CXX VERSION 0.0.1) +if (NOT DEFINED LF_REACTOR_CPP_SUFFIX) + find_package(ament_cmake QUIET) + if(ament_cmake_FOUND) + set(REACTOR_CPP_USE_AMENT ON) + endif() +endif() + # require C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -71,3 +78,17 @@ if (DEFINED LF_REACTOR_CPP_SUFFIX) else() install(DIRECTORY include/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") endif() + +if (REACTOR_CPP_USE_AMENT) + # Install the export file - must be in root CMakeLists.txt for ament compatibility + install(EXPORT ${LIB_TARGET} DESTINATION share/${LIB_TARGET}/cmake NAMESPACE ${LIB_TARGET}::) + ament_export_targets(${LIB_TARGET} HAS_LIBRARY_TARGET) + ament_export_include_directories(include) + ament_export_libraries(${LIB_TARGET}) + ament_package() +else() + # For non-ament builds, install export file from here + if(REACTOR_CPP_INSTALL) + install(EXPORT ${LIB_TARGET} DESTINATION share/${LIB_TARGET}/cmake) + endif() +endif() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 6f2ffd7d..7fa490f9 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -61,12 +61,9 @@ if(REACTOR_CPP_INSTALL) install(FILES "${PROJECT_BINARY_DIR}/include/reactor-cpp/config.hh" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/reactor-cpp") endif() - install(TARGETS ${LIB_TARGET} EXPORT ${LIB_TARGET}Config + install(TARGETS ${LIB_TARGET} EXPORT ${LIB_TARGET} ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" OPTIONAL LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" OPTIONAL RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" OPTIONAL) - - install(EXPORT ${LIB_TARGET}Config DESTINATION share/${LIB_TARGET}/cmake) - - export(TARGETS ${PROJECT_NAME} FILE ${LIB_TARGET}Config.cmake) + # Note: install(EXPORT ...) moved to root CMakeLists.txt for ament compatibility endif() diff --git a/package.xml b/package.xml index fdfe31c9..a42a7870 100644 --- a/package.xml +++ b/package.xml @@ -6,17 +6,8 @@ A C++ reactor runtime user ISC License + ament_cmake - cmake - - - - reactor-cpp-foo - 0.0.0 - A C++ reactor runtime - user - ISC License - - cmake + ament_cmake