diff --git a/rclcpp_components/cmake/rclcpp_components_register_node.cmake b/rclcpp_components/cmake/rclcpp_components_register_node.cmake index 2a4cbe19bc..930bd03de5 100644 --- a/rclcpp_components/cmake/rclcpp_components_register_node.cmake +++ b/rclcpp_components/cmake/rclcpp_components_register_node.cmake @@ -13,7 +13,7 @@ # limitations under the License. # # usage: rclcpp_components_register_node( -# PLUGIN EXECUTABLE ) +# PLUGIN EXECUTABLE ) # # Register an rclcpp component with the ament # resource index and create an executable. @@ -26,39 +26,22 @@ # :type EXECUTABLE: string # macro(rclcpp_components_register_node target) - cmake_parse_arguments( - ARGS - "" - "PLUGIN;EXECUTABLE" - "" - ${ARGN}) + cmake_parse_arguments(ARGS "" "PLUGIN;EXECUTABLE" "" ${ARGN}) set(component ${ARGS_PLUGIN}) set(node ${ARGS_EXECUTABLE}) _rclcpp_components_register_package_hook() - set(_path "lib") + set(_path "lib") + set(library_name "$") if(WIN32) set(_path "bin") - set(library_name ${target}.dll) - elseif(APPLE) - set(library_name lib${target}.dylib) - else() - set(library_name lib${target}.so) endif() set(_RCLCPP_COMPONENTS__NODES "${_RCLCPP_COMPONENTS__NODES}${component};${_path}/$\n") configure_file(${rclcpp_components_NODE_TEMPLATE} - ${PROJECT_BINARY_DIR}/rclcpp_components/node_main_${node}.cpp @ONLY) + ${PROJECT_BINARY_DIR}/node_main_configured.cpp.in) + file(GENERATE OUTPUT ${PROJECT_BINARY_DIR}/rclcpp_components/node_main_${node}.cpp + INPUT ${PROJECT_BINARY_DIR}/node_main_configured.cpp.in) add_executable(${node} ${PROJECT_BINARY_DIR}/rclcpp_components/node_main_${node}.cpp) - set(lib ${target}) - # Needed so symbols aren't dropped if not used - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(lib - "-Wl,--no-as-needed" - ${target} - "-Wl,--as-needed") - endif() - target_link_libraries(${node} - ${lib}) ament_target_dependencies(${node} "rclcpp" "class_loader"