Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Март 13, 2015, 11:22



Название: Кросс компиляция
Отправлено: merke от Март 13, 2015, 11:22
Всем привет!

Давно интересует один момент. Если ли готовые инстурменты позволяющие собирать исходники сразу под несколько ОС? Допустим есть исходники, мне нужно скомпилить под Win32-64, Linux32-64 у меня есть 4 виртуальные машины для этого и есть некий инструмент в который я скинул исходники, а в результате получил 4 исполняемых файла. Это бы в разы ускорило время разработки. Писать подобное нету времени. Может кто встречался с таким чудом?


Название: Re: Кросс компиляция
Отправлено: Пантер от Март 13, 2015, 11:34
Под Линухой можно компилять виндовые бинари.


Название: Re: Кросс компиляция
Отправлено: merke от Март 13, 2015, 11:36
пробовал настроить, но блин после такой компиляции приходится в проект подкидывать еще и библиотеки msvc.


Название: Re: Кросс компиляция
Отправлено: Пантер от Март 13, 2015, 11:39
Я пару раз пытался под Гентой настроить, но так и не получилось. :(


Название: Re: Кросс компиляция
Отправлено: Igors от Март 13, 2015, 11:40
Писать подобное нету времени.
:)
Может кто встречался с таким чудом?
Много лет назад CodeWarrior умел компилить под MacOS и Вындоуз. Сразу 2 исполняемых файла правда не получалось, надо было переставить таргет - ну не суть. Попробовав неск раз  отказался, вернулся к обычному перетаскиванию исходников и.т.п. Причина проста - отладку "на другой" платформе не запустить,  т.е. весь этот "кросс" до первого милиционера.


Название: Re: Кросс компиляция
Отправлено: RSATom от Март 13, 2015, 12:33
Если уже есть виртуальные машины - можно поставить Continuous Integration службу (например Jenkins) на каждой из них (одна будет основной а другие ведомыми) и настроить автоматическую сборку например по появлению нового коммита в репозитории. По завершении сборки бинарники могут выкладываться в единое место.  Собственно это самый правильный, надежный, быстрый и безпроблемный вариант по сравнению с кросскомпиляцией.


Название: Re: Кросс компиляция
Отправлено: Пантер от Март 13, 2015, 12:40
Если уже есть виртуальные машины - можно поставить Continuous Integration службу (например Jenkins) на каждой из них (одна будет основной а другие ведомыми) и настроить автоматическую сборку например по появлению нового коммита в репозитории. По завершении сборки бинарники могут выкладываться в единое место.  Собственно это самый правильный, надежный, быстрый и безпроблемный вариант по сравнению с кросскомпиляцией.
Поддерживаю. Вполне хороший вариант. Если есть возможность держать несколько виртуалок постоянно включенными.


Название: Re: Кросс компиляция
Отправлено: RSATom от Март 13, 2015, 12:46
Если есть возможность держать несколько виртуалок постоянно включенными.
Теоретически одновременно нужно иметь запущенными только 2 виртуалки - master и одну из slave. Но даже их можно запускать по расписанию (и даже shutdown'ить непосредственно из jenkins ;) - но сам я никогда такого не делал, но принципиальных ограничений не вижу.


Название: Re: Кросс компиляция
Отправлено: RSATom от Март 13, 2015, 12:48
а можно и вообще не заморачиваться с master/slave и настроить полноценные CI в каждой из виртуалок и запускать их по очереди.


Название: Re: Кросс компиляция
Отправлено: merke от Март 13, 2015, 13:32
о спасибо! буду играться с jenkins!


Название: Re: Кросс компиляция
Отправлено: Nidxogg от Март 13, 2015, 15:40
http://habrahabr.ru/post/198142/


Название: Re: Кросс компиляция
Отправлено: RSATom от Март 13, 2015, 16:56
http://habrahabr.ru/post/198142/

еще один довод в пользу виртуальных машин :)


Название: Re: Кросс компиляция
Отправлено: Termit от Март 13, 2015, 19:01
Использую Jenkins. Собираю одновременно в восьми разных разных окружениях. Все slave живут на виртуальных машинах. Попутно прикрутил проверку cppcheck.
Очень удобно, рекомендую. ;)
Если будут вопросы в меру сил смогу подсказать.


Название: Re: Кросс компиляция
Отправлено: qate от Март 16, 2015, 13:18
объясните - когда выгодно использовать Jenkins ? дела с ним не имел, сейчас делаю сборку linux32 и кросскомпиляцией win32
этого пока хватает или я не знаю какойто выгоды ? )


Название: Re: Кросс компиляция
Отправлено: RSATom от Март 16, 2015, 13:38
На мой взгляд первая выгода - экономия времени. Сервер сборки сам вытаскивает последнюю версию, сам все конфигурит и собирает, возможно даже сам выкладывает для скачивания. Когда то же самое делается самостоятельно - раз за разом по 5-10 минут, и в итоге набегает много...
Вторая выгода - сервер сборки может выполнять сборку хоть каждую минуту, соответственно и тестировать заинтересованные люди могут тоже всегда самую последнюю версию.


Название: Re: Кросс компиляция
Отправлено: RSATom от Март 16, 2015, 13:39
Использую Jenkins. Собираю одновременно в восьми разных разных окружениях. Все slave живут на виртуальных машинах.
slave запущены одновременно? Или как то по очереди запускаются? Сборка под Mac есть?


Название: Re: Кросс компиляция
Отправлено: qate от Март 16, 2015, 14:46
На мой взгляд первая выгода - экономия времени.

а чем это лучше скрипта, который переодически берет новый коммит и выполняет над ним сборку, создание дистрибутива, и т.п. ?


Название: Re: Кросс компиляция
Отправлено: RSATom от Март 16, 2015, 14:50
Формально такой скрипт и есть разновидность билд сервера :) Другой вопрос что в случае использования того же Jenkins нет необходимости эти скрипты писать руками, все (ну или почти все) настраивается через браузер. Опять же существует большое количество готовых плагинов для решения разных задач - опять же не нужно руками писать.
Но если у вас все и так уже настроено и работает и устраивает - тогда действительно вам нет необходимости что-либо менять.