diff --git a/lib/cmake/modules/ReflectionGenerator.cmake b/lib/cmake/modules/ReflectionGenerator.cmake index 2ef8e09..237f148 100644 --- a/lib/cmake/modules/ReflectionGenerator.cmake +++ b/lib/cmake/modules/ReflectionGenerator.cmake @@ -73,7 +73,7 @@ function (add_reflection_generator_invocation) # parse arguments set(OPTIONAL_ARGS) set(ONE_VALUE_ARGS OUTPUT_DIRECTORY JSON_VISIBILITY BINARY_VISBILITY) - set(MULTI_VALUE_ARGS INPUT_FILES GENERATORS OUTPUT_LISTS CLANG_OPTIONS CLANG_OPTIONS_FROM_TARGETS JSON_CLASSES) + set(MULTI_VALUE_ARGS INPUT_FILES GENERATORS OUTPUT_LISTS CLANG_OPTIONS CLANG_OPTIONS_FROM_TARGETS CLANG_OPTIONS_FROM_DEPENDENCIES JSON_CLASSES) cmake_parse_arguments(ARGS "${OPTIONAL_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN}) # determine file name or file path if none specified @@ -130,6 +130,22 @@ function (add_reflection_generator_invocation) list(APPEND ARGS_CLANG_OPTIONS "$<$:-I$-I>>") endforeach () endif () + if (ARGS_CLANG_OPTIONS_FROM_DEPENDENCIES) + foreach (TARGET_NAME ${ARGS_CLANG_OPTIONS_FROM_DEPENDENCIES}) + if (NOT TARGET "${TARGET_NAME}") + continue() + endif () + # add interface compile options + set(PROP "$") + list(APPEND ARGS_CLANG_OPTIONS "$<$:$>>") + # add interface compile definitions + set(PROP "$") + list(APPEND ARGS_CLANG_OPTIONS "$<$:-D$-D>>") + # add interface include directories + set(PROP "$") + list(APPEND ARGS_CLANG_OPTIONS "$<$:-I$-I>>") + endforeach () + endif () # create a custom command for each input file foreach (INPUT_FILE ${ARGS_INPUT_FILES})