По правде говоря, «единственная реальная« изящество экономии »в Autotools заключается в том, что это то, чем в основном пользуются все проекты GNU.
Проблемы с автоинструментами:
- Действительно синтаксис макроса ARCANE m4 в сочетании с многословным, скрученным сценарием оболочки для тестов на «совместимость» и т. Д.
- Если вы не обращаете внимания, вы будете испортить возможность кросс-компиляции (Это
Следует четко отметить, что Nokia придумала Scratchbox / Scratchbox2, чтобы сделать шаг в сторону сильно сломаны настройки сборки Autotools для Maemo / Meego.) Если по какой-либо причине у вас есть фиксированные статические пути в ваших тестах, вы нарушите поддержку кросс-компиляции, потому что она не будет соответствовать вашей спецификации sysroot и будет вытаскивать вещи из вашей хост-системы. Если вы нарушите поддержку кросс-компиляции, это сделает ваш код непригодным для таких вещей, как
OpenEmbedded и делает его «забавным» для дистрибутивов, пытающихся строить свои выпуски на кросс-компиляторе, а не на цели.
- Выполняет ОГРОМНОЕ количество тестов на проблемы с древними, сломанными компиляторами, которые NOBODY в настоящее время используют практически во всех сферах производства в наше время. Если вы не создаете что-то вроде glibc, libstdc ++ или GCC на действительно древней версии Solaris, AIX и т. П., Тесты являются пустой тратой времени и источником для многих, много потенциальных поломок вещей как упомянуто выше.
- Очень тяжело получить настройку Autotools для создания полезного кода для системы Windows. (Хотя я мало пользуюсь Windows, это серьезная проблема, если вы разрабатываете якобы кроссплатформенный код.)
- Когда он сломается, вы потратите ЧАСОВ , гоняясь за хвостом, пытаясь разобраться в вещах, которые кто-то написал, что скриптинг ошибался, чтобы разобраться в вашей сборке (Фактически это то, что я пытаюсь сделать (или, скорее, полностью вырвать Autotools - я сомневаюсь, что в оставшейся части этого месяца у меня будет достаточно времени, чтобы разобраться в беспорядке ...) для работы прямо сейчас, когда я печатаю это Apache Thrift имеет одну из этих BROKEN систем сборки, которые не будут кросс-компилироваться.)
- "Обычные" пользователи на самом деле НЕ собираются просто сделать "./configure; make" - во многих случаях они будут тянуть пакет, предоставленный кто-то, как вне PPA, или их поставщик распространения. «Нормальные» пользователи не являются разработчиками и не берут тарболлы во многих случаях. Это снобизм со стороны каждого, предполагая, что так и будет. Типичные пользователи тарбаллов - разработчики, которые что-то делают, так что они сломаются из-за поломки, если она там есть.
Это работает ... большую часть времени ... это все, что вы можете сказать об Autotools. Это система, которая решает несколько проблем, которые действительно касаются только проекта GNU ... для их базового, базового кода инструментария. (Правка (24.05.2014): Следует отметить, что этот тип беспокойства является потенциально ПЛОХОЙ , о котором нужно беспокоиться - сердечные кровотечения частично проистекают из этого мышления и с правильным современные системы, вы действительно не имеете никакого дела, касающегося большей части того, что исправляет Autotools. GNU, вероятно, необходимо сделать тщательное удаление кодовой базы, в свете произошедшего с Heartbleed) Вы можете использовать его для выполнения своего проекта, и он может хорошо работать для небольшого проекта, который, как вы ожидаете, не будет работать нигде, кроме Linux или там, где инструментарий GNU явно работает правильно. Утверждение о том, что оно «прекрасно интегрируется с Linux», является вполне жирным шрифтом и довольно неверно . Он достаточно хорошо интегрируется с инструментарием GNU и решает проблемы, которые возникают у ИТ-специалистов с его целями.
Это не означает, что нет проблем с другими параметрами, обсуждаемыми здесь.
SCons - это скорее замена для Make / GMake / etc.и выглядит довольно хорошо, с учетом всех обстоятельств Однако ...
- Это все еще действительно больше инструмент POSIX.Вероятно, вы могли бы с большей легкостью заставить MinGW создавать вещи для Windows с этим, чем с Autotools, но это все же действительно более приспособлено для работы с POSIX, и вам нужно установить Python и SCons дляиспользуйте его.
- У него есть проблемы с кросс-компиляцией, если только вы не используете что-то вроде Scratchbox2.
- Очевидно, что он медленнее и менее стабилен, чем CMake, по сравнению с их собственным сравнением.Они придумали нерешительные (сторона POSIX нуждается в make / gmake для построения ...) негативов для CMake по сравнению с SCons.(Кроме того, если вам нужна TH * большая расширяемость по сравнению с другими решениями, вы должны спросить себя, не слишком ли сложен ваш проект ...)
Примеры, приведенные для CMake в этой теме, немного обманчивы.
Однако ...
- Вам нужно будет выучить новый язык.
- Существуют нелогичные вещи, если вы привыкли делать Make, SCons илиAutotools.
- Вам потребуется установить CMake на систему, для которой вы создаете.
- Вам понадобится твердый компилятор C ++, если у вас нет готовых двоичных файлов для него.
По правде говоря, ваши цели должны определять то, что вы выбираете здесь.
- Вам нужно иметь дело с LOT сломанных цепочек инструментов для создания корректного рабочего бинарного файла?Если да, вы можете рассмотреть Autotools, зная о недостатках, которые я упомянул выше.CMake может справиться со многими из этих проблем, но меньше беспокоится об этом, чем Autotools.SCons можно расширить, чтобы беспокоиться об этом, но это не готовый ответ.
- Вам нужно беспокоиться о целях Windows?Если это так, Autotools должен быть в буквальном смысле не работает.Если это так, SCons может / не может быть хорошим выбором.Если это так, то CMake - хороший выбор.
- Вам нужно беспокоиться о кросс-компиляции (универсальные приложения / библиотеки, такие как Google Protobufs, Apache Thrift и т. Д. СЛЕДУЕТ заботиться об этом ...)?Если это так, Autotools может работать на вас, если вам не нужно беспокоиться о Windows, но вы будете тратить много времени на поддержку своей системы конфигурации по мере изменения ситуациина тебе.SCons практически не используется в настоящий момент, если вы не используете Scratchbox2 - у него действительно нет ручки для кросс-компиляции, и вам нужно будет использовать эту расширяемость и поддерживать ее так же, какВы будете с Automake.Если это так, вы можете рассмотреть CMake, так как он поддерживает кросс-компиляцию без особых проблем с утечкой из песочницы и будет работать с / без чего-то вроде Scratchbox2 и интегрирует nicely с такими вещами, как OpenEmbedded.
Существует множество причин, по которым многие проекты отказываются от qmake, Autotools и т. д. и переходят на CMake.До сих пор я вполне мог ожидать, что проект, основанный на CMake, попадет в ситуацию кросс-компиляции или на установку VisualStudio или потребует небольшой очистки, потому что проект не учитывает только компоненты Windows или OSX.в кодовую базу.Я не могу ожидать, что из проекта, основанного на SCons, и я полностью ожидаю, что 1/3 или более проектов Autotools допустили ошибку ЧТО-ТО , что исключает его правильное построение в любом контекстекроме хоста, строящего один или Scratchbox2.