Какие альтернативы сделать для linux/freebsd?

Какие есть альтернативы make для linux/freebsd?


person daniels    schedule 23.12.2008    source источник


Ответы (11)


Мне нравится SCons. Он устроен таким образом, что каждый скрипт сборки (файл SConstruct) также является синтаксически допустимой программой Python. Таким образом, вы можете встроить произвольную логику Python в свой скрипт сборки, если вам это нужно.

Это также намного быстрее, чем make, и автоматически вычисляет многие виды зависимостей.

person Greg Hewgill    schedule 23.12.2008
comment
'Извините? Быстрее, чем сделать? На каком древнем оборудовании вы используете make? В прошлый раз, когда я смотрел, SCons имеет серьезные проблемы с производительностью. Кроме этого, мне нравятся SCons. - person JesperE; 28.12.2008

Мой первый вопрос будет, что такое аудитория. Это для создания внутреннего программного обеспечения, которое будет создавать только ваша команда? Если да, изучите некоторые из уже представленных вариантов. Если это то, что будут создавать другие, либо придерживайтесь make, либо используйте инструмент, который создает makefile и отправляет его. Мы используем autoconf и automake для Linux и других платформ unix. На мой взгляд, вам нужна очень веская причина, чтобы сделать что-то кроме настройки; делать; сделать установку. У Boost есть собственный инструмент (модифицированная версия Jam), и он раздражает меня каждый раз, когда мне нужно попытаться скомпилировать его на необычной машине.

person KeithB    schedule 23.12.2008

cmake и imake являются утилитами сборки, хотя Imake больше не поддерживается. Cmake также является кроссплатформенным и может использоваться в Windows.

Если вы увлекаетесь Java, ANT — это инструмент сборки, ориентированный на Java (который не действительно хорошо играть с Make).

Troll tech создает инструмент под названием qmake, который они используют для создания QT. Он работает путем создания make-файлов — Troll нуждался в инструменте для поддержки кросс-платформенной сборки — поэтому вам все еще нужна другая утилита make.

person ConcernedOfTunbridgeWells    schedule 23.12.2008
comment
Trolltech перешел от qmake к cmake, поэтому я бы предпочел второй, а не первый. CMake создает make-файлы так же, как и проекты IDE для различных IDE. - person David Rodríguez - dribeas; 23.12.2008
comment
@dribeas правильно понял, QT, и я считаю, что весь проект KDE был перенесен на CMake. - person Bryan Rehbein; 24.12.2008
comment
Я не уверен, почему вы упоминаете cmake и imake в одном предложении... - person JesperE; 28.12.2008

Automake :p, который обычно используется в большинстве дистрибутивов приложений Linux, но требует немного больше работы, чем Makefile, но дает лучшие результаты http://www.gnu.org/software/automake/

http://www.openismus.com/documents/linux/automake/automake.shtml ‹-- хорошее объяснение того, как использовать automake и autoconf

person fmsf    schedule 23.12.2008
comment
Autotools на самом деле не является альтернативой make, потому что в конце концов он генерирует GNUMakefiles. Таким образом, вместо простого синтаксиса make-файла у вас теперь есть довольно старомодные сценарии оболочки и m4 макросы в качестве глазури на торте! Другими словами, теперь у вас есть три проблемы. - person Roland Smith; 29.08.2015

Если вы ищете что-то совершенно другое, есть Ant. Я сам не очень заинтересован в этом, но он предлагает некоторые преимущества переносимости (не зависит от оболочки unix и т. д.).

person mmagin    schedule 23.12.2008

Я слышал хорошие отзывы о Jam.

person diciu    schedule 23.12.2008
comment
Ссылка на Freetype Jam, полученная от Perforce Jam. Также производным от Perforce Jam является Boost Jam, на который стоит обратить внимание. Я использую Jam уже более 10 лет; Я тоже рекомендую. - person janm; 15.02.2010

OMake — это инструмент сборки для C/C++, OCaml и LaTeX с автоматическим анализом зависимостей. Он легко может создавать проекты в нескольких каталогах и находит изменения на основе суммы MD5, а не метки времени. У него также есть режим, в котором его можно запускать в фоновом режиме, создавая ваш проект всякий раз, когда файл изменяется. Как правило, для создания обычных типов проектов (программ и библиотек C/C++ или OCaml) требуется меньше кода, чем make. Я не пробовал это для больших проектов.

Обратите внимание, что если вы хотите программировать на OCaml, этот инструмент действительно полезен, поскольку компоновщик OCaml требует, чтобы скомпилированные модули отображались в командной строке в порядке зависимости, и определение этого порядка каждый раз, когда что-то изменяется, нетривиально.

person Jay Conrod    schedule 23.12.2008

Я использовал CMake для большего количества своих проектов, в том числе для портирования некоторых проектов, основанных на автоинструментах, и могу сказать, что он отлично справляется со своей задачей. Он в основном подходит для кроссплатформенных проектов C/C++.

person Unknown    schedule 24.12.2008

Проект, над которым я работаю, унаследовал некоторый код, который использует Cons вместо Make (не путать с SCons в ответе Грега Хьюгилла).

Cons написан на Perl, так же, как SCons написан на Python. Он автоматически управляет зависимостями, и вы можете использовать любой код Perl внутри скрипта сборки для обработки сложных последовательностей сборки.

Главный недостаток (и основная причина, по которой я сожалею, что мой проект использует его) заключается в том, что Cons не выполняет параллельные сборки в стиле make -j. Если вы компилируете несколько файлов, которые не зависят друг от друга, Cons будет компилировать их по одному, а make -j будет компилировать их параллельно, что отлично, если на вашей машине несколько ядер и потоков.

person Nathan Fellman    schedule 23.12.2008
comment
И, к сожалению, Cons кажется мертвым проектом; в последний раз, когда я смотрел, на нем нет текущей разработки. - person JesperE; 28.12.2008

Другой make для кросс-платформенных сборок – kmake (часть kbuild, по его собственным словам: kBuild — это фреймворк для написания простых make-файлов для сложных задач). Это расширенная версия GNU make. Он разработан ребятами из VirtualBox. Они используют его для создания своего продукта VirtualBox для Windows, Linux, MacOS и Solaris. Довольно портативный!

Подробнее см. http://svn.netlabs.org/kbuild.

person Jens    schedule 13.05.2011

WAF — интересная альтернатива. Написанный на python, он позволяет вам писать логику сборки на простом Python. Параллельные сборки + полуавтоматическое отслеживание зависимостей на основе магических сигнатур работают достаточно хорошо. Он якобы кроссплатформенный (т.е. умеет делать сборки в Windows), но я этого не пробовал.

У него довольно крутая кривая обучения, но он также поставляется с "Книгой WAF" чтобы помочь в этом процессе.

person ArtemB    schedule 17.01.2014
comment
Некоторое время назад мне пришлось заглянуть в waf, чтобы решить проблему со сборкой. После просмотра wscript мне пришлось копаться в коде самого waf. Это выглядит довольно непитоново. Ради интереса запустил pep8 на последней версии, выдало 6000 ошибок и 25000 предупреждений. Справедливости ради, в последней версии, которую я только что просмотрел, авторы добавили много документации. - person Roland Smith; 29.08.2015