Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Гурман от Ноябрь 04, 2015, 22:39



Название: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Гурман от Ноябрь 04, 2015, 22:39
Собирается приложение в 3-х вариантах - win32, lin32, lin64. Чёрт его знает, может и для win64 понадобится. Это 42 плагина, у каждого свой подкаталог сборки, со своими debug и release. Сейчас собираю разные варианты в разных ветках, чтобы не пересекались объектные модули 32 и 64 бита. Приходится копировать исходники, это муторно. Есть маза объединить всё в одну ветку (и возможно даже расшарить её между машинами, на которых делается сборка), но тогда рабочие каталоги debug и release, куда ложатся объектники, у каждого плагина надо разделить. Идеальный вариант - чтобы создались сами каталоги debug.w32, debug.l32, debug.l64. Разрядность сборки я положим определил. Но не вижу, как добавить суффиксы к рабочим каталогам. Не к финальному каталогу, куда кладутся результирующие динамические библиотеки плагинов, а к каталогам, где создаются файлы с расширением .o, а также moc_*.cpp, qrc_*.cpp.

Есть такая возможность вообще у QMake?


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Racheengel от Ноябрь 04, 2015, 23:13
OBJ_DIR ?


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Гурман от Ноябрь 05, 2015, 00:40
Почти. OBJECTS_DIR. Причем менять очевидно придётся еще и UI_DIR, MOC_DIR, RCC_DIR.


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Racheengel от Ноябрь 05, 2015, 01:48
 Ну UI_DIR, RCC_DIR и MOC_DIR скорее всего нет, т.к. генеренные файлы для дебага и релиза одинаковые.


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Гурман от Ноябрь 05, 2015, 03:11
По идее да, но зачем-то их кладут в те же каталоги, что и объектники, раздельно. Если всё равно, то можно в -build- каталог класть, чтобы не плодить кучи дублей при последовательных debug/release сборках. Может это для чего-то предусмотрено.


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: qate от Ноябрь 05, 2015, 11:33
я собираю каждую сборку в разных каталога и не копирую ничего:

mkdir linux32
cd linux32
qmake ../Src -spec linux-g++-32
make
cd ..

mkdir win32
cd win32
qmake ../Src -spec win32-g++
make

или я не понял вопроса ?


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Гурман от Ноябрь 05, 2015, 13:13
Это годится только для сборки совсем финального релиза всех вариантов одновременно, и на одной машине. У меня, кроме сборки, пока ещё идёт доработка и отладка (она может вообще не закончиться - планов громадьё). На трёх машинах с разными ОС. Так необходимо, поскольку софт на них общается через IP. Необходимо иметь возможность запускать его в отладчике на каждой машине.


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Racheengel от Ноябрь 05, 2015, 15:07
Если собирать через Qt Creator, то он это все умеет "из коробки" с помощью shadow builds.
Или как у вас система сборки устроена?


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: qate от Ноябрь 05, 2015, 15:58
Это годится только для сборки совсем финального релиза всех вариантов одновременно, и на одной машине. У меня, кроме сборки, пока ещё идёт доработка и отладка (она может вообще не закончиться - планов громадьё). На трёх машинах с разными ОС. Так необходимо, поскольку софт на них общается через IP. Необходимо иметь возможность запускать его в отладчике на каждой машине.

т.е. нужно:
1. собрать win32, linux32, linux64
2. отослать собранные бинарники и исходники на все нужные машины
3. запустить там их под отладчиком (qtcreator)

я бы делал так одним скриптом:
1. собрал все архитектуры на одной машине (на своей основной) как писал выше
2. scp\rsync на нужные машины
3. запуск "там" qtcreator
для linux машин тут проблем нет ибо ssh и scp "изкаробки"
для windows есть cygwin

в конце отладки шаг 1 останется для сборки релиза


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Гурман от Ноябрь 05, 2015, 17:35
Если я объединю исходники и разнесу объектники, то мне больше ничего не нужно. Сборка производится на той машине, на которой запускается отладка - физических машин у меня две, поэтому сборка win32 и lin64 идёт параллельно на разных машинах, что гораздо быстрее. Есть еще виртуальная lin32, но на ней я редко отлаживаю, поэтому собираю редко. Собирать каким-то отдельным действием мне не нужно - при нажатии отладки в Креаторе новое приложение соберется, если исходники изменились. Без лишних сущностей. Отсылать собранные бинарники на все машины - это тот ещё мрак будет, при полной сборке сейчас получаются 42 новых бинарника, дальше будет больше. Это больше, чем я за раз правлю исходников. А при объединении вообще ничего никуда отсылать не надо будет, всё будет ложиться на своё место.

Поэтому зачем там cygwin я не понял... В Windows собирается и работает нативный .exe.


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: qate от Ноябрь 06, 2015, 12:52
1. почему получились разные исходники ?
2. как отсылается собранное приложение на другую машину ?


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Гурман от Ноябрь 06, 2015, 13:03
1. почему получились разные исходники ?
2. как отсылается собранное приложение на другую машину ?

1. Исходники одинаковые.
2. Собранное приложение никуда не отсылается.


Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: qate от Ноябрь 06, 2015, 14:46
1. почему получились разные исходники ?
2. как отсылается собранное приложение на другую машину ?

1. Исходники одинаковые.
2. Собранное приложение никуда не отсылается.

1. Тогда я не понял фразу "Приходится копировать исходники, это муторно."
2. А что значит фраза "Необходимо иметь возможность запускать его в отладчике на каждой машине. " ?



Название: Re: Как проще всего добавить суффиксы к рабочим каталогам release/debug?
Отправлено: Гурман от Ноябрь 06, 2015, 15:27
1. При изменении исходников на одной машине пока что приходится копировать их на две других (просто некогда было SVN ставить и настраивать в своё время, да не очень хочется). Но скоро это не будет требоваться. Думаю, сегодя уже всё доделаю. Собственно сборка с разными объектыми каталогами работает, осталось правильно настроить расшаривание каталога.
2. Именно это и значит. Приложение надо запускать в отладчике на всех трех разных машинах одновременно.

Может кому-то это время сэкономит

Код:
win32:contains(QMAKE_HOST.arch, x86):{ SYSTEM_SUFFIX = w32 }
win32:contains(QMAKE_HOST.arch, x86_64):{  SYSTEM_SUFFIX = w64 }
linux-g++ { SYSTEM_SUFFIX = l32 }
linux-g++-64 { SYSTEM_SUFFIX = l64 }
# почему-то OBJECTS_DIR изначально пустой, поэтому использовать его невозможно
CONFIG(release, release|debug) { OBJECTS_DIR = release.$${SYSTEM_SUFFIX} }
CONFIG(debug, debug|release) { OBJECTS_DIR = debug.$${SYSTEM_SUFFIX} }
RCC_DIR = $$OBJECTS_DIR
MOC_DIR = $$OBJECTS_DIR