Skip to content

Commit e808f23

Browse files
committed
fix: update CMake policies and improve message target linking for ROS2
1 parent 38a04a0 commit e808f23

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

CMakeLists.txt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,10 @@ else(ROS_EDITION STREQUAL "ROS2")
210210
# Copyright(c) 2020 livoxtech limited.
211211

212212
cmake_minimum_required(VERSION 3.14)
213+
if(POLICY CMP0144)
214+
cmake_policy(SET CMP0144 NEW)
215+
set(CMAKE_POLICY_DEFAULT_CMP0144 NEW)
216+
endif()
213217
project(livox_ros_driver2)
214218

215219
# Default to C99
@@ -302,23 +306,27 @@ else(ROS_EDITION STREQUAL "ROS2")
302306

303307
target_include_directories(${PROJECT_NAME} PRIVATE ${livox_sdk_INCLUDE_DIRS})
304308

305-
# get include directories of custom msg headers
306-
if(HUMBLE_ROS STREQUAL "humble")
307-
rosidl_get_typesupport_target(cpp_typesupport_target
308-
${LIVOX_INTERFACES} "rosidl_typesupport_cpp")
309-
target_link_libraries(${PROJECT_NAME} "${cpp_typesupport_target}")
309+
# Link the generated custom message target. The generated target carries the
310+
# include directories for livox_ros_driver2/msg/*.hpp on ROS 2 distros such as
311+
# Humble and Jazzy, so do not read INTERFACE_INCLUDE_DIRECTORIES directly.
312+
if(COMMAND rosidl_get_typesupport_target)
313+
rosidl_get_typesupport_target(LIVOX_INTERFACE_TARGET
314+
${LIVOX_INTERFACES} "rosidl_typesupport_cpp")
310315
else()
311316
set(LIVOX_INTERFACE_TARGET "${LIVOX_INTERFACES}__rosidl_typesupport_cpp")
312-
add_dependencies(${PROJECT_NAME} ${LIVOX_INTERFACES})
313-
get_target_property(LIVOX_INTERFACES_INCLUDE_DIRECTORIES ${LIVOX_INTERFACE_TARGET} INTERFACE_INCLUDE_DIRECTORIES)
314317
endif()
315318

319+
if(NOT LIVOX_INTERFACE_TARGET OR NOT TARGET ${LIVOX_INTERFACE_TARGET})
320+
message(FATAL_ERROR "Failed to resolve ${LIVOX_INTERFACES} C++ typesupport target")
321+
endif()
322+
323+
add_dependencies(${PROJECT_NAME} ${LIVOX_INTERFACES})
324+
316325
# include file direcotry
317326
target_include_directories(${PROJECT_NAME} PUBLIC
318327
${PCL_INCLUDE_DIRS}
319328
${APR_INCLUDE_DIRS}
320329
${LIVOX_LIDAR_SDK_INCLUDE_DIR}
321-
${LIVOX_INTERFACES_INCLUDE_DIRECTORIES} # for custom msgs
322330
3rdparty
323331
src
324332
)
@@ -367,4 +375,4 @@ else(ROS_EDITION STREQUAL "ROS2")
367375
launch
368376
)
369377

370-
endif()
378+
endif()

0 commit comments

Comments
 (0)