Компіляційні системи. Окрім простої конфігурації, зробіть, встановіть

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

GNU Make

GNU Make - це система компіляції низького рівня, налаштовано кілька речей і не проводиться тестів:

Плюси:

  • Дуже поширений
  • Просто зрозуміти
  • Швидко

Мінуси:

  • Мало налаштовується
  • Складно підтримувати
  • Не проводить тести

make

Марка BSD

BSD Make - це ще одна версія Make, яка в даний час використовується операційними системами * BSD. Він відрізняється GNU Make, що є найповнішим функціоналом BSD Make, хоча він менш поширений.

Плюси:

  • Швидко
  • Просто зрозуміти
  • Більше функцій, ніж GNU Make

Мінуси:

  • Не поширений у світі Linux
  • Не проводить тести
  • Мало налаштовується
  • Складно підтримувати

make

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

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

Плюси:

  • Високо налаштований
  • Дуже поширений

Мінуси:

  • Невелика портативність між системами, що не є UNIX
  • Проведіть занадто багато тестів (перевірте ВСЕ, і ВСЕ - ВСЕ)
  • Дуже повільно під час налаштування
  • Погана зворотна сумісність

./configure && make

CMake

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

Плюси:

  • Швидко
  • Чудова підтримка між платформами
  • Ви можете визначити тести дуже настроюваним способом

Мінуси:

  • Спочатку важко зрозуміти
  • Вам доведеться працювати з абстракцією, яка спочатку може бути страшною
  • Поширюється мало, хоча потроху росте

cmake . && make

Q Зробити

QMake - це система, розроблена Trolltech для компіляції проектів, створених у Qt. Таким чином, qmake робить великий наголос на Qt і, як правило, є форматом, який використовується IDE, таким як QtCreator. Це досить популярно в проектах Qt, але його не можна знайти поза цим середовищем:

Плюси:

  • Дуже добре інтегрований з Qt
  • Швидко
  • Хороша мультиплатформа в межах Qt

Мінуси:

  • Поширені поза програмами Qt

qmake . && make

SCONS

SCons - це система на базі Python для компіляції проектів C / C ++. На відміну від Autotools, CMake або QMake; SCons не створює файл Make. SCons дуже модифікується, але він, мабуть, найповільніший у простих операціях
Плюси:

  • Легка модифікація
  • Пройдіть чесні випробування

Мінуси:

  • Мале поширення
  • Lento

scons

Boost Jam

Boost.Jam - це версія Perforce Jam, яка використовується в популярних бібліотеках C ++ Boost, хоча систему компіляції можна використовувати окремо. На відміну від GNU Make, Boost.Jam використовує Jamfiles, які є вдосконаленою версією Makefiles. Вони досить популярні в середовищі BeOS / Zeta / Haiku.

Плюси:

  • Швидко
  • Найкоротший для написання

Мінуси:

  • Мале поширення
  • Труднощі з виконанням тестів

bjam

ніндзя

Ninja - це система, розроблена Google для забезпечення надшвидкої системи збірки, спочатку розробленої для проекту Chromium. Ninja не спроектований таким чином, щоб його легко модифікувати, за словами його власних авторів, слід знайти систему, яка генерує Ninja. Рекомендованими є CMake та gyp.

Плюси:

  • Muy rápido

Мінуси:

  • Вам потрібна інша система, щоб породити Ніндзя
  • Мале поширення

ninja

інші

Ви можете використовувати будь-яку іншу систему, таку як ваш власний скрипт bash або python. Існують також генератори для інших не рідних мов, які можна використовувати, такі як Gradle, Maven, gyp тощо.


Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   abimaelmartell - сказав він

    Make - це не система компіляції, це генератор двійкових файлів (або цілей) із вихідного коду. Його також можна використовувати як запуску завдань.

    Я відрізняюся від вас тим, що марка BSD ширша за функціональністю, марка GNU є більш повною, вона має більше функціональних можливостей. І я кажу це з власного досвіду, в BSD мені завжди доводиться встановлювати GNU make, оскільки BSD make дуже простий у порівнянні з GNU make.

    Я згоден з вами, що Autotools досить громіздкий, я вважаю за краще просто використовувати Makefile. Згенеровані файли автоінструментів важко налагодити.

    Привіт!

    1.    AdrianArroyoStreet - сказав він

      Дякуємо за коментар!
      На мій погляд, марка GNU завжди була більш традиційною та вірною оригінальній програмі make, а BSD make завжди була більш інноваційною, але, можливо, я помічав інші речі, коли робив порівняння.

      Автоінструменти - це справді великий головний біль. Як співробітник операційної системи Haiku, мені довелося переносити програмне забезпечення на автоматичні інструменти, і це пекло. Є не мало випадків, коли я в кінцевому підсумку створив Makefile або CMakeLists.txt перед тим, як виправити цей безлад.

  2.   Чак Даніель - сказав він

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

  3.   Кістки - сказав він

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