Как эффективно делать кроссплатформенные сборки - PullRequest
2 голосов
/ 06 мая 2011

Я настраиваю систему сборки для команды, которая производит API, используемые на нескольких платформах и архитектурах. Уже была проделана большая работа по настройке Ant для создания всего кода Java, поэтому я бы предпочел придерживаться Ant, если это возможно.

Где я озадачен, так это как построить программное обеспечение C ++. Вот платформы и языки, которые мне нужно поддерживать:

  • Java - Linux - 32-битные и 64-битные: Ant
  • Java - Windows - 32-битные и 64-битные: Ant
  • C ++ - Linux - 32-битные и 64-битные: Ant w / CppTasks (вопрос № 1)
  • C ++ - Windows - 32 бита: (вопрос № 2)

Примечание. C ++ в Windows - это проекты MS Visual Studio C ++.

Я думаю, что ответом на вопрос # 1 является CppTasks, потому что это кажется стандартным способом сборки C ++ из Ant.

Для вопроса №2 я также мог бы использовать CppTasks, но разработчики будут компилировать в Visual Studio, поэтому представляется целесообразным использовать их проект Visual Studio для сборки, что означает вызов MSBuild из Ant.

Кто-нибудь пробовал это раньше и имеет хорошее решение для сборки Java и C ++ на Linux и Windows?

Ответы [ 4 ]

4 голосов
/ 06 мая 2011

Используете ли вы систему непрерывной сборки, такую ​​как Jenkins ?

С Jenkins ваши сборки могут автоматически запускаться при регистрации / фиксации, времени дня и / или по команде.Отличительной особенностью Jenkins является то, что вы можете автоматически создавать все различные версии вашего программного обеспечения.

Например, вам, вероятно, потребуется запустить make в Linux C ++, но использовать msbuild вСистемы Windows, и вам нужно будет запустить сборку на машине Linux и одну для машины Windows.Дженкинс может быть настроен на это автоматически.Когда происходит коммит, все ваши различные сборки на всех ваших системах могут быть запущены одновременно.Затем вы можете сохранить нужные сборки на Jenkins, и ваши пользователи фактически извлекут нужный тип из проекта, который им нужен.

Существует множество способов настройки, но проще всего просто создатьчетыре отдельных задания (одно для Java 32bit, Java 64bit, C ++ Linux и C ++ Microsoft).Вам не обязательно нужна отдельная сборка Microsoft Java (по крайней мере, теоретически), но ничто не мешает вам.

Вы можете иметь один сервер Jenkins, который запускает «ведомые» задания в других системах сборки, так что вы можетепусть Дженкинс живет в 64-битной системе Linux, но использует 32-битную систему Linux в качестве ведомого для выполнения 32-битной сборки и вызывает ведомого Windows для выполнения сборки Visual Basic.Таким образом, все ваши рабочие места расположены в центральном месте, но вы можете использовать нужные вам среды.

Если вы никогда не использовали систему Continuous Build, скачайте Jenkins и поэкспериментируйте с ней.Это бесплатно и с открытым исходным кодом, и очень, очень прост в использовании.Вы можете запустить его на любой машине с JDK или JRE 1.6.Если вы загружаете версию для Windows, она даже поставляется с уже встроенной JRE.

Лучше всего использовать систему непрерывной сборки и позволить ей справиться с беспорядком.Кстати, есть также Bamboo , CruiseControl и Hudson (который был отделен от Дженкинса несколько месяцев назад)

1 голос
/ 06 мая 2011

TeamCity должны соответствовать всем требованиям.Он изначально поддерживает Ant и MSBuild и имеет довольно неплохую кросс-платформенную историю (написана на Java, но отлично интегрируется, например, с Win).

Не вижу никакой выгоды в переносе ваших сборок на основе MSBuild в еще одну систему сборки.

0 голосов
/ 06 мая 2011

Можете ли вы смешать муравья и Нант ?

0 голосов
/ 06 мая 2011

Список для этого выглядит немного по-другому (на мой взгляд)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...