crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Счетчик количества билдов
iddqd
  опции профиля:
сообщение 1.2.2010, 10:04
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

Спасибо сказали: 1 раз(а)




Репутация:   0  


Подскажите как лучше всего реализовать счетчик билдов? Допустим в одном из включаемых файлов я объявляю переменную
#define BUILD_NUM 123

и теперь нужно, чтобы при каждой сборке проекта этот номер увеличивался на единичку. Возможно для QtCreator'a есть какой-нибудь плагин или такая возможность включается где-либо по-умолчанию? Если нет, то как удобнее всего организовать подобную вещь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CrackedMind
  опции профиля:
сообщение 1.2.2010, 11:38
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 13.3.2009
Пользователь №: 611

Спасибо сказали: 7 раз(а)




Репутация:   0  


Написать скрипт небольшой который будет считывать файл, увеличивать билд на 1 и записывать обратно =) вызов команды можно записать в переменную QMAKE_POST_LINK
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 1.2.2010, 11:55
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

Спасибо сказали: 1 раз(а)




Репутация:   0  


Спасибо за совет, сейчас поищу как это можно реализовать. Может у вас есть ссылки на что-то подобное?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 1.2.2010, 11:59
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(CrackedMind @ 1.2.2010, 11:38) *
Написать скрипт небольшой который будет считывать файл, увеличивать билд на 1 и записывать обратно =) вызов команды можно записать в переменную QMAKE_POST_LINK


Судя по совету, вы даже не пытались такое реализовать. Кроссплатформенно одними консольными командами такое не сделать (ограничение относится больше к windows). Вероятно придется написать консольную утилиту, которая будет автоматически собираться перед сборкой самого проекта, если не была собрана в прошлый раз. Она уже будет подготавливать всю почву, чтобы можно было работать с такой переменной из .pro файла. Или писать скрипт на Perl и вызывать уже его.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iddqd
  опции профиля:
сообщение 1.2.2010, 12:15
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 26.11.2009
Пользователь №: 1261

Спасибо сказали: 1 раз(а)




Репутация:   0  


SABROG, пожалуй вы правы, поиском вышел именно на вариант с использованием простенькой консольной утилиты, которая инкрементит номер версии и пишет его в файл. Небольшой пример описан в неофициальном блоге о Qt Creator. Вот ссылки на посты:

Может кто-нибудь ещё добавит примеров?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CrackedMind
  опции профиля:
сообщение 1.2.2010, 12:32
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 13.3.2009
Пользователь №: 611

Спасибо сказали: 7 раз(а)




Репутация:   0  


Цитата
Судя по совету, вы даже не пытались такое реализовать.

конечно не реализовывал. и python'ом я тоже не умею пользоваться.

Сообщение отредактировал CrackedMind - 1.2.2010, 12:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
grio
  опции профиля:
сообщение 1.2.2010, 21:09
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 87
Регистрация: 11.11.2009
Пользователь №: 1221

Спасибо сказали: 6 раз(а)




Репутация:   0  


Зацепила меня идея счетчика билдов )
Под винды предлагаю такой механизм,
в QtCreator'е
Проекты >> этапы сборки >> добавить >> count.bat

--------count.bat-----------
@echo off
if not exist count.### echo 0 >>count.###
for /f %%i in (count.###) do (
set /a count = %%i + 1
)
echo %count% > count.###
------------------------------

А в самом проекте уже инклюдим count.###, который содержит только циферку с номером билда. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
grio
  опции профиля:
сообщение 2.2.2010, 20:18
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 87
Регистрация: 11.11.2009
Пользователь №: 1221

Спасибо сказали: 6 раз(а)




Репутация:   0  


В предыдущем посте не написал, как инклюдить номер билда в исходник.
Предлагаю 2 способа:

Способ 1. Меняем батник.
--------count.bat-----------
@echo off
if not exist count.inc echo #define BUILD_NUMBER 0 >>count.inc
for /f "tokens=3" %%i in (count.inc) do (
set /a count = %%i + 1
)
echo #define BUILD_NUMBER %count% > count.inc
------------------------------

тогда в cpp файл просто инклюдим в начало:
#include "count.inc"


Способ 2. Не меняя батник из предыдущего поста прописываем в cpp файле.
int build_number(
#include "count.###"
);


Еще несть нюанс. Что бы не зависимо от изменений в исходнике, содержащем инклюд вашего счетчика
происходила перекомпиляция и обновление значения BUILD_NUMBER,
надо добавить count.inc в .pro файл вашего проекта.
SOURCES += count.inc


И лучше не использовать расширение файла .### :)

Сообщение отредактировал grio - 2.2.2010, 22:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 3.2.2010, 14:46
Сообщение #9


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


я уже как то заводил тему на счет счетчика сборок.
под винду остановился на том что вывожу в лог дату и время сборки, а так же тегами с cvs тащу текущую ревизию.
касательно предложенных выше способов вопрос. как отработает счетчик если сборка неудачная?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
grio
  опции профиля:
сообщение 3.2.2010, 18:43
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 87
Регистрация: 11.11.2009
Пользователь №: 1221

Спасибо сказали: 6 раз(а)




Репутация:   0  


Цитата(kwisp @ 3.2.2010, 14:46) *
я уже как то заводил тему на счет счетчика сборок.
под винду остановился на том что вывожу в лог дату и время сборки, а так же тегами с cvs тащу текущую ревизию.
касательно предложенных выше способов вопрос. как отработает счетчик если сборка неудачная?


В моем варианте считаются все попытки компиляции, и удачные и не очень. )
Время и дату можно брать из переменных препроцессора __DATE__ и __TIME__
Я даже натыкался в и-нете на код, где дату от препроцессора конвертируют в int.
Но это не порядковый номер билда, в любом случае.

Сейчас буду выбирать Систему Управления Версиями для своих проектов,
тогда номер билда уже оттуда буду читать. А для небольших поделок или как времянка, вполне подходит этот вариант с батником. Потому что прикрутить и настроить все реально за 2 минуты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 4:36