Skip to content

Commit

Permalink
Add rosidl_get_typesupport_target and deprecate rosidl_target_interfa…
Browse files Browse the repository at this point in the history
…ces (#606)

* Add rosidl_get_typesupport_target

Also deprecate rosidl_target_interfaces().
Getting the target name allows consumers to choose the keyword arguments
that they pass to target_link_libraries()

Signed-off-by: Shane Loretz <[email protected]>

* Shorten line length

Signed-off-by: Shane Loretz <[email protected]>

* Remove trailing whitespace

Signed-off-by: Shane Loretz <[email protected]>
  • Loading branch information
sloretz authored Aug 4, 2021
1 parent a1eb6ed commit b3e3e90
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
40 changes: 40 additions & 0 deletions rosidl_cmake/cmake/rosidl_get_typesupport_target.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2021 Open Source Robotics Foundation, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Get the name of a Typesupport target so it can be used to depend on
# generated messages in the same package that generated them.
#
# :param var: A name of a variable to store the typesupport target name
# :param generate_interfaces_target: the target name passed to
# rosidl_generate_interfaces
# :type generate_interfaces_target: string
# :param typesupport_name: the package name of the type support
# :type typesupport_name: string
#
# @public
#
function(rosidl_get_typesupport_target var generate_interfaces_target typesupport_name)
if(NOT TARGET ${generate_interfaces_target})
message(FATAL_ERROR
"${generate_interfaces_target} is not a CMake target. Maybe rosidl_generate_interfaces was given a different target name?")
endif()

set(output_target "${generate_interfaces_target}__${typesupport_name}")

if(NOT TARGET ${output_target})
message(FATAL_ERROR "${output_target} is not a CMake target - maybe the typesupport '${typesupport_name}' doesn't exist?")
endif()

set("${var}" "${output_target}" PARENT_SCOPE)
endfunction()
1 change: 1 addition & 0 deletions rosidl_cmake/cmake/rosidl_target_interfaces.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
# @public
#
function(rosidl_target_interfaces target interface_target typesupport_name)
message(DEPRECATION "Use rosidl_get_typesupport_target() and target_link_libraries() instead of rosidl_target_interfaces()")
if(ARGN)
message(FATAL_ERROR
"rosidl_target_interfaces() called with unused arguments: ${ARGN}")
Expand Down
1 change: 1 addition & 0 deletions rosidl_cmake/rosidl_cmake-extras.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ endmacro()
find_package(rosidl_adapter) # not required, being used when available

include("${rosidl_cmake_DIR}/rosidl_generate_interfaces.cmake")
include("${rosidl_cmake_DIR}/rosidl_get_typesupport_target.cmake")
include("${rosidl_cmake_DIR}/rosidl_target_interfaces.cmake")
include("${rosidl_cmake_DIR}/rosidl_write_generator_arguments.cmake")
include("${rosidl_cmake_DIR}/string_camel_case_to_lower_case_underscore.cmake")
Expand Down

0 comments on commit b3e3e90

Please sign in to comment.