Russian Qt Forum
Сентябрь 30, 2024, 08:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: хранить номер версии приложения в одном месте  (Прочитано 13959 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #15 : Декабрь 17, 2012, 18:28 »

именно к этому и склоняюсь. но почему в POST_LINK? вроде ж info.plist обрабатывается и копируется до начала сборки, так что надо в PRE_LINK.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #16 : Декабрь 17, 2012, 18:35 »

именно к этому и склоняюсь. но почему в POST_LINK? вроде ж info.plist обрабатывается и копируется до начала сборки, так что надо в PRE_LINK.

Вообще да, тебе лучше знать, т.к. я не знаком с Mac, просто предложил мысль.  Думаю, что даже скрипт писать не нужно, а сразу записать нужную команду прямо в PRE_LINK.
« Последнее редактирование: Декабрь 17, 2012, 18:39 от Alex Custov » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #17 : Декабрь 17, 2012, 19:25 »

командой вряд ли получится обойтись — ведь надо менять содержимое файла. или можно как-то так?
Код
Bash
cat info.plist | sed /(?<=<key>CFBundleShortVersionString</key><string>)(.+?)(?=</string>)/$$VERSION/ > info.plist
(с sed не знаком, написал замену в perl-style)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #18 : Декабрь 17, 2012, 20:16 »

командой вряд ли получится обойтись — ведь надо менять содержимое файла. или можно как-то так?
Код
Bash
cat info.plist | sed /(?<=<key>CFBundleShortVersionString</key><string>)(.+?)(?=</string>)/$$VERSION/ > info.plist
(с sed не знаком, написал замену в perl-style)

sed -i меняет файл сразу:

Код:
sed -i 's/trololo//' info.plist

Расположение опции -i может зависеть GNU это версия или нет.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #19 : Январь 27, 2013, 04:15 »

в общем, воспользовался кодом, приведенным Alex Custov и lesav, плюс sed для мак ос, всё работает на ура, за что им большое спасибо.

но поскольку под виндой разработка ведётся в студии, а не в креаторе, то тут уже без внешнего скрипта не обошлось (может такого же эффекта, как и для .pro, можно достичь через ручное редактирование .vcxproj, но я в этом не силён). дефайны нужно лишь один раз прописать в свойствах проекта как для компиляции, так и для обработки ресурсов (сначала NVERX (X=1-4), а потом NVER_STRING), а потом, при обновлении версии, просто запускать незатейливый перл-скрипт с новой версией в качестве параметра, который обновит дефайны:
Код
Perl
#!/usr/bin/perl -w
 
use strict;
use File::Slurp qw(edit_file); # File::Slurp надо установить из CPAN
 
die "new version wasn't passed" if scalar(@ARGV) == 0;
 
my $newVersion = shift;
my @versionNumbers = split /\./, $newVersion;
push @versionNumbers, (0) x (4 - scalar(@versionNumbers)); # добиваем номера нулями если они не указаны
 
my $newDefines = "NVER1=$versionNumbers[0];NVER2=$versionNumbers[1];NVER3=$versionNumbers[2];NVER4=$versionNumbers[3];NVER_STRING=\"$newVersion\";";
edit_file { s/NVER1=.+";/$newDefines/g } 'myproject.vcxproj'; # скрипт должен находиться в одной папке с .vcxproj
 
примеры запуска:
Код
Bash
perl script.pl 0.1.2.3
perl script.pl 1.2
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
twp
Гость
« Ответ #20 : Май 14, 2013, 10:53 »

недавно на Qt Project повилась небольшая статья в которой описывается недокументированная переменная QMAKE_SUBSTITUTES. Она позволяет генерировать файлы на основе шаблонов, что избавляет от использования дополнительных скритов. Я уже перевел генерацию Info.plist используя эту переменную и работает отлично. Странно что эту переменную не задокументировали и ее нет среди обзоров недокументированных возможностей qmake.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.355 секунд. Запросов: 22.