В корне каталога проекта имеется файл version.txt, он автоматически обновляется по определенным требованиям.
Содержимое этого файла передается в DEFINE-переменную:
# Установка qmake переменной с номером версии
SOFTWARE_VERSION = "$$cat(version.txt)"
# Проброс qmake переменной в C/C++
DEFINES += "SOFTWARE_VERSION=\"$$SOFTWARE_VERSION\""
Проблема в том, что если изменяется version.txt, то меняется и DEFINE-переменная SOFTWARE_VERSION. Однако исходные файлы проекта при этом, само собой, никак не меняются.
И проект не пересобирается, потому что изменений в проекте ведь нету. А он должен собраться с новой версией, установленной в version.txt. Причем не обязательно, чтобы пересобирался весь проект. Достаточно собрать с учетом того, что изменился один файл, в котором используется DEFINE-переменная SOFTWARE_VERSION.
Вопрос: как заставить собираться проект с новым значением, если изменился номер версии в файле version.txt?
Ограничение 1: проект большой, полная пересборка - это оверхед.
Ограничение 2: все должно конфижиться через *.pro-файл проекта, никаких дополнительных скриптов быть не должно.