Skip to content

Commit 2c44075

Browse files
committed
Use CMake targets for dependencies
1 parent 30c9918 commit 2c44075

File tree

35 files changed

+196
-322
lines changed

35 files changed

+196
-322
lines changed

CMakeLists.txt

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,33 +88,77 @@ foreach(target IN LISTS TARGETS)
8888
if(NOT target STREQUAL "util_rtai" AND NOT target STREQUAL "util_xenomai")
8989
list(APPEND RL_LIBRARIES "rl::${target}")
9090
endif()
91+
get_target_property(TARGET_INTERFACE_LINK_LIBRARIES ${target} INTERFACE_LINK_LIBRARIES)
92+
if(TARGET_INTERFACE_LINK_LIBRARIES)
93+
foreach(library IN LISTS TARGET_INTERFACE_LINK_LIBRARIES)
94+
if(library MATCHES "([A-Za-z0-9_.+-]*)::([A-Za-z0-9_.+-]*)")
95+
list(APPEND PACKAGES ${CMAKE_MATCH_1})
96+
endif()
97+
endforeach()
98+
endif()
99+
endforeach()
100+
101+
list(REMOVE_DUPLICATES PACKAGES)
102+
list(SORT PACKAGES)
103+
104+
foreach(package IN LISTS PACKAGES)
105+
list(APPEND FIND_DEPENDENCIES "find_dependency(${package})")
106+
list(APPEND MODULES ${package})
107+
if(package STREQUAL "fcl")
108+
list(APPEND MODULES Boost ccd Eigen3 octomap)
109+
elseif(package STREQUAL "LibXml2")
110+
list(APPEND MODULES Iconv ICU LibLZMA Threads ZLIB)
111+
elseif(package STREQUAL "LibXslt")
112+
list(APPEND MODULES LibXml2)
113+
elseif(package STREQUAL "ODE")
114+
list(APPEND MODULES ccd Threads)
115+
endif()
91116
endforeach()
92117

118+
list(REMOVE_DUPLICATES MODULES)
119+
list(SORT MODULES)
120+
121+
foreach(module IN LISTS MODULES)
122+
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Find${module}.cmake)
123+
file(
124+
COPY cmake/Find${module}.cmake
125+
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/rl
126+
)
127+
install(
128+
FILES cmake/Find${module}.cmake
129+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/rl-${PROJECT_VERSION}
130+
COMPONENT development
131+
)
132+
endif()
133+
endforeach()
134+
135+
string(REPLACE ";" "\n" FIND_DEPENDENCIES "${FIND_DEPENDENCIES}")
136+
93137
export(
94138
TARGETS ${TARGETS}
95139
NAMESPACE rl::
96-
FILE ${CMAKE_CURRENT_BINARY_DIR}/rl-export.cmake
140+
FILE ${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/rl/rl-export.cmake
97141
)
98142

99143
configure_package_config_file(
100-
rl-config.cmake.in rl-config.cmake
144+
rl-config.cmake.in lib/cmake/rl/rl-config.cmake
101145
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/rl-${PROJECT_VERSION}
102146
)
103147

104148
install(
105-
FILES ${CMAKE_CURRENT_BINARY_DIR}/rl-config.cmake
149+
FILES ${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/rl/rl-config.cmake
106150
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/rl-${PROJECT_VERSION}
107151
COMPONENT development
108152
)
109153

110154
write_basic_package_version_file(
111-
${CMAKE_CURRENT_BINARY_DIR}/rl-config-version.cmake
155+
${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/rl/rl-config-version.cmake
112156
VERSION ${PROJECT_VERSION}
113157
COMPATIBILITY ExactVersion
114158
)
115159

116160
install(
117-
FILES ${CMAKE_CURRENT_BINARY_DIR}/rl-config-version.cmake
161+
FILES ${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/rl/rl-config-version.cmake
118162
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/rl-${PROJECT_VERSION}
119163
COMPONENT development
120164
)

demos/rlCoachKin/CMakeLists.txt

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@ if(RL_USE_QT5 AND SoQt_HAVE_QT5)
66
endif()
77

88
if(Qt5_FOUND)
9-
set(QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Widgets_LIBRARIES})
109
set(QT_FOUND Qt5_FOUND)
1110
else()
1211
set(QT_USE_IMPORTED_TARGETS ON)
1312
find_package(Qt4 COMPONENTS QtCore QtGui QtNetwork QtOpenGL)
14-
set(QT_USE_QTMAIN ON)
15-
include(${QT_USE_FILE})
1613
endif()
1714

1815
set(CMAKE_AUTOMOC ON)
@@ -52,29 +49,27 @@ if(QT_FOUND AND SoQt_FOUND)
5249
${rl_BINARY_DIR}/robotics-library.rc
5350
)
5451

55-
target_compile_definitions(
56-
rlCoachKin
57-
PUBLIC
58-
${SoQt_DEFINITIONS}
59-
)
60-
61-
target_include_directories(
62-
rlCoachKin
63-
PUBLIC
64-
${OPENGL_INCLUDE_DIR}
65-
${SoQt_INCLUDE_DIRS}
66-
)
67-
6852
target_link_libraries(
6953
rlCoachKin
7054
kin
7155
math
7256
sg
73-
${OPENGL_LIBRARIES}
74-
${QT_LIBRARIES}
75-
${SoQt_LIBRARIES}
57+
SoQt::SoQt
7658
)
7759

60+
if(TARGET OpenGL::GL)
61+
target_link_libraries(rlCoachKin OpenGL::GL)
62+
else()
63+
target_include_directories(rlCoachKin PRIVATE ${OPENGL_INCLUDE_DIRS})
64+
target_link_libraries(rlCoachKin ${OPENGL_LIBRARIES})
65+
endif()
66+
67+
if(Qt5_FOUND)
68+
target_link_libraries(rlCoachKin Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network Qt5::Widgets)
69+
elseif(Qt4_FOUND)
70+
target_link_libraries(rlCoachKin Qt4::QtCore Qt4::QtGui Qt4::QtNetwork Qt4::QtOpenGL)
71+
endif()
72+
7873
set_target_properties(
7974
rlCoachKin
8075
PROPERTIES

demos/rlCoachMdl/CMakeLists.txt

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@ if(RL_USE_QT5 AND SoQt_HAVE_QT5)
66
endif()
77

88
if(Qt5_FOUND)
9-
set(QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Widgets_LIBRARIES})
109
set(QT_FOUND Qt5_FOUND)
1110
else()
1211
set(QT_USE_IMPORTED_TARGETS ON)
1312
find_package(Qt4 COMPONENTS QtCore QtGui QtNetwork QtOpenGL)
14-
set(QT_USE_QTMAIN ON)
15-
include(${QT_USE_FILE})
1613
endif()
1714

1815
set(CMAKE_AUTOMOC ON)
@@ -52,29 +49,27 @@ if(QT_FOUND AND SoQt_FOUND)
5249
${rl_BINARY_DIR}/robotics-library.rc
5350
)
5451

55-
target_compile_definitions(
56-
rlCoachMdl
57-
PUBLIC
58-
${SoQt_DEFINITIONS}
59-
)
60-
61-
target_include_directories(
62-
rlCoachMdl
63-
PUBLIC
64-
${OPENGL_INCLUDE_DIR}
65-
${SoQt_INCLUDE_DIRS}
66-
)
67-
6852
target_link_libraries(
6953
rlCoachMdl
7054
math
7155
mdl
7256
sg
73-
${OPENGL_LIBRARIES}
74-
${QT_LIBRARIES}
75-
${SoQt_LIBRARIES}
57+
SoQt::SoQt
7658
)
7759

60+
if(TARGET OpenGL::GL)
61+
target_link_libraries(rlCoachMdl OpenGL::GL)
62+
else()
63+
target_include_directories(rlCoachMdl PRIVATE ${OPENGL_INCLUDE_DIRS})
64+
target_link_libraries(rlCoachMdl ${OPENGL_LIBRARIES})
65+
endif()
66+
67+
if(Qt5_FOUND)
68+
target_link_libraries(rlCoachMdl Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network Qt5::Widgets)
69+
elseif(Qt4_FOUND)
70+
target_link_libraries(rlCoachMdl Qt4::QtCore Qt4::QtGui Qt4::QtNetwork Qt4::QtOpenGL)
71+
endif()
72+
7873
set_target_properties(
7974
rlCoachMdl
8075
PROPERTIES

demos/rlCollisionDemo/CMakeLists.txt

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@ if(RL_USE_QT5 AND SoQt_HAVE_QT5)
66
endif()
77

88
if(Qt5_FOUND)
9-
set(QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${Qt5Widgets_LIBRARIES})
109
set(QT_FOUND Qt5_FOUND)
1110
else()
1211
set(QT_USE_IMPORTED_TARGETS ON)
1312
find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL)
14-
set(QT_USE_QTMAIN ON)
15-
include(${QT_USE_FILE})
1613
endif()
1714

1815
set(CMAKE_AUTOMOC ON)
@@ -44,27 +41,25 @@ if(QT_FOUND AND SoQt_FOUND AND (RL_BUILD_SG_BULLET OR RL_BUILD_SG_FCL OR RL_BUIL
4441
${rl_BINARY_DIR}/robotics-library.rc
4542
)
4643

47-
target_compile_definitions(
48-
rlCollisionDemo
49-
PUBLIC
50-
${SoQt_DEFINITIONS}
51-
)
52-
53-
target_include_directories(
54-
rlCollisionDemo
55-
PUBLIC
56-
${OPENGL_INCLUDE_DIR}
57-
${SoQt_INCLUDE_DIRS}
58-
)
59-
6044
target_link_libraries(
6145
rlCollisionDemo
6246
sg
63-
${OPENGL_LIBRARIES}
64-
${QT_LIBRARIES}
65-
${SoQt_LIBRARIES}
47+
SoQt::SoQt
6648
)
6749

50+
if(TARGET OpenGL::GL)
51+
target_link_libraries(rlCollisionDemo OpenGL::GL)
52+
else()
53+
target_include_directories(rlCollisionDemo PRIVATE ${OPENGL_INCLUDE_DIRS})
54+
target_link_libraries(rlCollisionDemo ${OPENGL_LIBRARIES})
55+
endif()
56+
57+
if(Qt5_FOUND)
58+
target_link_libraries(rlCollisionDemo Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Widgets)
59+
elseif(Qt4_FOUND)
60+
target_link_libraries(rlCollisionDemo Qt4::QtCore Qt4::QtGui Qt4::QtOpenGL)
61+
endif()
62+
6863
set_target_properties(
6964
rlCollisionDemo
7065
PROPERTIES

demos/rlDynamics1Demo/CMakeLists.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@ add_executable(
66
${rl_BINARY_DIR}/robotics-library.rc
77
)
88

9-
target_include_directories(
10-
rlDynamics1Demo
11-
PUBLIC
12-
${Boost_INCLUDE_DIRS}
13-
)
14-
159
target_link_libraries(
1610
rlDynamics1Demo
1711
mdl
12+
Boost::headers
1813
)

demos/rlDynamics2Demo/CMakeLists.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@ add_executable(
66
${rl_BINARY_DIR}/robotics-library.rc
77
)
88

9-
target_include_directories(
10-
rlDynamics2Demo
11-
PUBLIC
12-
${Boost_INCLUDE_DIRS}
13-
)
14-
159
target_link_libraries(
1610
rlDynamics2Demo
1711
mdl
12+
Boost::headers
1813
)

demos/rlEulerAnglesDemo/CMakeLists.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@ add_executable(
66
${rl_BINARY_DIR}/robotics-library.rc
77
)
88

9-
target_include_directories(
10-
rlEulerAnglesDemo
11-
PUBLIC
12-
${Boost_INCLUDE_DIRS}
13-
)
14-
159
target_link_libraries(
1610
rlEulerAnglesDemo
1711
math
12+
Boost::headers
1813
)

demos/rlInversePositionDemo/CMakeLists.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,10 @@ add_executable(
66
${rl_BINARY_DIR}/robotics-library.rc
77
)
88

9-
target_include_directories(
10-
rlInversePositionDemo
11-
PUBLIC
12-
${Boost_INCLUDE_DIRS}
13-
)
14-
159
target_link_libraries(
1610
rlInversePositionDemo
1711
hal
1812
mdl
1913
util
14+
Boost::headers
2015
)

demos/rlJacobianDemo/CMakeLists.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@ add_executable(
66
${rl_BINARY_DIR}/robotics-library.rc
77
)
88

9-
target_include_directories(
10-
rlJacobianDemo
11-
PUBLIC
12-
${Boost_INCLUDE_DIRS}
13-
)
14-
159
target_link_libraries(
1610
rlJacobianDemo
1711
mdl
12+
Boost::headers
1813
)

demos/rlPlanDemo/CMakeLists.txt

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,10 @@ if(RL_USE_QT5 AND SoQt_HAVE_QT5)
77
endif()
88

99
if(Qt5_FOUND)
10-
set(QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${Qt5PrintSupport_LIBRARIES} ${Qt5Widgets_LIBRARIES})
1110
set(QT_FOUND Qt5_FOUND)
1211
else()
1312
set(QT_USE_IMPORTED_TARGETS ON)
1413
find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL)
15-
set(QT_USE_QTMAIN ON)
16-
include(${QT_USE_FILE})
1714
endif()
1815

1916
set(CMAKE_AUTOMOC ON)
@@ -59,29 +56,27 @@ if(QT_FOUND AND SoQt_FOUND AND (RL_BUILD_SG_BULLET OR RL_BUILD_SG_FCL OR RL_BUIL
5956
${rl_BINARY_DIR}/robotics-library.rc
6057
)
6158

62-
target_compile_definitions(
63-
rlPlanDemo
64-
PUBLIC
65-
${SoQt_DEFINITIONS}
66-
)
67-
68-
target_include_directories(
69-
rlPlanDemo
70-
PUBLIC
71-
${Boost_INCLUDE_DIRS}
72-
${OPENGL_INCLUDE_DIR}
73-
${SoQt_INCLUDE_DIRS}
74-
)
75-
7659
target_link_libraries(
7760
rlPlanDemo
7861
plan
7962
kin
8063
sg
81-
${OPENGL_LIBRARIES}
82-
${QT_LIBRARIES}
83-
${SoQt_LIBRARIES}
64+
Boost::headers
65+
SoQt::SoQt
8466
)
67+
68+
if(TARGET OpenGL::GL)
69+
target_link_libraries(rlPlanDemo OpenGL::GL)
70+
else()
71+
target_include_directories(rlPlanDemo PRIVATE ${OPENGL_INCLUDE_DIRS})
72+
target_link_libraries(rlPlanDemo ${OPENGL_LIBRARIES})
73+
endif()
74+
75+
if(Qt5_FOUND)
76+
target_link_libraries(rlPlanDemo Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::PrintSupport Qt5::Widgets)
77+
elseif(Qt4_FOUND)
78+
target_link_libraries(rlPlanDemo Qt4::QtCore Qt4::QtGui Qt4::QtOpenGL)
79+
endif()
8580

8681
set_target_properties(
8782
rlPlanDemo

0 commit comments

Comments
 (0)