it-swarm-ru.tech

Перспективные альтернативы сделать?

Я использую make и makefiles уже много лет, и хотя эта концепция является разумной, в реализации есть что-то, что можно пожелать.

Кто-нибудь нашел какие-нибудь хорошие альтернативы, которые не усложняют проблему?

71
mike511

проверить SCons . Например, Doom 3 и Blender используют его.

26
WaldWolf

У меня много друзей, которые клянутся CMake за кроссплатформенную разработку:

http://www.cmake.org/

Это система сборки, используемая для VTK (среди прочего), которая является библиотекой C++ с кроссплатформенными привязками Python, Tcl и Java. Я думаю, что это, вероятно, наименее сложная вещь, которую вы найдете с таким количеством возможностей.

Вы всегда можете попробовать стандартный autotools . Файлы Automake довольно легко собрать, если вы работаете только в Unix и придерживаетесь C/C++. Интеграция более сложна, и автоинструменты далеки от самой простой системы.

25
Todd Gamblin

Некоторые из проектов GNOME были перенесены в waf .

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

15
Eric Talevich

Я рекомендую использовать Rake . Это самый простой инструмент, который я нашел.

Другие хорошие инструменты, которые я использовал, хотя, если Ruby не ваша вещь, это:

  • AAP (Python)
  • SCons (Python)
  • Ant (Java, конфигурация в XML, довольно сложная)
11
Clinton N. Dreisbach

doit это инструмент python. Он основан на концепциях инструментов сборки, но более универсален.

  • вы можете определить, насколько актуальна задача/правило (не только проверка временных меток, целевые файлы не требуются)
  • зависимости могут быть рассчитаны динамически с помощью других задач
  • действия задачи могут быть функциями python или командами Shell
10
schettino72

Помните о ninja инструменте сборки (v1.8.2 сентябрь 2017 г.), на который влияют tup и redo .

Генератор файлов сборки cmake (например, для файлов сборки Unix, Visual Studio, XCode, Eclipse CDT, ...) также может генерировать файлы сборки ninja начиная с версии 2.8.8 (апрель 2012 г.) и, afaik, ninja теперь даже инструмент сборки по умолчанию, используемый cmake.

Предполагается, что он превосходит инструмент make (лучшее отслеживание зависимостей, а также распараллеливание).

cmake - это уже хорошо зарекомендовавший себя инструмент. Вы всегда можете выбрать инструмент сборки позже, не изменяя ваши файлы конфигурации. Поэтому, если в будущем будет разработана улучшенная сборка, которая будет поддерживаться cmake, вы можете легко переключиться на нее.

Обратите внимание, что для c/c ++ улучшение времени компиляции иногда ограничено из-за заголовков, включаемых через препроцессор (в частности, при использовании библиотек только для заголовков, например boost & eigen ), которые надеюсь, будет заменено предложением modules (в техническом обзоре c ++ 11 или в конце концов c ++ 1y). Проверьте это презентация для деталей об этой проблеме.

5
Hotschke

Я написал инструмент под названием sake , который пытался сделать записи, похожие на makefile, очень удобными для чтения и записи.

4
tonyfischetti

Это зависит от того, что вы пытаетесь сделать. Если все вы хотите указать целевые зависимости в стиле make и вызов команды, то Make на самом деле является одним из лучших инструментов для этой задачи. :-) Рейк очень хороший, но может быть неуклюжим в некоторых простых случаях. Ant, конечно, многословный город, но он лучше поддерживает создание Java-подобных языков (включая Scala и Groovy). Кроме того, Ant доступен везде. Это главная причина, по которой я его использую. Поскольку он работает последовательно в Windows, он на самом деле даже кроссплатформенный, чем Make.

Если вы хотите управлять зависимостями для Java-подобных библиотек, Maven - канонический выбор, но лично мне Buildr гораздо лучше. Это быстрее и намного проще в настройке (основано на Rake). К сожалению, он пока не такой повсеместный, как Maven.

3
Daniel Spiewak

Я все еще предпочитаю делать после рассмотрения множества альтернатив. Когда вы автоматически генерируете зависимости либо с помощью компилятора, либо с помощью чего-то вроде fastdep, вам мало что остается делать. В частности, я не хочу, чтобы мой скрипт сборки был привязан к языку реализации, и мне не нравится писать вещи в XML, когда доступны более читаемые альтернативы. Инструмент, который раскрывает язык общего назначения, имеет свои достоинства, но еще один интерпретируемый язык - нет (afaik). Что не так с Make? может подойти к вашей точке зрения об отказе от make.

/ Allan

2
Allan Wind

Система make в Ruby называется rake: http://rake.rubyforge.org/

Выглядит довольно многообещающе.

Всегда есть Ant: http://ant.Apache.org , который я лично нахожу ужасным. Однако это де-факто стандарт для Java разработки.

1
davetron5000

Я не уверен, что вы задаете правильный вопрос здесь.

Вы после упрощенной марки? В этом случае вам нужно найти кого-то, кто очень хорошо знаком с make, чтобы создать серию (M | m) akefiles, которая упростит вашу проблему.

Или вы хотите взглянуть на основную технологию? Хотим ли мы обеспечить реализацию архитектуры типа "дизайн за контрактом", которая встроена в кодовый дизайн? Или, возможно, сам язык, например Ада и ее концепция спецификаций (интерфейсов) и тел (реализаций)?

В каком направлении вы будете следовать, определенно повлияет на потенциальные результаты такого вопроса?

По сути, новые способы построения систем только из тех компонентов, которые действительно изменились, по сравнению с принятием новых технологий, в которых такие механизмы встроены в конструкцию.

Извините, это не прямой ответ. Просто хотел попытаться заставить вас оценить, по какому пути вы хотели идти.

веселит,

Обкрадывать

0
Rob Wells

FlowTracer из RTDA - еще один хороший выбор, который я видел в коммерческих целях в крупномасштабной среде (десятки тысяч рабочих мест): http://www.rtda.com/flowtracer-design-flow-infrastructure-software

Он имеет графический интерфейс, который показывает граф зависимостей с цветными полями для заданий и овалов для файлов. Когда количество заданий и файлов становится большим, инструмент на основе графического интерфейса, такой как FlowTracer, становится очень важным.

Начальная стоимость установки выше, чем Make. Существует кривая обучения для настройки вашего первого потока с помощью него. После этого все становится быстрее.

0
bu11d0zer