Помимо предлагаемого решения с пользовательской целью, если ваша цель зависит от некоторых сгенерированных источников, общий рабочий процесс выглядит следующим образом:
Добавьте цель, которая генерирует ваш исходный файл.Я рекомендую использовать полные пути, чтобы избежать ошибок.
add_custom_command(OUTPUT ${GENERATED_SOURCE_FILE}
COMMAND ${GENERATION COMMAND}
DEPENDS ${DEPENDENCIES}
)
Установите GENERATED свойства вашего сгенерированного исходного файла.Таким образом, cmake не будет жаловаться на отсутствующий исходный файл.
set_source_files_properties(${GENERATED_SOURCE_FILE} PROPERTIES
GENERATED TRUE
)
Добавьте сгенерированный источник к вашей цели как обычно.
add_executable(${YOUR_TARGET} SOURCES ${GENERATED_SOURCE_FILE})
Так что в предложенном примере $ {GENERATION COMMAND} будет толькозапускаться при изменении некоторых файлов $ {DEPENDENCIES}.