Вам нужно смоделировать это с целевыми зависимостями. Инструмент «генератор» должен быть целью cmake. В этом случае используйте add_custom_target вместо execute_process, например:
add_custom_target(generate_sources ALL COMMAND generator ${CMAKE_SOURCE_DIR}/src))
Затем добавьте целевую зависимость к «генератору», используя add_dependencies :
add_dependencies(generate_sources generator)
Это позволит убедиться, что ваша цель «generate_sources», которая запускает инструмент, будет работать только во время сборки после того, как целевой «генератор» был скомпилирован.
Следующее неверно , см. Комментарии для получения дополнительной информации:
Используйте add_dependencies, чтобы добавить зависимость от "mainproject.exe" в "generate_sources". Теперь это я никогда не проверял, так что возьмем немного соли: С CMake, более поздней, чем версия 3.12, согласно записи в file , вы сможете изменить команду file на:
file(GLOB GeneratedSources CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/src/*.cpp)
То, что я интерпретирую, так как это будет перетаскивать файлы во время сборки, если каталог изменится.