Обновлено 16 января 2019 года: уточнены советы по мере развития инструментов.
Раньше я пользовался автоинструментом в течение значительного времени.
В настоящее время я интенсивно использую мезон и cmake только тогда, когда мне это нужно.
Несколько личных советов:
для больших команд, придерживайтесь CMake, если вы хотите использовать генераторы для XCode. Если вам это не нужно, я бы использовал Meson напрямую. Meson, начиная с версии 0.49, также поддерживает поиск файлов конфигурации CMake (хотя я еще не проверял, насколько хорошо это работает). Кроме того, Visual Studio на данный момент достаточно хорошо поддерживается, хотя, опять же, я не пытался сам. Преимущество CMake в том, что он имеет интеграцию с Visual Studio.
Удаление автоинструментов. Мезон уже хорошо все покрывает. Их модель кросс-компиляции удивительно понятна. В CMake, в прошлый раз, когда я проверял, все было гораздо сложнее.
Я также пробовал scons , waf и tup .
Наиболее полнофункциональная, кроссплатформенная система - CMake
, но DSL от meson будет проще использовать людям, привыкшим к python и другим. Meson также начинает поддерживать VS (генератор VS2015), и некоторые проекты уже имеют экспериментальную поддержку для этого, например, gstreamer. Gstreamer компилируется в окнах также с мезонами. Прямо сейчас есть генератор VS2015 и VS2017, но я в последнее время не пробовал себя в генераторах. Начиная с meson 0.37.1 требовалась некоторая работа, но они улучшаются, и текущая версия уже составляет 0,40.
Мезон
Плюсы:
- DSL вообще не мешает. На самом деле, это очень мило и знакомо, основано на python.
- Хорошо продуманная поддержка кросс-компиляции.
- Все объекты строго типизированы: вы не можете легко делать ошибки подстановки строк, так как объекты - это такие объекты, как «зависимость», «включающий каталог» и т. Д.
- Очень понятно, как добавить модуль для одного из ваших инструментов.
- Кросс-компиляция кажется более простой в использовании.
- Действительно хорошо продуманный. Дизайнер и главный писатель Meson знает, что
он очень хорошо говорит о проектировании системы сборки.
- Очень, очень быстро, особенно в инкрементных сборках.
- Документация в 10 раз лучше, чем то, что вы можете найти в cmake. Зайдите на страницу http://mesonbuild.com и вы найдете учебник, инструкции и хороший справочник. Он не идеален, но действительно обнаружим.
Минусы:
- Не настолько зрелый, как CMake, однако, я считаю, что он уже полностью пригоден для C ++.
- Не так много доступных модулей, хотя gnome, qt и обычные уже есть.
- Генераторы проекта: кажется, генератор VS не работает так хорошо, как сейчас. Генераторы проектов CMake гораздо более зрелые.
- Имеет зависимость от python3 + ninja.
Cmake
Плюсы:
- Генерирует проекты для множества различных IDE. Это очень хорошая функция для команд.
- Хорошо играет с инструментами Windows, в отличие от автоинструментов.
- Зрелый, почти де-факто стандарт.
- Microsoft работает над интеграцией CMake для Visual Studio.
Минусы:
- Он не соответствует общеизвестным стандартам или рекомендациям.
- Нет цели удаления.
- DSL - это странно, когда вы начинаете делать сравнения и тому подобное, и строки со списком или экранирующие символы, вы будете делать много ошибок, я почти уверен.
- Кросс-компиляция - отстой.
Autotools
Плюсы:
- Самая мощная система для кросс-компиляции, ИМХО.
- Сгенерированным сценариям не нужно ничего, кроме make, оболочки и, если вам нужно, компилятора.
- Командная строка действительно хороша и последовательна.
- Стандарт в мире Unix, множество документов.
- Действительно мощная командная строка: смена каталогов установки, удаление, переименование бинарных файлов ...
- Если вы ориентируетесь на Unix, источники пакетовс этим инструментом действительно удобно.
Минусы:
- Это не будет хорошо работать с инструментами Microsoft.Настоящий showtopper.
- Кривая обучения ... ну ... Но на самом деле я могу сказать, что CMake тоже не был таким простым.
- Использование рекурсивного make широко распространено в унаследованных проектах,Automake поддерживает нерекурсивные сборки , но этот подход не очень широко используется.
Что касается кривой обучения, есть два очень хороших источника для изучения:
Первый источник поможет вам быстрее начать работу.Книга является более углубленным обсуждением.
Из Scons, waf и tup, Scons и tup больше похожи на make.Waf больше похож на CMake и autotools.Сначала я попробовал waf вместо cmake.Я думаю, что он слишком силен в том смысле, что у него есть полный ООП API.Сценарии совсем не выглядели короткими, и это действительно сбивало меня с толку рабочим каталогом и связанными с ним вещами.В конце я обнаружил, что автоинструменты и CMake - лучший выбор.Мой любимый из этих 3 систем сборки - это tup.
Tup
Pros
- Действительно верно.
- Безумно быстро .Вы должны попытаться в это поверить.
- Язык сценариев опирается на очень простую идею, которая может быть понята за 10 минут.
Минусы
- У него нет полнофункциональной конфигурации.
- Я не смог найти способ создания целей, таких как
doc
, так как они генерируют файлы, о которых я не знаю, и они должны быть перечислены ввывод перед созданием, или, по крайней мере, это мой вывод на данный момент.Это было действительно досадное ограничение, если оно есть, поскольку я не уверен.
В общем, единственное, что я сейчас рассматриваю для новых проектов, это Cmake и Meson.Когда у меня будет возможность, я попробую также tup, но в нем отсутствует инфраструктура конфигурации, что означает, что она усложняет ситуацию, когда вам нужны все эти вещи.С другой стороны, это действительно быстро.