Как создать автоматически сгенерированный код только при изменении генератора или ввода в CMake?

Я работаю над репозиторием исходного кода, который генерирует некоторый код C ++, выполняя скрипт Python, выводящий заголовки и реализацию. Этот код впоследствии скомпилирован и связан с моими библиотеками и исполняемыми файлами. Я знаю, что сгенерированный код изменится, только если выполняется одно из двух условий:

Сам генератор кода меняетсяИзменяется ввод (файл XML) в генератор

Я хочу использовать cmake для управления процессом сборки. На данный момент я используюexecute_process запустить генератор. Однако, это запускается каждый раз, когда я запускаю cmake, и затрагивает файлы, вызывая перекомпиляцию моего сгенерированного кода и добавляя к моему общему времени компиляции.

Я также хочу убедиться, что сгенерированный код всегда запускается перед моими библиотеками. Другими словами, я хочу, чтобы библиотеки зависели от работы генератора.

Как правильно обращаться с такой ситуацией в cmake? Я видел этот предыдущий ответ: «Получить CMake для выполнения цели в проекте перед сборкой библиотекиMsgstr "Но это зависит от того, какой вывод генератора кода известен заранее. Мой генератор кода сгенерирует переменное количество файлов.

Ответы на вопрос(3)

Ваш ответ на вопрос