LINUX.ORG.RU

дату сборки в имя исполняемого файла

 


0

1

Имеется проект на Qt, хотелось бы при помощи qmake сделать так, чтобы собрав программу, получить исполняемый файл с датой сборки в имени, например: my_shit_software__20160914_1328.exe

Есть ли такая возможность у qmake? Через скрипты сделать авторенейм конечно вариант, но что если можно штатно?

Ответ на: комментарий от anonymous

в постпроцессе переименуй. время можно через $$_DATE_ получить

Про $$_DATE_ понял, а что за постпроцесс? В документации на qmake это как зовется?

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Пока что вот как, pro-файл:

win32: {
	BUILD_DATE = $$system( date /t ) $$system( time /t )
	BUILD_DATE = $$member(BUILD_DATE,0)_$$member(BUILD_DATE,1)
}
unix: BUILD_DATE = $$system( date "+%Y%m%d_%H%M" )
message("BUILD_DATE= $$BUILD_DATE")
DEFINES += BUILD_DATE=\\\"$$BUILD_DATE\\\"
Внутри программы:
	QString build_date = QString(BUILD_DATE);
	build_date.remove(".");
	build_date.remove(":");
	qDebug() << "BUILD_DATE=" << build_date;
(. и : для win32 убирается).

Так вот, проблемы: чтобы обновилась версия программы, нужно перезапустить qmake, и изменить файл где эта строка используется чтобы он перекомпилировался. В принципе, для сборки в релиз какой-то на билд-сервере - обе проблемы не проявятся.

А вот как же засунуть в имя бинаря эту дату? Так еще, не забываем, что на маздае надо еще и от . и : избавиться, как минимум от :

I-Love-Microsoft ★★★★★ ()

как вариант:

MY_BUILD_DT='"\\\"$(shell date \"+%F %T\")\\\""'
QMAKE_POST_LINK = cp $(TARGET) /The/Path/To/Bin/$(TARGET)_$${MY_BUILD_DT}

x905 ★★★★★ ()
Ответ на: комментарий от x905

А как под маздаем убрать "." и ":" из даты? Всё хорошо, копирование ясно как прописать для обеих ОС, собрать итоговое имя. К сожалению, date только для 8.1 и выше поддерживает UNIX-подобный стиль типа date.exe «+%d%m%Y_%H%M», чтобы можно было избежать этих плохих символов, из-за которых котом даже файл с таким именем не удалить с шары.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

я собираю кросс компилятором для венды ибо так мне удобнее
есть ведь cygwin - возьми от туда date.exe и вызывай её (а также grep, tr, sed ...)
ну или чтото можно тут потыкать http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on-wind...

x905 ★★★★★ ()
Ответ на: комментарий от x905

Ладно, я пока так поживу, буду в офтопе компилить :) Но если будут попытки - прошу как-то отписаться в теме.

I-Love-Microsoft ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.