From 7b94da9a4cfe6bf02661b824c4572063725c22da Mon Sep 17 00:00:00 2001 From: Boyan Hristov Date: Wed, 23 Aug 2023 23:20:54 +0200 Subject: [PATCH] #197 - add sources and dependencies arguments to generate_dynamic_reconfigure_options --- CHANGELOG.rst | 5 +++++ cmake/dynamic_reconfigure-macros.cmake | 21 ++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c3a2a265..c8b0b160 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,11 @@ Changelog for package dynamic_reconfigure ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Forthcoming +----------- +* add sources and dependencies arguments to generate_dynamic_reconfigure_options (`#197 `_) +* Contributors: Boyan Hristov + 1.7.3 (2022-05-05) ------------------ * Add Loader=yaml.Loader to yaml.load (`#178 `_) diff --git a/cmake/dynamic_reconfigure-macros.cmake b/cmake/dynamic_reconfigure-macros.cmake index a46bc5bf..67001340 100644 --- a/cmake/dynamic_reconfigure-macros.cmake +++ b/cmake/dynamic_reconfigure-macros.cmake @@ -6,8 +6,23 @@ macro(generate_dynamic_reconfigure_options) # ensure that package destination variables are defined catkin_destinations() + _generate_dynamic_reconfigure_options(${ARGN}) +endmacro() + +function(_generate_dynamic_reconfigure_options) + cmake_parse_arguments(ARG "" "" "SOURCES;DEPENDENCIES" ${ARGN}) + + # backwards compatibility with old interface, + # i.e. the passed arguments are a list of sources + if (NOT ARG_SOURCES AND NOT ARG_DEPENDENCIES) + set(ARG_SOURCES ${ARGN}) + set(ARG_DEPENDENCIES "") + elseif(NOT ARG_SOURCES) + message(FATAL_ERROR "generate_dynamic_reconfigure_options() called with DEPENDENCIES but no SOURCES argument.") + endif() + set(_autogen "") - foreach(_cfg ${ARGN}) + foreach(_cfg ${ARG_SOURCES}) # Construct the path to the .cfg file set(_input ${_cfg}) if(NOT IS_ABSOLUTE ${_input}) @@ -68,7 +83,7 @@ macro(generate_dynamic_reconfigure_options) add_custom_command(OUTPUT ${_output_cpp} ${_output_dox} ${_output_usage} ${_output_py} ${_output_wikidoc} COMMAND ${_cmd} - DEPENDS ${_input} ${gencfg_build_files} + DEPENDS ${_input} ${gencfg_build_files} ${ARG_DEPENDENCIES} COMMENT "Generating dynamic reconfigure files from ${_cfg}: ${_output_cpp} ${_output_py}" ) @@ -87,7 +102,7 @@ macro(generate_dynamic_reconfigure_options) list(APPEND ${PROJECT_NAME}_EXPORTED_TARGETS ${PROJECT_NAME}_gencfg) dynreconf_called() -endmacro() +endfunction() macro(dynreconf_called) if(NOT dynamic_reconfigure_CALLED)