@@ -5,10 +5,9 @@ gz_get_libsources_and_unittests(sources gtest_sources)
55# Add the source file auto-generated into the build folder from sdf/CMakeLists.txt
66list (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
109if (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,67 +16,48 @@ 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- GzURDFDOM::GzURDFDOM)
19+ set (sources ${sources} ${urdf_internal_sources} )
2820endif ()
2921
30- if (BUILD_TESTING)
31- # Build this test file only if Gazebo Tools is installed.
32- if (NOT GZ_PROGRAM)
33- list (REMOVE_ITEM gtest_sources gz_TEST.cc)
34- endif ()
35-
36- # Skip tests that don't work on Windows
37- if (WIN32 )
38- list (REMOVE_ITEM gtest_sources Converter_TEST.cc)
39- list (REMOVE_ITEM gtest_sources FrameSemantics_TEST.cc)
40- list (REMOVE_ITEM gtest_sources ParamPassing_TEST.cc)
41- list (REMOVE_ITEM gtest_sources Utils_TEST.cc)
42- list (REMOVE_ITEM gtest_sources XmlUtils_TEST.cc)
43- list (REMOVE_ITEM gtest_sources parser_urdf_TEST.cc)
44- endif ()
45-
46- gz_build_tests(
47- TYPE UNIT
48- SOURCES ${gtest_sources}
49- INCLUDE_DIRS
50- ${CMAKE_CURRENT_SOURCE_DIR}
51- ${PROJECT_SOURCE_DIR} /test
22+ gz_create_core_library(SOURCES ${sources}
23+ CXX_STANDARD 17
24+ LEGACY_PROJECT_PREFIX SDFormat
5225 )
5326
54- if (TARGET UNIT_Converter_TEST)
55- target_link_libraries (UNIT_Converter_TEST
56- TINYXML2::TINYXML2)
57- target_sources (UNIT_Converter_TEST PRIVATE
58- Converter.cc
59- EmbeddedSdf.cc
60- Utils.cc
61- XmlUtils.cc)
27+ target_link_libraries (${PROJECT_LIBRARY_TARGET_NAME}
28+ PUBLIC
29+ gz-math${GZ_MATH_VER} ::gz-math${GZ_MATH_VER}
30+ gz-utils${GZ_UTILS_VER} ::gz-utils${GZ_UTILS_VER}
31+ PRIVATE
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+ GzURDFDOM::GzURDFDOM)
6243 endif ()
6344
64- if (TARGET UNIT_gz_TEST)
65- target_compile_definitions (UNIT_gz_TEST PRIVATE
66- -DGZ_PATH="${GZ_PROGRAM} "
67- -DDETAIL_GZ_CONFIG_PATH="${CMAKE_BINARY_DIR} /test/conf/$<CONFIG>"
68- -DGZ_TEST_LIBRARY_PATH="${PROJECT_BINARY_DIR} /src" )
69- endif ()
45+ if (WIN32 AND USE_INTERNAL_URDF)
46+ target_compile_definitions (${PROJECT_LIBRARY_TARGET_NAME} PRIVATE URDFDOM_STATIC)
47+ endif ()
48+
49+ target_include_directories (${PROJECT_LIBRARY_TARGET_NAME}
50+ PRIVATE
51+ ${CMAKE_CURRENT_SOURCE_DIR}
52+ )
7053
71- if (TARGET UNIT_FrameSemantics_TEST)
72- target_sources (UNIT_FrameSemantics_TEST PRIVATE FrameSemantics.cc Utils.cc)
73- target_link_libraries (UNIT_FrameSemantics_TEST TINYXML2::TINYXML2)
54+ if (BUILD_TESTING)
55+ # Build this test file only if Gazebo Tools is installed.
56+ if (NOT GZ_PROGRAM)
57+ list (REMOVE_ITEM gtest_sources gz_TEST.cc)
7458 endif ()
7559
76- if (TARGET UNIT_ParamPassing_TEST)
77- target_link_libraries (UNIT_ParamPassing_TEST
78- TINYXML2::TINYXML2
79- using_parser_urdf)
80- target_sources (UNIT_ParamPassing_TEST PRIVATE
60+ add_library (library_for_tests OBJECT
8161 Converter.cc
8262 EmbeddedSdf.cc
8363 FrameSemantics.cc
@@ -86,51 +66,47 @@ if (BUILD_TESTING)
8666 Utils.cc
8767 XmlUtils.cc
8868 parser.cc
89- parser_urdf.cc)
90- endif ( )
69+ parser_urdf.cc
70+ )
9171
92- if (TARGET UNIT_Utils_TEST)
93- target_sources (UNIT_Utils_TEST PRIVATE Utils.cc)
94- target_link_libraries (UNIT_Utils_TEST TINYXML2::TINYXML2)
72+ if (USE_INTERNAL_URDF)
73+ target_sources (library_for_tests PRIVATE ${urdf_internal_sources} )
9574 endif ()
9675
97- if (TARGET UNIT_XmlUtils_TEST)
98- target_link_libraries (UNIT_XmlUtils_TEST
99- TINYXML2::TINYXML2)
100- target_sources (UNIT_XmlUtils_TEST PRIVATE XmlUtils.cc)
101- endif ()
76+ # Link against the publicly and privately linked libraries of the core library
77+ target_link_libraries (library_for_tests
78+ $<TARGET_PROPERTY:${PROJECT_LIBRARY_TARGET_NAME} ,LINK_LIBRARIES >
79+ )
10280
103- if (TARGET UNIT_parser_urdf_TEST)
104- target_link_libraries (UNIT_parser_urdf_TEST
105- TINYXML2::TINYXML2
106- using_parser_urdf)
107- target_sources (UNIT_parser_urdf_TEST PRIVATE
108- SDFExtension.cc
109- XmlUtils.cc
110- parser_urdf.cc)
111- endif ()
112- endif ()
81+ # Use the include flags from the core library
82+ target_include_directories (library_for_tests PUBLIC
83+ $<TARGET_PROPERTY:${PROJECT_LIBRARY_TARGET_NAME} ,INCLUDE_DIRECTORIES >
84+ )
11385
114- gz_create_core_library(SOURCES ${sources}
115- CXX_STANDARD 17
116- LEGACY_PROJECT_PREFIX SDFormat
86+ # Use the private compile flags from the core library. Also set GZ_SDFORMAT_STATIC_DEFINE to avoid
87+ # inconsistent linkage issues on windows. Setting the define will cause the SDFORMAT_VISIBLE/SDFORMAT_HIDDEN macros
88+ # to expand to nothing when building a static library
89+ target_compile_definitions (library_for_tests PUBLIC
90+ $<TARGET_PROPERTY:${PROJECT_LIBRARY_TARGET_NAME} ,COMPILE_DEFINITIONS >
91+ -DGZ_SDFORMAT_STATIC_DEFINE
11792 )
11893
119- target_link_libraries (${PROJECT_LIBRARY_TARGET_NAME}
120- PUBLIC
121- gz-math${GZ_MATH_VER} ::gz-math${GZ_MATH_VER}
122- gz-utils${GZ_UTILS_VER} ::gz-utils${GZ_UTILS_VER}
123- PRIVATE
124- TINYXML2::TINYXML2
125- using_parser_urdf)
94+ gz_build_tests(
95+ TYPE UNIT
96+ SOURCES ${gtest_sources}
97+ INCLUDE_DIRS
98+ ${CMAKE_CURRENT_SOURCE_DIR}
99+ ${PROJECT_SOURCE_DIR} /test
100+ LIB_DEPS
101+ library_for_tests
102+ )
126103
127- if (WIN32 )
128- target_compile_definitions (${PROJECT_LIBRARY_TARGET_NAME} PRIVATE URDFDOM_STATIC)
104+ if (TARGET UNIT_gz_TEST)
105+ target_compile_definitions (UNIT_gz_TEST PRIVATE
106+ -DGZ_PATH="${GZ_PROGRAM} "
107+ -DDETAIL_GZ_CONFIG_PATH="${CMAKE_BINARY_DIR} /test/conf/$<CONFIG>"
108+ -DGZ_TEST_LIBRARY_PATH="${PROJECT_BINARY_DIR} /src" )
109+ endif ()
129110endif ()
130111
131- target_include_directories (${PROJECT_LIBRARY_TARGET_NAME}
132- PRIVATE
133- ${CMAKE_CURRENT_SOURCE_DIR}
134- )
135-
136112add_subdirectory (cmd)
0 commit comments