Задачу инкремента номера версии при сборке релиза QT-шного проекта, естественно, хочется автоматизировать. Но есть несколько тонкостей.
В своих проектах я использую два варианта именования версий:
- Классический: 1.0.0.BUILD_NUMBER
- Дата релиза: 2012.12.20.BUILD_NUMBER
- Последовательный инкремент: 1,2,3,4...
- Произвольная последовательность чисел: N1, N2, N3.. важно, чтобы N1 < N2 < N3. Сам по себе номер билда не важен, главное чтобы он отличался у разных релизов.
FlexBuildIncrementerЗдесь path - путь к файлу с номером версии. Если файла нет, он будет автоматически создан по этому пути; если есть - номер версии будет изменен согласно заданным правилам. Файл содержит одну единственную строку вида:[mode]
#define APPLICATION_VERSION "1.0.0.0" //[inc] inc, sec70, date, date_sec70Правила инкремента версии задаются параметром [mode]. Поддерживаются четыре варианта:
- inc: 1.0.0.1 -> 1.0.0.2
- sec70: 1.0.0.1 -> 1.0.0.COUNT_SECONDS_SINCE_1970
- date: 1.0.0.1 -> CURRENT_YEAR.CURRENT_MONTH.CURRENT_DAY.2
- date_sec70: 1.0.0.1 -> CURRENT_YEAR.CURRENT_MONTH.CURRENT_DAY.COUNT_SECONDS_SINCE_1970
FlexBuildIncrementer.exe version #define APPLICATION_VERSION "1.0.0.1" //[inc] inc, sec70, date, date_sec70 FlexBuildIncrementer.exe version #define APPLICATION_VERSION "1.0.0.2" //[inc] inc, sec70, date, date_sec70 FlexBuildIncrementer.exe version inc #define APPLICATION_VERSION "1.0.0.3" //[inc] inc, sec70, date, date_sec70 FlexBuildIncrementer.exe version date #define APPLICATION_VERSION "2012.12.20.4" //[inc] inc, sec70, date, date_sec70 FlexBuildIncrementer.exe version sec70 #define APPLICATION_VERSION "2012.12.20.1355969884" //[inc] inc, sec70, date, date_sec70 FlexBuildIncrementer.exe version sec70 #define APPLICATION_VERSION "1.0.0.1355969831" //[inc] inc, sec70, date, date_sec70 FlexBuildIncrementer.exe version date_sec70 #define APPLICATION_VERSION "2012.12.20.1355969899" //[inc] inc, sec70, date, date_sec70Можно задать режим генерации версии прямо в файле version и НЕ передавать второй параметр командной строки. Пример:
#define APPLICATION_VERSION "1.0.0.1" //[sec70] FlexBuildIncrementer.exe version #define APPLICATION_VERSION "1.0.0.1355970013" //[sec70]Перед сборкой релиза я вызываю утилиту (через bat-файл) - и в проекте автоматически выставляется нужный номер версии. В принципе, можно автоматизировать вызов bat-файла при сборке релиза (см. топик на stackoverflow), но лично мне ручной режим удобнее. Исходные коды FlexBuildIncrementer Скомпилированная версия FlexBuildIncrementer: FlexBuildIncrementer.7z
Комментариев нет:
Отправить комментарий