@@ -5,10 +5,9 @@ ign_get_libsources_and_unittests(sources gtest_sources)
5
5
# Add the source file auto-generated into the build folder from sdf/CMakeLists.txt
6
6
list (APPEND sources EmbeddedSdf.cc )
7
7
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
10
9
if (USE_INTERNAL_URDF )
11
- set (sources ${sources}
10
+ set (urdf_internal_sources
12
11
urdf/urdf_parser/model.cpp
13
12
urdf/urdf_parser/link.cpp
14
13
urdf/urdf_parser/joint.cpp
@@ -17,14 +16,7 @@ if (USE_INTERNAL_URDF)
17
16
urdf/urdf_parser/urdf_model_state.cpp
18
17
urdf/urdf_parser/urdf_sensor.cpp
19
18
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} )
28
20
endif ()
29
21
30
22
ign_create_core_library (SOURCES ${sources}
@@ -37,8 +29,18 @@ target_link_libraries(${PROJECT_LIBRARY_TARGET_NAME}
37
29
ignition-math${IGN_MATH_VER}::ignition-math${IGN_MATH_VER}
38
30
ignition-utils${IGN_UTILS_VER}::ignition-utils${IGN_UTILS_VER}
39
31
PRIVATE
40
- TINYXML2::TINYXML2
41
- using_parser_urdf )
32
+ TINYXML2::TINYXML2 )
33
+
34
+ if (USE_INTERNAL_URDF )
35
+ target_include_directories (${PROJECT_LIBRARY_TARGET_NAME} PRIVATE
36
+ ${CMAKE_CURRENT_SOURCE_DIR} /urdf )
37
+ if (WIN32 )
38
+ target_compile_definitions (${PROJECT_LIBRARY_TARGET_NAME} PRIVATE -D_USE_MATH_DEFINES )
39
+ endif ()
40
+ else ()
41
+ target_link_libraries (${PROJECT_LIBRARY_TARGET_NAME} PRIVATE
42
+ IgnURDFDOM::IgnURDFDOM )
43
+ endif ()
42
44
43
45
if (WIN32 )
44
46
target_compile_definitions (${PROJECT_LIBRARY_TARGET_NAME} PRIVATE URDFDOM_STATIC )
@@ -55,43 +57,7 @@ if (BUILD_TESTING)
55
57
list (REMOVE_ITEM gtest_sources ign_TEST.cc )
56
58
endif ()
57
59
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
60
+ add_library (library_for_tests STATIC
95
61
Converter.cc
96
62
EmbeddedSdf.cc
97
63
FrameSemantics.cc
@@ -100,29 +66,35 @@ if (BUILD_TESTING)
100
66
Utils.cc
101
67
XmlUtils.cc
102
68
parser.cc
103
- parser_urdf.cc )
104
- endif ( )
69
+ parser_urdf.cc
70
+ )
105
71
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 ()
72
+ target_link_libraries (library_for_tests PUBLIC
73
+ ${PROJECT_LIBRARY_TARGET_NAME}
74
+ # Also link against the privately linked libraries of the core library
75
+ $< TARGET_PROPERTY:${PROJECT_LIBRARY_TARGET_NAME} ,LINK_LIBRARIES>
76
+ )
110
77
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 ()
78
+ # Use the private include flags from the core library
79
+ target_include_directories (library_for_tests PUBLIC
80
+ $< TARGET_PROPERTY:${PROJECT_LIBRARY_TARGET_NAME} ,INCLUDE_DIRECTORIES>
81
+ )
82
+
83
+ # Use the private comopile flags from the core library
84
+ target_compile_definitions (library_for_tests PUBLIC
85
+ $< TARGET_PROPERTY:${PROJECT_LIBRARY_TARGET_NAME} ,COMPILE_DEFINITIONS>
86
+ )
87
+
88
+ ign_build_tests (
89
+ TYPE UNIT
90
+ SOURCES ${gtest_sources}
91
+ INCLUDE_DIRS
92
+ ${CMAKE_CURRENT_SOURCE_DIR}
93
+ ${PROJECT_SOURCE_DIR} /test
94
+ LIB_DEPS
95
+ library_for_tests
96
+ )
116
97
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 ()
126
98
endif ()
127
99
128
100
if (NOT WIN32 )
0 commit comments