Я поддерживаю фреймворк / библиотеку C ++, которая использует CMake в качестве своей системы сборки. Версия фреймворка отражается в файле с именем VERSION
(как во многих библиотеках с открытым исходным кодом).
Я хотел бы сгенерировать заголовочный файл C ++ со строкой версии, используя VERSION
в качестве входных данных. Я также хочу, чтобы это происходило во время пересборки, а не только когда воссоздает файлы проекта . Было бы желательно, если бы VERSION
была зависимостью, поэтому заголовочный файл создается только при изменении VERSION
.
Я знаком с техникой, использующей команду file()
в CMake для чтения конкурсовVERSION
, например,
file(STRINGS "VERSION" FRAMEWORK_VERSION)
И затем создание файла с помощью команды configure_file
, например:
configure_file(version.h.in version.h)
Но это только генерирует файл заголовка во время генерации файлов проекта,Если файл VERSION
изменен, файл заголовка версии не будет повторно сгенерирован при повторной сборке (т. Е. Работает cmake --build .
).
Я знаю, что могу использовать как скрипт Python, запущенный как CMakeмакрос и всегда создаю заголовок версии во время сборки, но я нахожу это немного раздражающим.
Какова лучшая практика здесь?
Разве невозможно решить эту проблему, только используя CMake