Skip to content

Commit 2b24a9c

Browse files
committed
Fix static builds and optimize test compilation
Signed-off-by: Addisu Z. Taddese <addisu@openrobotics.org>
1 parent 284c8ad commit 2b24a9c

File tree

1 file changed

+29
-70
lines changed

1 file changed

+29
-70
lines changed

src/CMakeLists.txt

Lines changed: 29 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ ign_get_libsources_and_unittests(sources gtest_sources)
55
# Add the source file auto-generated into the build folder from sdf/CMakeLists.txt
66
list(APPEND sources EmbeddedSdf.cc)
77

8-
# Use interface library to deduplicate cmake logic for URDF linking
9-
add_library(using_parser_urdf INTERFACE)
8+
# When using the internal URDF parser, we build its sources with the core library
109
if (USE_INTERNAL_URDF)
11-
set(sources ${sources}
10+
set(urdf_internal_sources
1211
urdf/urdf_parser/model.cpp
1312
urdf/urdf_parser/link.cpp
1413
urdf/urdf_parser/joint.cpp
@@ -17,14 +16,7 @@ if (USE_INTERNAL_URDF)
1716
urdf/urdf_parser/urdf_model_state.cpp
1817
urdf/urdf_parser/urdf_sensor.cpp
1918
urdf/urdf_parser/world.cpp)
20-
target_include_directories(using_parser_urdf INTERFACE
21-
${CMAKE_CURRENT_SOURCE_DIR}/urdf)
22-
if (WIN32)
23-
target_compile_definitions(using_parser_urdf INTERFACE -D_USE_MATH_DEFINES)
24-
endif()
25-
else()
26-
target_link_libraries(using_parser_urdf INTERFACE
27-
IgnURDFDOM::IgnURDFDOM)
19+
set(sources ${sources} ${urdf_internal_sources})
2820
endif()
2921

3022
ign_create_core_library(SOURCES ${sources}
@@ -37,8 +29,12 @@ target_link_libraries(${PROJECT_LIBRARY_TARGET_NAME}
3729
ignition-math${IGN_MATH_VER}::ignition-math${IGN_MATH_VER}
3830
ignition-utils${IGN_UTILS_VER}::ignition-utils${IGN_UTILS_VER}
3931
PRIVATE
40-
TINYXML2::TINYXML2
41-
using_parser_urdf)
32+
TINYXML2::TINYXML2)
33+
34+
if (NOT USE_INTERNAL_URDF)
35+
target_link_libraries(${PROJECT_LIBRARY_TARGET_NAME} PRIVATE
36+
GzURDFDOM::GzURDFDOM)
37+
endif()
4238

4339
if (WIN32)
4440
target_compile_definitions(${PROJECT_LIBRARY_TARGET_NAME} PRIVATE URDFDOM_STATIC)
@@ -55,43 +51,7 @@ if (BUILD_TESTING)
5551
list(REMOVE_ITEM gtest_sources ign_TEST.cc)
5652
endif()
5753

58-
# Skip tests that don't work on Windows
59-
if (WIN32)
60-
list(REMOVE_ITEM gtest_sources Converter_TEST.cc)
61-
list(REMOVE_ITEM gtest_sources FrameSemantics_TEST.cc)
62-
list(REMOVE_ITEM gtest_sources ParamPassing_TEST.cc)
63-
list(REMOVE_ITEM gtest_sources Utils_TEST.cc)
64-
list(REMOVE_ITEM gtest_sources XmlUtils_TEST.cc)
65-
list(REMOVE_ITEM gtest_sources parser_urdf_TEST.cc)
66-
endif()
67-
68-
ign_build_tests(
69-
TYPE UNIT
70-
SOURCES ${gtest_sources}
71-
INCLUDE_DIRS
72-
${CMAKE_CURRENT_SOURCE_DIR}
73-
${PROJECT_SOURCE_DIR}/test
74-
)
75-
76-
if (TARGET UNIT_Converter_TEST)
77-
target_link_libraries(UNIT_Converter_TEST
78-
TINYXML2::TINYXML2)
79-
target_sources(UNIT_Converter_TEST PRIVATE
80-
Converter.cc
81-
EmbeddedSdf.cc
82-
XmlUtils.cc)
83-
endif()
84-
85-
if (TARGET UNIT_FrameSemantics_TEST)
86-
target_sources(UNIT_FrameSemantics_TEST PRIVATE FrameSemantics.cc Utils.cc)
87-
target_link_libraries(UNIT_FrameSemantics_TEST TINYXML2::TINYXML2)
88-
endif()
89-
90-
if (TARGET UNIT_ParamPassing_TEST)
91-
target_link_libraries(UNIT_ParamPassing_TEST
92-
TINYXML2::TINYXML2
93-
using_parser_urdf)
94-
target_sources(UNIT_ParamPassing_TEST PRIVATE
54+
add_library(library_for_tests STATIC
9555
Converter.cc
9656
EmbeddedSdf.cc
9757
FrameSemantics.cc
@@ -100,29 +60,28 @@ if (BUILD_TESTING)
10060
Utils.cc
10161
XmlUtils.cc
10262
parser.cc
103-
parser_urdf.cc)
104-
endif()
63+
parser_urdf.cc
64+
)
10565

106-
if (TARGET UNIT_Utils_TEST)
107-
target_sources(UNIT_Utils_TEST PRIVATE Utils.cc)
108-
target_link_libraries(UNIT_Utils_TEST TINYXML2::TINYXML2)
109-
endif()
66+
target_link_libraries(library_for_tests PUBLIC
67+
${PROJECT_LIBRARY_TARGET_NAME}
68+
)
11069

111-
if (TARGET UNIT_XmlUtils_TEST)
112-
target_link_libraries(UNIT_XmlUtils_TEST
113-
TINYXML2::TINYXML2)
114-
target_sources(UNIT_XmlUtils_TEST PRIVATE XmlUtils.cc)
115-
endif()
70+
# Use the include flags from the core library
71+
target_include_directories(library_for_tests PUBLIC
72+
$<TARGET_PROPERTY:${PROJECT_LIBRARY_TARGET_NAME},INCLUDE_DIRECTORIES>
73+
)
74+
75+
ign_build_tests(
76+
TYPE UNIT
77+
SOURCES ${gtest_sources}
78+
INCLUDE_DIRS
79+
${CMAKE_CURRENT_SOURCE_DIR}
80+
${PROJECT_SOURCE_DIR}/test
81+
LIB_DEPS
82+
library_for_tests
83+
)
11684

117-
if (TARGET UNIT_parser_urdf_TEST)
118-
target_link_libraries(UNIT_parser_urdf_TEST
119-
TINYXML2::TINYXML2
120-
using_parser_urdf)
121-
target_sources(UNIT_parser_urdf_TEST PRIVATE
122-
SDFExtension.cc
123-
XmlUtils.cc
124-
parser_urdf.cc)
125-
endif()
12685
endif()
12786

12887
if(NOT WIN32)

0 commit comments

Comments
 (0)