Backport from galactic

This commit is contained in:
Antonio cuadros
2021-07-27 13:17:27 +02:00
parent 7f3f560bc7
commit a5e14eab70
7 changed files with 246 additions and 98 deletions
+112 -38
View File
@@ -14,6 +14,9 @@
cmake_minimum_required(VERSION 3.5)
option(BUILD_SHARED_LIBS "Control shared/static building." ON)
option(UBUILD_AGENT_EXECUTABLE "Control shared/static building." ON)
option(UROSAGENT_GENERATE_PROFILE
"Generates agent.refs according to the .msgs provided in the .repos" OFF
)
@@ -41,15 +44,26 @@ find_package(ament_cmake_gtest REQUIRED)
find_package(micro_ros_msgs REQUIRED)
add_executable(${PROJECT_NAME}
src/main.cpp
include(GNUInstallDirs)
set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Installation directory for binaries")
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Installation directory for C headers")
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries")
set(DATA_INSTALL_DIR ${CMAKE_INSTALL_DATADIR} CACHE PATH "Installation directory for data")
# Set source files
set(SRCS
src/agent/Agent.cpp
src/agent/graph_manager/graph_manager.cpp
src/agent/graph_manager/graph_typesupport.cpp
src/agent/utils/demangle.cpp
)
target_include_directories(${PROJECT_NAME}
# Library
add_library(${PROJECT_NAME} ${SRCS})
target_include_directories(${PROJECT_NAME} BEFORE
PUBLIC
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
PRIVATE
include
)
@@ -74,27 +88,6 @@ target_link_libraries(${PROJECT_NAME}
$<$<BOOL:$<PLATFORM_ID:Linux>>:dl>
)
target_compile_options(${PROJECT_NAME}
PRIVATE
$<$<C_COMPILER_ID:GNU>:-Wall>
$<$<C_COMPILER_ID:GNU>:-Wextra>
$<$<C_COMPILER_ID:GNU>:-pedantic>
)
set_target_properties(${PROJECT_NAME} PROPERTIES
CXX_STANDARD
14
CXX_STANDARD_REQUIRED
YES
)
set_target_properties(${PROJECT_NAME} PROPERTIES
CXX_STANDARD
14
CXX_STANDARD_REQUIRED
YES
)
target_compile_options(${PROJECT_NAME}
PRIVATE
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall>
@@ -102,24 +95,105 @@ target_compile_options(${PROJECT_NAME}
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wpedantic>
)
set_target_properties(${PROJECT_NAME} PROPERTIES
CXX_STANDARD
14
CXX_STANDARD_REQUIRED
YES
)
# Install agent lib
install(
TARGETS
${PROJECT_NAME}
EXPORT
${PROJECT_NAME}Targets
RUNTIME DESTINATION
${BIN_INSTALL_DIR}
LIBRARY DESTINATION
${LIB_INSTALL_DIR}
ARCHIVE DESTINATION
${LIB_INSTALL_DIR}
COMPONENT
libraries
)
# Install includes
install(
DIRECTORY
${PROJECT_SOURCE_DIR}/include/agent
DESTINATION
${INCLUDE_INSTALL_DIR}
FILES_MATCHING
PATTERN "*.hpp"
PATTERN "*.h"
)
# Export library
install(
EXPORT
${PROJECT_NAME}Targets
DESTINATION
${DATA_INSTALL_DIR}/${PROJECT_NAME}/cmake
)
# Package configuration
include(CMakePackageConfigHelpers)
configure_package_config_file(
${PROJECT_SOURCE_DIR}/cmake/Config.cmake.in
${PROJECT_BINARY_DIR}/cmake/config/${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION
${DATA_INSTALL_DIR}/${PROJECT_NAME}/cmake
PATH_VARS
BIN_INSTALL_DIR
INCLUDE_INSTALL_DIR
LIB_INSTALL_DIR
DATA_INSTALL_DIR
)
install(
FILES
${PROJECT_BINARY_DIR}/cmake/config/${PROJECT_NAME}Config.cmake
DESTINATION
${DATA_INSTALL_DIR}/${PROJECT_NAME}/cmake
)
if(UBUILD_AGENT_EXECUTABLE)
add_executable(micro_ros_agent_bin
${SRCS}
src/main.cpp
)
target_include_directories(micro_ros_agent_bin
PRIVATE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
)
target_link_libraries(micro_ros_agent_bin ${PROJECT_NAME})
set_target_properties(micro_ros_agent_bin
PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
install(
TARGETS
micro_ros_agent_bin
DESTINATION
lib/${PROJECT_NAME}
)
install(
DIRECTORY
launch
DESTINATION
share/${PROJECT_NAME}
)
endif()
ament_export_dependencies(microxrcedds_agent)
ament_package()
install(
TARGETS
${PROJECT_NAME}
DESTINATION
lib/${PROJECT_NAME}
)
install(
DIRECTORY
launch
DESTINATION
share/${PROJECT_NAME}
)
if(UROSAGENT_GENERATE_PROFILE)
set(_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/python")