Альтернативы для Linux/freebsd?[закрыто]
Вопрос
Какие есть альтернативы делать для Linux/FreeBSD?
Решение
Мне нравится SCons.Он построен таким образом, что каждый сценарий сборки (файл SConstruct
file) также является синтаксически допустимой программой Python.Таким образом, при необходимости вы можете встроить произвольную логику Python в свой сценарий сборки.
Это также намного быстрее, чем make
и автоматически вычисляет многие виды зависимостей.
Другие советы
Мой первый вопрос: какова аудитория?Это для создания собственного программного обеспечения, которое будет создавать только ваша команда?Если да, изучите некоторые из уже представленных вариантов.Если это что-то, что будут создавать другие, либо придерживайтесь make, либо используйте инструмент, который создает make-файл и отправляет его.Мы используем autoconf и automake для Linux и других unix-платформ.На мой взгляд, вам нужна очень веская причина, чтобы сделать что-то кроме настройки;делать;сделать установку.У Boost есть собственный инструмент (модифицированная версия Jam), и он меня раздражает каждый раз, когда мне нужно попытаться скомпилировать его на необычной машине.
cmake и я делаю Обе утилиты сборки, хотя Imake больше не поддерживается.Cmake также является кроссплатформенным и может использоваться и в Windows.
Если вы увлекаетесь Java, МУРАВЕЙ — это инструмент сборки, ориентированный на Java (который не очень хорошо работает с Make).
Тролльские технологии создают инструмент под названием qmake, который они используют для сборки QT.Он работает путем создания make-файлов — Троллю нужен был инструмент для поддержки кросс-платформенной сборки, поэтому вам все еще нужна еще одна утилита make.
Automake :p, который обычно используется в большинстве дистрибутивов приложений Linux, но дает немного больше работы, чем Makefile, но дает лучшие результаты. http://www.gnu.org/software/automake/
http://www.openismus.com/documents/linux/automake/automake.shtml <-- хорошее объяснение того, как использовать automake и autoconf
Если вы ищете что-то совершенно другое, есть Муравей.Лично меня это не особо интересует, но оно дает некоторые преимущества переносимости (не зависит от оболочки unix и т. д.).
Я слышал хорошие отзывы о Варенье.
OMake — это инструмент сборки для C/C++, OCaml и LaTeX с автоматическим анализом зависимостей.Он легко может создавать проекты в нескольких каталогах и находит изменения на основе суммы MD5, а не метки времени.Он также имеет режим, в котором его можно запускать в фоновом режиме, создавая проект при каждом изменении файла.Как правило, для создания распространенных типов проектов (программ и библиотек C/C++ или OCaml) требуется меньше кода, чем в make.Я не пробовал это для более крупных проектов.
Обратите внимание: если вы хотите программировать на OCaml, этот инструмент действительно полезен, поскольку компоновщик OCaml требует, чтобы скомпилированные модули отображались в командной строке в порядке зависимости, и определение этого порядка каждый раз, когда что-то меняется, является нетривиальной задачей.
Я использовал CMake для большего количества своих проектов, включая портирование некоторых проектов на основе автоинструментов, и могу сказать, что он очень хорошо справляется со своей задачей.Он в основном подходит для кроссплатформенных проектов C/C++.
Проект, над которым я работаю, унаследовал некоторый код, использующий Cons
вместо Make
(не путать с SCons
в ответе Грега Хьюгилла).
Cons
написан на Perl, очень похоже на SCons
написан на Python.Он автоматически управляет зависимостями, и вы можете использовать любой код Perl внутри сценария сборки для обработки сложных последовательностей сборки.
Главный недостаток (и главная причина, по которой мне жаль, что мой проект использует его) заключается в том, что Cons
не выполняет параллельные сборки в стиле make -j
.Если вы компилируете несколько файлов, которые не зависят друг от друга Cons
будет компилировать их по одному, в то время как make -j
скомпилирует их параллельно, что отлично, если на вашей машине несколько ядер и потоков.
Еще одна версия кроссплатформенных сборок — kmake
(часть kbuild
, своими словами: kBuild — это платформа make-файлов для написания простых make-файлов для сложных задач.).Это расширенная версия GNU. make
.Он разработан ребятами из VirtualBox.Они используют его для создания своего продукта VirtualBox для Windows, Linux, MacOS и Solaris.Довольно портативный!
Видеть http://svn.netlabs.org/kbuild для получения подробной информации.
ВАФ это интересная альтернатива.Написанный на Python, он позволяет вам писать логику сборки на простом Python.Параллельные сборки + полуавтоматическое отслеживание зависимостей на основе сигнатур работают достаточно хорошо.Предположительно, это кроссплатформенный (т.умеет делать сборки под Windows), но я так не пробовал.
У него довольно крутая кривая обучения, но он также имеет «Книга WAF» чтобы помочь с процессом.