Кажется, вы напрямую вызываете свой скрипт генерации кода при запуске cmake.Хотя это возможно решение, но это определенно не правильный способ использовать генераторы кода с cmake.
Я рекомендую вам использовать add_custom_command
для вашего случая:
add_custom_command(
OUTPUT generated.h
COMMAND ${PYTHON_EXECUTABLE} generator.py
DEPENDS generator.py
)
И рядом выМожно просто поместить свой заголовок в список исходных файлов, передаваемых командам add_library
/ add_executable
.cmake автоматически отследит все зависимости и вызовет ваш скрипт.
Term DEPENDS generator.py
информирует cmake о том, что он должен восстановить заголовок при изменении скрипта.
При таком подходе будет сгенерирован файл generated.h
только во время сборки (когда вы запускаете make
или выполняете команду построения в IDE).Напротив, если вы запускаете ваш скрипт во время cmake (с помощью команды execute_process
), то вам нужно перезапустить cmake, чтобы восстановить ваш файл.Это возможно, но вам нужно использовать некоторые приемы для введения нестандартной зависимости.