




Automake: p, который обычно используется в большинстве дистрибутивов приложений Linux, но дает немного больше работы, чем Makefile, но дает лучшие результаты http://www.gnu.org/software/automake/
http://www.openismus.com/documents/linux/automake/automake.shtml <- хорошее объяснение того, как использовать automake и autoconf
cmake и я делаю являются утилитами сборки, хотя Imake больше не поддерживается. Cmake также является кроссплатформенным и может использоваться в Windows.
Если вам нравится java, МУРАВЕЙ - это инструмент сборки, ориентированный на Java (который на самом деле не очень хорошо работает с Make).
Технологи троллей создали инструмент под названием qmake, который они используют для создания QT. Он работает путем создания файлов make-файлов - Troll нуждался в инструменте для поддержки кроссплатформенной сборки, поэтому вам все равно нужна другая утилита make.
Trolltech перешел из qmake в cmake, поэтому я бы выбрал последнее, а не первое. CMake генерирует make-файлы столько же, сколько проекты IDE для множества IDE.
@dribeas все правильно, QT и я полагаем, что весь проект KDE был перенесен на CMake.
Я не уверен, почему вы упоминаете cmake и imake в одном предложении ...
Если вы ищете что-то совершенно другое, есть Муравей. Я сам не очень заинтересован в этом, но он предлагает некоторые преимущества переносимости (отсутствие зависимости от оболочки unix и т. д.)
OMake - это инструмент сборки для C / C++, OCaml и LaTeX с автоматическим анализом зависимостей. Он легко может создавать проекты в нескольких каталогах и находить изменения на основе суммы MD5, а не метки времени. Он также имеет режим, в котором его можно запускать в фоновом режиме, создавая ваш проект при каждом изменении файла. Как правило, для создания общих типов проектов (программ и библиотек на C / C++ или OCaml) требуется меньше кода, чем в make. Я не пробовал его для больших проектов.
Обратите внимание: если вы хотите программировать в OCaml, этот инструмент действительно полезен, поскольку компоновщик OCaml требует, чтобы скомпилированные модули отображались в командной строке в порядке зависимости, и выяснять этот порядок каждый раз, когда что-то изменяется, нетривиально.
Я слышал хорошие отзывы о Варенье.
Ссылка ведет на Freetype Jam, полученный от Perforce Jam. Также на основе Perforce Jam есть Boost Jam, на который стоит обратить внимание. Я использую Jam более 10 лет; Я тоже рекомендую.
Мой первый вопрос: какова аудитория? Это для создания собственного программного обеспечения, которое будет создавать только ваша команда? Если да, изучите некоторые из уже представленных вариантов. Если это что-то, что будут создавать другие, либо придерживайтесь make, либо используйте инструмент, который создает make-файл и отправляет его. Мы используем autoconf и automake для Linux и других платформ unix. На мой взгляд, вам нужна очень веская причина, чтобы заняться чем-то другим, кроме настройки; делать; сделать установку. У Boost есть собственный инструмент (модифицированная версия Jam), и он раздражает меня каждый раз, когда мне нужно попытаться скомпилировать его на необычной машине.
Мне нравится SCons. Он построен таким образом, что каждый сценарий сборки (файл SConstruct) также является синтаксически допустимой программой Python. Таким образом, вы можете встроить произвольную логику Python в свой скрипт сборки, если вам нужно.
Он также намного быстрее, чем make, и автоматически вычисляет многие виды зависимостей.
'Извините? Быстрее чем сделать? На каком древнем оборудовании вы работаете? В прошлый раз я обнаружил, что у SCons серьезные проблемы с производительностью. Кроме того, мне нравятся SCons.
Проект, над которым я работаю, унаследовал некоторый код, который использует Cons вместо Make (не путать с SCons в ответе Грега Хьюджилла).
Cons написан на Perl, так же как SCons написан на Python. Он автоматически управляет зависимостями, и вы можете использовать любой код Perl внутри скрипта сборки для обработки сложных последовательностей сборки.
Главный недостаток (и основная причина, по которой мне жаль, что мой проект его использует) заключается в том, что Cons не выполняет параллельных сборок в стиле make -j. Если вы компилируете несколько файлов, которые не зависят друг от друга, Cons будет компилировать их по одному, а make -j будет компилировать их параллельно, что отлично, если у вас есть несколько ядер и потоков на вашем компьютере.
И, к сожалению, Cons кажется мертвым проектом; в последний раз, когда я смотрел, на нем нет текущих разработок.
Я использовал CMake для большего количества своих проектов, в том числе для переноса некоторых из них, основанных на автоинструментах, и могу сказать, что он очень хорошо выполняет свою работу. Это в основном подходит для кроссплатформенных проектов C / C++.
Еще одна марка для кроссплатформенных сборок - это kmake (часть kbuild, по его собственным словам: kBuild - это структура make-файлов для написания простых make-файлов для сложных задач.). Это расширенная версия GNU make. Он разработан людьми VirtualBox. Они используют его для создания своего продукта VirtualBox для Windows, Linux, MacOS и Solaris. Довольно портативный!
Подробнее см. http://svn.netlabs.org/kbuild.
WAF - интересная альтернатива. Написанный на python, он позволяет писать логику сборки на простом Python. Параллельные сборки + полуавтоматическое отслеживание зависимостей на основе магических сигнатур работают достаточно хорошо. Предположительно он кроссплатформенный (т.е. знает, как делать сборки в Windows), но я этого не пробовал.
У него довольно крутая кривая обучения, но он также поставляется с "Книга WAF", чтобы помочь в процессе.
Некоторое время назад мне пришлось заглянуть в waf, чтобы исправить проблему сборки. После просмотра wscript мне пришлось копаться в коде самого waf. Выглядит довольно непифонично. Ради интереса я запустил pep8 в последней версии, и он выдал 6000 ошибок и 25000 предупреждений. Честно говоря, в последний выпуск, который я только что посмотрел, авторы добавили много документации.
Autotools на самом деле не альтернатива
make, потому что в конечном итоге он генерирует файлы GNUMakefiles. Таким образом, вместо загадочного синтаксиса make-файла теперь у вас также есть довольно старомодные сценарии оболочки и макросыm4в качестве вишенки на торте! Другими словами, теперь у вас проблемы с три.