From cf81994ceab9047a93cb0670f4642fc32c7eba08 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Mon, 27 Dec 2021 00:30:41 -0800 Subject: [PATCH] Fix test compilation with USE_INTERNAL_URDF (#800) The USE_INTERNAL_URDF logic for include and windows compiler definitions needs to be repeated for tests that add parser_urdf.cc via target_sources. An interface library is used to deduplicate the cmake logic. Signed-off-by: Steve Peters --- src/CMakeLists.txt | 55 ++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e2e02bbdf..2d5d07167 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,16 +5,26 @@ ign_get_libsources_and_unittests(sources gtest_sources) # Add the source file auto-generated into the build folder from sdf/CMakeLists.txt list(APPEND sources EmbeddedSdf.cc) +# Use interface library to deduplicate cmake logic for URDF linking +add_library(using_parser_urdf INTERFACE) if (USE_INTERNAL_URDF) set(sources ${sources} - urdf/urdf_parser/model.cpp - urdf/urdf_parser/link.cpp - urdf/urdf_parser/joint.cpp - urdf/urdf_parser/pose.cpp - urdf/urdf_parser/twist.cpp - urdf/urdf_parser/urdf_model_state.cpp - urdf/urdf_parser/urdf_sensor.cpp - urdf/urdf_parser/world.cpp) + urdf/urdf_parser/model.cpp + urdf/urdf_parser/link.cpp + urdf/urdf_parser/joint.cpp + urdf/urdf_parser/pose.cpp + urdf/urdf_parser/twist.cpp + urdf/urdf_parser/urdf_model_state.cpp + urdf/urdf_parser/urdf_sensor.cpp + urdf/urdf_parser/world.cpp) + target_include_directories(using_parser_urdf INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/urdf) + if (WIN32) + target_compile_definitions(using_parser_urdf INTERFACE -D_USE_MATH_DEFINES) + endif() +else() + target_link_libraries(using_parser_urdf INTERFACE + IgnURDFDOM::IgnURDFDOM) endif() if (BUILD_TESTING) @@ -62,12 +72,9 @@ if (BUILD_TESTING) endif() if (TARGET UNIT_ParamPassing_TEST) - if (NOT USE_INTERNAL_URDF) - target_link_libraries(UNIT_ParamPassing_TEST - IgnURDFDOM::IgnURDFDOM) - endif() target_link_libraries(UNIT_ParamPassing_TEST - TINYXML2::TINYXML2) + TINYXML2::TINYXML2 + using_parser_urdf) target_sources(UNIT_ParamPassing_TEST PRIVATE Converter.cc EmbeddedSdf.cc @@ -90,12 +97,9 @@ if (BUILD_TESTING) endif() if (TARGET UNIT_parser_urdf_TEST) - if (NOT USE_INTERNAL_URDF) - target_link_libraries(UNIT_parser_urdf_TEST - IgnURDFDOM::IgnURDFDOM) - endif() target_link_libraries(UNIT_parser_urdf_TEST - TINYXML2::TINYXML2) + TINYXML2::TINYXML2 + using_parser_urdf) target_sources(UNIT_parser_urdf_TEST PRIVATE SDFExtension.cc XmlUtils.cc @@ -112,7 +116,8 @@ target_link_libraries(${PROJECT_LIBRARY_TARGET_NAME} PUBLIC ignition-math${IGN_MATH_VER}::ignition-math${IGN_MATH_VER} PRIVATE - TINYXML2::TINYXML2) + TINYXML2::TINYXML2 + using_parser_urdf) if (WIN32) target_compile_definitions(${PROJECT_LIBRARY_TARGET_NAME} PRIVATE URDFDOM_STATIC) @@ -126,18 +131,6 @@ target_include_directories(${PROJECT_LIBRARY_TARGET_NAME} ${CMAKE_CURRENT_SOURCE_DIR} ) -if (USE_INTERNAL_URDF) - target_include_directories(${PROJECT_LIBRARY_TARGET_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/urdf - ) - if (WIN32) - target_compile_definitions(${PROJECT_LIBRARY_TARGET_NAME} PRIVATE -D_USE_MATH_DEFINES) - endif() -else() - target_link_libraries(${PROJECT_LIBRARY_TARGET_NAME} PRIVATE IgnURDFDOM::IgnURDFDOM) -endif() - if(NOT WIN32) add_subdirectory(cmd) endif()