инструмент для сборки Linux

Наш проект стал довольно большим, и наша система сборки больше не масштабируется. Мы занимаемся кроссплатформенной разработкой на Linux-машинах. У нас слишком много платформ для сборки и еще больше вариантов сборки. Мы считаем, что нам нужно обновить нашу среду сборки на основе Makefile.

Это требования (в идеальном мире):

  • Быстро (поэтому нет libtool)
  • Может делать параллельные сборки
  • Подходит для кросс-компиляции
  • Интеграция с кэшем
  • Делает инкрементные сборки и может замыкаться, если выполняются определенные условия (короткое замыкание, если параметры a, b, c не изменились, пересобирать, если они изменились)
  • Легко программируется (интеграция с Python была бы идеальной)
  • Удобный синтаксис
  • Распределенная система. Модули можно разрабатывать отдельно друг от друга
  • Может создавать сторонние библиотеки (использующие autotools, cmake ..)
  • Может отслеживать зависимости между модулями (но достаточно гибкий, чтобы модули можно было заменить альтернативными внешними).
  • встроенная поддержка модульного тестирования
  • Большие двоичные файлы могут храниться отдельно от системы контроля версий и при необходимости могут быть загружены.
  • Может отслеживать лицензии с открытым исходным кодом
  • интеграция с git

Известны ли вам какие-либо инструменты (или группы инструментов), которые удовлетворяли бы (по крайней мере, некоторым из них) этим требованиям? В настоящее время я склоняюсь к гип+ниндзя. Но синтаксис не очень дружелюбный и документации нет. Так что это трудно продать.


person l.thee.a    schedule 24.03.2012    source источник
comment
Почему сразу уволить libtool? Вы проверили современные версии и подтвердили, что они неадекватны?   -  person William Pursell    schedule 24.03.2012
comment
Около 6 месяцев назад я переместил один из своих проектов (файлы ~ 4K) в gyp. Ранее он был построен поверх configure/libtool. Время сборки сократилось с 20 секунд до 10 секунд (в минутах). Если за последний год или около того не было сделано радикальных улучшений, я поддерживаю свое заявление. Кстати, дельта времени была ниже на другом моем сервере с твердотельными накопителями.   -  person l.thee.a    schedule 27.03.2012


Ответы (3)


Вы упомянули интеграцию с Python, так что SCons звучит так, как будто это отвечает всем требованиям. Он полностью основан на Python (скрипты сборки на самом деле являются скриптами Python), он очень гибкий и отвечает целому ряду других ваших требований.

С веб-сайта:

SCons — это инструмент разработки программного обеспечения с открытым исходным кодом, то есть инструмент сборки нового поколения. Думайте о SCons как об улучшенной кросс-платформенной замене классической утилиты Make с интегрированной функциональностью, аналогичной autoconf/automake и кешам компилятора, таким как ccache. Короче говоря, SCons — это более простой, надежный и быстрый способ создания программного обеспечения.

person Greg Hewgill    schedule 24.03.2012

Что касается C++, очень хорошей системой сборки является CMake.

person Frederic Heem    schedule 10.06.2012

ninja не должен использоваться конечным пользователем, а каким-либо другим инструментом сборки высокого уровня, таким как CMake. И это действительно хороший вариант, особенно для больших и кроссплатформенных проектов. У него нет встроенной поддержки Python, но вам редко или никогда не нужны внешние сценарии с использованием CMake — у него есть инструменты для большинства распространенных задач.

person Slava    schedule 10.10.2012