Учитывая цель CMake A и цель B, где B зависит от A, а A является препроцессором для кода, принадлежащего B. Я пытаюсь получить следующее поведение:
A создается, выполняется и его стандартный вывод используется для записи определения C директив / макросов препроцессора, которые необходимо переслать в описание здания B через target_compile_definitions (...)
Я попытался добавить промежуточную пользовательскую цель, pre-B, который вызывает программу А и сохраняет ее вывод.
add_custom_target(
pre-B
COMMAND A OUTPUT_VARIABLE DEFS
)
# pre-B executable outputs C preprocessor definitions into DEFS
target_compile_definitions(B PRIVATE ${DEFS})
add_dependencies(B pre-B)
Я считаю, что проблема заключается в том, что когда я вызываю target_compile_definitions с $ {DEFS} в качестве аргумента, он пуст во время оценки, что приводит к мой вопрос.
Как определить определения компиляции для цели B, когда они поступают с выхода выполнения цели A? (CMake 3.0 +)