Skip to content

Commit f4bdd56

Browse files
Fix from-source build with missing dependencies (#242)
Using a variable for dependencies is cleaner for linking and export. Fixes this build error: ```bash --- stderr: spacenav CMake Error at CMakeLists.txt:22 (add_library): Target "spacenav" links to target "rclcpp_components::component" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing? ```
1 parent a89bc46 commit f4bdd56

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

spacenav/CMakeLists.txt

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,30 @@ find_package(rclcpp_components REQUIRED)
1919
find_package(sensor_msgs REQUIRED)
2020
find_package(SPNAV REQUIRED)
2121

22+
# Convenience variable for dependencies
23+
set(THIS_PACKAGE_INCLUDE_DEPENDS
24+
geometry_msgs
25+
rclcpp
26+
rclcpp_components
27+
sensor_msgs
28+
)
29+
2230
add_library(spacenav
2331
SHARED
2432
src/spacenav.cpp)
33+
2534
target_include_directories(spacenav PUBLIC
26-
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
27-
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
35+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
36+
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
2837
${spnav_INCLUDE_DIR})
29-
target_link_libraries(spacenav PUBLIC
30-
rclcpp::rclcpp
31-
${geometry_msgs_TARGETS}
32-
${sensor_msgs_TARGETS}
33-
spnav)
34-
target_link_libraries(spacenav PRIVATE
35-
rclcpp_components::component)
38+
39+
ament_target_dependencies(spacenav
40+
${THIS_PACKAGE_INCLUDE_DEPENDS}
41+
)
42+
43+
target_link_libraries(spacenav
44+
spnav
45+
)
3646

3747
install(TARGETS spacenav EXPORT export_spacenav
3848
ARCHIVE DESTINATION lib
@@ -53,10 +63,8 @@ install(DIRECTORY
5363

5464
ament_export_targets(export_spacenav)
5565
ament_export_dependencies(
56-
"rclcpp"
57-
"geometry_msgs"
58-
"sensor_msgs"
59-
"spnav")
66+
${THIS_PACKAGE_INCLUDE_DEPENDS}
67+
)
6068

6169
install(TARGETS spacenav
6270
DESTINATION lib

0 commit comments

Comments
 (0)