1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
macro(add_urdfdom_library)
set(oneValueArgs LIBNAME)
set(multiValueArgs SOURCES LINK)
cmake_parse_arguments(add_urdfdom_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
add_library(${add_urdfdom_library_LIBNAME} SHARED
${add_urdfdom_library_SOURCES})
target_include_directories(${add_urdfdom_library_LIBNAME} PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
target_link_libraries(${add_urdfdom_library_LIBNAME} PUBLIC
${add_urdfdom_library_LINK}
${urdfdom_headers_link_libs}
)
target_link_libraries(${add_urdfdom_library_LIBNAME} PRIVATE
${console_bridge_link_libs}
tinyxml2::tinyxml2
)
if(NOT CMAKE_CXX_STANDARD)
target_compile_features(${add_urdfdom_library_LIBNAME} PUBLIC cxx_std_14)
endif()
set_target_properties(${add_urdfdom_library_LIBNAME} PROPERTIES
DEFINE_SYMBOL URDFDOM_EXPORTS
SOVERSION ${URDF_MAJOR_MINOR_VERSION})
endmacro()
if(TARGET console_bridge::console_bridge)
set(console_bridge_link_libs "console_bridge::console_bridge")
else()
set(console_bridge_link_libs "console_bridge")
endif()
if(TARGET urdfdom_headers::urdfdom_headers)
set(urdfdom_headers_link_libs "urdfdom_headers::urdfdom_headers")
else()
set(urdfdom_headers_link_libs "")
endif()
add_urdfdom_library(
LIBNAME
urdfdom_world
SOURCES
src/pose.cpp
src/model.cpp
src/link.cpp
src/joint.cpp
src/world.cpp)
add_urdfdom_library(
LIBNAME
urdfdom_model
SOURCES
src/pose.cpp
src/model.cpp
src/link.cpp
src/joint.cpp)
add_urdfdom_library(
LIBNAME
urdfdom_sensor
SOURCES
src/urdf_sensor.cpp
LINK
urdfdom_model)
add_urdfdom_library(
LIBNAME
urdfdom_model_state
SOURCES
src/urdf_model_state.cpp
src/twist.cpp)
add_library(urdf_parser INTERFACE)
target_include_directories(urdf_parser INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
target_link_libraries(urdf_parser INTERFACE
urdfdom::urdfdom_model
urdfdom::urdfdom_sensor
urdfdom::urdfdom_world)
# --------------------------------
add_executable(check_urdf src/check_urdf.cpp)
target_include_directories(check_urdf PUBLIC include)
target_link_libraries(check_urdf urdfdom_model urdfdom_world)
# Deprecated executable
add_executable(urdf_to_graphiz src/urdf_to_graphviz.cpp)
target_link_libraries(urdf_to_graphiz urdfdom_model)
add_executable(urdf_to_graphviz src/urdf_to_graphviz.cpp)
target_include_directories(urdf_to_graphviz PUBLIC include)
target_link_libraries(urdf_to_graphviz urdfdom_model)
# urdf_mem_test is a binary for testing, not a unit test
add_executable(urdf_mem_test test/memtest.cpp)
target_include_directories(urdf_mem_test PUBLIC include)
target_link_libraries(urdf_mem_test urdfdom_model)
include(CTest)
if(BUILD_TESTING)
# TODO: check Shane's comment https://github.com/ros/urdfdom/pull/157/files#r664960227
add_subdirectory(test)
endif()
INSTALL(
TARGETS
check_urdf
urdf_to_graphiz
urdf_to_graphviz
urdf_mem_test
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
INSTALL(
TARGETS
urdfdom_model
urdfdom_world
urdfdom_sensor
urdfdom_model_state
urdf_parser
EXPORT
urdfdom
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(
EXPORT urdfdom
DESTINATION ${CMAKE_CONFIG_INSTALL_DIR}
NAMESPACE "${PROJECT_NAME}::"
FILE "urdfdomExport.cmake"
)
INSTALL(DIRECTORY include/urdf_parser DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|