Auto generation of ros messages: Cmaklists add_message_files not detecting variable
Hi,
I'm autogenerating ros-messages (ROS1) using a python script. Since there are many (about 100+) ros messages, I'm trying to automate the CMakelists.txt add_message_files
. Tried the following two options, but neither is working as needed.
add_message_files(DIRECTORY msg)
this method works well when compiling the package for the first time, but it doesn't track any new*.msg
files that I create later on or update the existing*.msg
files. I have to clear the build and build the package anew.Alternately, I tried reading the list of *.msg files and storing it a variable as follows,
file(GLOB msg_files CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/msg/*.msg") set(MSG_FILE_NAMES "") list (SORT msg_files) foreach (_variableName ${msg_files}) get_filename_component(msg_name ${_variableName} NAME) message(STATUS "${msg_name}") set(MSG_FILE_NAMES "${MSG_FILE_NAMES} ${msg_name}") endforeach() message(STATUS "${MSG_FILE_NAMES}") add_message_files( FILES ${MSG_FILES_NAMES} )
but CMakelists does not recognize the variable MSG_FILES_NAMES.
I get
CMake Warning at *-genmsg.cmake:3 (message):
Invoking generate_messages() without having added any message or service
file before.
You should either add add_message_files() and/or add_service_files() calls
or remove the invocation of generate_messages().
I also modified the line set(MSG_FILE_NAMES "${MSG_FILE_NAMES} ${msg_name}")
with list(APPEND ${MSG_FILE_NAMES} ${msg_name})
and still the same warning.
One other alternative I can think of is modifying the CMakeLists.txt
file externally and updating it with new *.msg files every time I generate new files.
Look for forwarding to any suggestions/thoughts.
Thank you