Какова в настоящее время лучшая [закрытая] система сборки

Несколько лет назад я изучил использование некоторой системы сборки, которая не является Make, и инструменты как CMake и SCons казались довольно примитивными. Я хотел бы узнать, улучшилась ли ситуация. Так, под следующими критериями, что в настоящее время является лучшим инструментом сборки:

  • агностик платформы: должен работать над окнами, Linux, Mac
  • агностик языка: должен иметь встроенную поддержку общих вещей как создание C/C++ и другого статического langs. Я предполагаю, что это не должно поддерживать полный комплект автоинструментов.
  • расширяемый: Я должен быть в состоянии записать правила генерировать файлы, как от restructuredText, латекса, пользовательских форматов, и т.д. Я действительно не забочусь о том, в каком языке я должен записать правила, но я предпочел бы реальный язык, а не DSL.
  • Я предпочел бы не писать любой XML вручную, который я думаю, например, ant требует.
  • В свободном доступе (предпочтительно открытый исходный код)

Термин "лучший" немного субъективен, но я думаю, что ответы могут быть оценены объективно критериями выше.

43
задан Paul Biggar 18 December 2009 в 18:21
поделиться

5 ответов

Я бы окончательно проголосовал за предварительную версию . Хотя он не такой мощный, как его старшие братья, его главное преимущество - абсурдная простота и удобство использования. Упрощает написание мультиплатформенного и мультиплатформенного кода, а также генерирует решения Visual Studio, проекты XCode, Makefile и т. Д. Без какой-либо дополнительной работы.

24
ответ дан 26 November 2019 в 23:04
поделиться

CMake

CMake - это расширяемая программа с открытым исходным кодом. система, которая управляет процессом сборки в операционной системе и в независимо от компилятора

6
ответ дан 26 November 2019 в 23:04
поделиться

Проект Selenium переходит на Rake не потому, что он лучший, а потому, что он работает с несколькими языками немного лучше, чем все другие инструменты сборки, и является кроссплатформенным (разработан в Ruby).

У всех инструментов сборки есть свои проблемы, и люди учатся жить с ними. Что-то, что работает на JVM, очень хорошо подходит для создания приложений, поэтому Ant , Maven (я знаю, что это ужасно), Ivy , Rake

1
ответ дан 26 November 2019 в 23:04
поделиться

Final Builder хорошо известен в мире Windows

-1
ответ дан 26 November 2019 в 23:04
поделиться

Итак, если судить чисто по критериям, изложенным в вопросе, система сборки, которая кажется наиболее подходящей, вероятно, waf - чистый Python, обеспечивает поддержку C ++ и другие языки, общие, мощные, не DSL.


Однако, исходя из моего личного опыта, я предпочитаю CMake для проектов C ++. (Я пробовал CMake, SCons и waf, и мне они понравились примерно в таком порядке). CMake - это общее решение, но оно имеет встроенную поддержку C ++, что делает его лучше, чем более общее решение, когда вы на самом деле работаете с C ++.

Модель сборки CMake для C ++ является более декларативной и менее императивной, и, следовательно, мне проще в использовании. Синтаксис языка CMake не очень хорош, но декларативная сборка с нечетным синтаксисом превосходит императивную сборку в Python. Из трех CMake, кажется, также лучше всего поддерживает " Я думаю). Насколько я понимаю, это очень умно.

Создаете ли вы библиотеку или приложение, также может определить, какая система сборки лучше. Boost по-прежнему использует систему на основе пробелов, отчасти потому, что она обеспечивает наиболее полную поддержку для управления типами сборки, более сложными, чем «Отладка» и «Выпуск». Большинство расширенных библиотек имеют пять или шесть разных версий, особенно в Windows, поэтому людям нужны совместимые библиотеки, которые связываются с разными версиями CRT.

У меня не было никаких проблем с CMake в Windows, но, конечно, ваш опыт может отличаться . Есть приличный графический интерфейс для настройки зависимостей сборки, хотя его неудобно использовать для повторных сборок. К счастью, есть еще и клиент командной строки. Что я' Пока что я остановился на создании тонкой оболочки Makefile, которая вызывает CMake из объекта objdir; Затем CMake создает файлы Makefile в objdir, и исходный Makefile использует их для сборки. Это гарантирует, что люди не вызовут случайно CMake из исходного каталога и не засорят свой репозиторий. В сочетании с MinGW этот «сэндвич CMake» обеспечивает удивительно согласованный опыт кроссплатформенной сборки!

13
ответ дан 26 November 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: