Системы компиляции. Помимо простой настройки, сделайте, сделайте установку

Все или почти все (а если вам не повезло) нам пришлось скомпилировать программу из исходного кода. На самом деле, в большинстве проектов для установки программы достаточно выполнить ./configure && make && make install, но мы увидим разные альтернативы:

Сделать GNU

GNU Make - это низкоуровневая система компиляции, в которой настроено несколько вещей и тесты не выполняются:

Плюсы:

  • Очень распространенный
  • Просто понять
  • Быстро

Минусы:

  • Немного настраиваемый
  • Трудно поддерживать
  • Не проводит тесты

make

BSD сделать

BSD Make - это еще одна версия Make, которая в настоящее время используется операционными системами * BSD. Он отличается от GNU Make, поскольку является наиболее полной по функциональности программой BSD Make, хотя и менее распространен.

Плюсы:

  • Быстро
  • Просто понять
  • Больше возможностей, чем GNU Make

Минусы:

  • Не распространен в мире Linux
  • Не проводит тесты
  • Немного настраиваемый
  • Трудно поддерживать

make

Автоинструменты

Autotools - это официальная система GNU, которая генерирует сценарий под названием configure, который мы должны вызвать, чтобы сгенерировать соответствующий файл GNU Make Makefile. Он широко используется, однако все больше и больше людей (включая меня) думают, что он слишком громоздкий, сложный, медленный и не очень совместимый.

Плюсы:

  • Легко настраиваемый
  • Очень распространенный

Минусы:

  • Небольшая переносимость между системами, отличными от UNIX
  • Выполните слишком много тестов (проверьте ВСЕ, и ВСЕ есть ВСЕ)
  • Очень медленно при настройке
  • Плохая обратная совместимость

./configure && make

CMake

(Моя предпочтительная система) CMake - это система, которая компенсирует недостатки Autotools во многих аспектах, таких как их ужасная обратная совместимость и переносимость. Также улучшаются тестовые системы, которые легко настраиваются под нужды каждого проекта. Дело в том, что все больше и больше проектов используют CMake, например KDE, PortAudio, Ogre3D и т. Д. Мы можем распознать этот тип систем благодаря файлу CMakeLists.txt, который будет генерировать Makefile или проект для Eclipse или CodeBlocks.

Плюсы:

  • Быстро
  • Отличная кроссплатформенная поддержка
  • Вы можете определить тесты очень настраиваемым способом

Минусы:

  • Сначала трудно понять
  • Вы должны работать с абстракцией, которая поначалу может показаться пугающей
  • Распространение мало, хотя постепенно растет

cmake . && make

Вопрос-производитель

QMake - это система, разработанная Trolltech для компиляции проектов, сделанных на Qt. Таким образом, qmake уделяет большое внимание Qt и обычно является форматом, используемым IDE, такими как QtCreator. Он довольно популярен в проектах Qt, но не встречается за пределами этой среды:

Плюсы:

  • Очень хорошо интегрирован с Qt
  • Быстро
  • Хорошая мультиплатформенность в Qt

Минусы:

  • Нечасто вне приложений Qt

qmake . && make

SCons

SCons - это система на основе Python для компиляции проектов C / C ++. В отличие от Autotools, CMake или QMake; SCons не создает Makefile. SCons очень легко модифицируется, но, пожалуй, самый медленный в простых операциях.
Плюсы:

  • Легкая модификация
  • Пройдите честные испытания

Минусы:

  • Небольшой разброс
  • Замедлять

scons

Буст Джем

Boost.Jam - это версия Perforce Jam, которая используется в популярных библиотеках C ++ Boost, хотя систему компиляции можно использовать отдельно. В отличие от GNU Make, Boost.Jam использует Jamfiles, которые являются улучшенной версией Makefiles. Они довольно популярны в среде BeOS / Zeta / Haiku.

Плюсы:

  • Быстро
  • Самый короткий написать

Минусы:

  • Небольшой разброс
  • Сложность выполнения тестов

bjam

Ниндзя

Ninja - это система, разработанная Google для обеспечения сверхбыстрой системы сборки, изначально разработанной для проекта Chromium. Ninja не спроектирован таким образом, чтобы его можно было легко модифицировать, по словам его авторов, необходимо найти систему, генерирующую Ninja. Рекомендуемые - CMake и gyp.

Плюсы:

  • Муй рапидо

Минусы:

  • Вам нужна другая система, чтобы вызвать ниндзя
  • Небольшой разброс

ninja

другие

Вы можете использовать любую другую систему, такую ​​как собственный скрипт bash или python. Существуют также генераторы для других неродных языков, которые можно использовать, например Gradle, Maven, gyp и т. Д.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Abimaelmartell сказал

    Make - это не система компиляции, это генератор двоичных файлов (или целей) из исходного кода. Его также можно использовать как средство выполнения задач.

    Я не согласен с вами в том, что программа make BSD шире по функциональности, make GNU более полная, она имеет больше функций. И я говорю это по собственному опыту, в BSD мне всегда нужно устанавливать GNU make, потому что BSD make очень проста по сравнению с GNU make.

    Я согласен с вами, что Autotools довольно громоздкий, я предпочитаю просто использовать Makefile. Make-файлы, созданные Autotools, сложно отлаживать.

    Привет!

    1.    АдрианАрройоУлица сказал

      Спасибо за комментарий!
      На мой взгляд, GNU make всегда была более традиционной и верной исходной программе make, а BSD make всегда была более инновационной, но, возможно, я заметил другие вещи при сравнении.

      Автоинструменты - действительно большая головная боль. Как разработчик операционной системы Haiku мне приходилось портировать программное обеспечение с помощью автоинструментов, и это ад. Есть немало случаев, когда я создавал Makefile или CMakeLists.txt, прежде чем исправлять этот беспорядок.

  2.   Чак Дэниелс сказал

    В настоящее время я использую Premake4, очень легко настраиваемый и простой на основе сценариев Lua. Взгляните, если вы этого не знаете.
    Поздравляю со статьей, простой и лаконичный, отличный справочник.

  3.   скелет сказал

    'make check' используется для проверки компиляции после использования make
    приветствия