MACRO(RTIDDSGEN srcList infile) # RTI (DDS) code generation is optional during migration; if RTI is not found, skip code generation. FIND_PACKAGE(RTI) if (NOT RTI_FOUND) message(STATUS "RTI not found; skipping RTI IDL code generation for ${infile}") return() endif() SET(input ${infile}) IF(NOT IS_ABSOLUTE ${input}) SET(input "${CMAKE_CURRENT_BINARY_DIR}/${input}") ENDIF() GET_FILENAME_COMPONENT(output ${infile} NAME_WE) GET_FILENAME_COMPONENT(input ${input} ABSOLUTE) SET(_ddsgen_args "") SET(output_cxx ${CMAKE_CURRENT_BINARY_DIR}/${output}.cxx ${CMAKE_CURRENT_BINARY_DIR}/${output}Plugin.cxx ) SET(output_hpp ${CMAKE_CURRENT_BINARY_DIR}/${output}.hpp ${CMAKE_CURRENT_BINARY_DIR}/${output}Plugin.hpp ) ADD_CUSTOM_COMMAND(OUTPUT ${output_cxx} ${output_hpp} COMMAND ${CMAKE_COMMAND} ARGS -E remove ${output_cxx} COMMAND ${RTI_DDSGEN_EXECUTABLE} ARGS -language "C++11" ARGS -unboundedSupport ARGS -verbosity 2 ARGS -update typefiles ARGS -stl ARGS -d ${CMAKE_CURRENT_BINARY_DIR} ARGS -inputIdl ${input} ARGS -I ${CMAKE_CURRENT_BINARY_DIR} ARGS -I ${CMAKE_CURRENT_BINARY_DIR}/../ ARGS -I ${CMAKE_CURRENT_BINARY_DIR}/../../ ARGS -I ${CMAKE_CURRENT_SOURCE_DIR} ARGS -I ${CMAKE_CURRENT_SOURCE_DIR}/../ ARGS -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${input} ${ARGN} ) IF(WIN32) SET_SOURCE_FILES_PROPERTIES(${output_cxx} PROPERTIES COMPILE_FLAGS "-DNDDS_USER_DLL_EXPORT") ELSE() SET_SOURCE_FILES_PROPERTIES(${output_cxx} PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE) ENDIF() LIST(APPEND ${srcList} ${output_cxx} ${output_hpp}) ENDMACRO()