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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как проще всего добавить суффиксы к рабочим каталогам release/debug?  (Прочитано 6372 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Ноябрь 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?
Записан

2^7-1 == 127, задумайтесь...
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Ноябрь 04, 2015, 23:13 »

OBJ_DIR ?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Ноябрь 05, 2015, 00:40 »

Почти. OBJECTS_DIR. Причем менять очевидно придётся еще и UI_DIR, MOC_DIR, RCC_DIR.
Записан

2^7-1 == 127, задумайтесь...
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Ноябрь 05, 2015, 01:48 »

 Ну UI_DIR, RCC_DIR и MOC_DIR скорее всего нет, т.к. генеренные файлы для дебага и релиза одинаковые.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #4 : Ноябрь 05, 2015, 03:11 »

По идее да, но зачем-то их кладут в те же каталоги, что и объектники, раздельно. Если всё равно, то можно в -build- каталог класть, чтобы не плодить кучи дублей при последовательных debug/release сборках. Может это для чего-то предусмотрено.
Записан

2^7-1 == 127, задумайтесь...
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #5 : Ноябрь 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

или я не понял вопроса ?
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #6 : Ноябрь 05, 2015, 13:13 »

Это годится только для сборки совсем финального релиза всех вариантов одновременно, и на одной машине. У меня, кроме сборки, пока ещё идёт доработка и отладка (она может вообще не закончиться - планов громадьё). На трёх машинах с разными ОС. Так необходимо, поскольку софт на них общается через IP. Необходимо иметь возможность запускать его в отладчике на каждой машине.
Записан

2^7-1 == 127, задумайтесь...
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #7 : Ноябрь 05, 2015, 15:07 »

Если собирать через Qt Creator, то он это все умеет "из коробки" с помощью shadow builds.
Или как у вас система сборки устроена?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #8 : Ноябрь 05, 2015, 15:58 »

Это годится только для сборки совсем финального релиза всех вариантов одновременно, и на одной машине. У меня, кроме сборки, пока ещё идёт доработка и отладка (она может вообще не закончиться - планов громадьё). На трёх машинах с разными ОС. Так необходимо, поскольку софт на них общается через IP. Необходимо иметь возможность запускать его в отладчике на каждой машине.

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

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

в конце отладки шаг 1 останется для сборки релиза
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #9 : Ноябрь 05, 2015, 17:35 »

Если я объединю исходники и разнесу объектники, то мне больше ничего не нужно. Сборка производится на той машине, на которой запускается отладка - физических машин у меня две, поэтому сборка win32 и lin64 идёт параллельно на разных машинах, что гораздо быстрее. Есть еще виртуальная lin32, но на ней я редко отлаживаю, поэтому собираю редко. Собирать каким-то отдельным действием мне не нужно - при нажатии отладки в Креаторе новое приложение соберется, если исходники изменились. Без лишних сущностей. Отсылать собранные бинарники на все машины - это тот ещё мрак будет, при полной сборке сейчас получаются 42 новых бинарника, дальше будет больше. Это больше, чем я за раз правлю исходников. А при объединении вообще ничего никуда отсылать не надо будет, всё будет ложиться на своё место.

Поэтому зачем там cygwin я не понял... В Windows собирается и работает нативный .exe.
« Последнее редактирование: Ноябрь 05, 2015, 17:48 от Гурман » Записан

2^7-1 == 127, задумайтесь...
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #10 : Ноябрь 06, 2015, 12:52 »

1. почему получились разные исходники ?
2. как отсылается собранное приложение на другую машину ?
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #11 : Ноябрь 06, 2015, 13:03 »

1. почему получились разные исходники ?
2. как отсылается собранное приложение на другую машину ?

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

2^7-1 == 127, задумайтесь...
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #12 : Ноябрь 06, 2015, 14:46 »

1. почему получились разные исходники ?
2. как отсылается собранное приложение на другую машину ?

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

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

Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #13 : Ноябрь 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
« Последнее редактирование: Ноябрь 06, 2015, 15:33 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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