Компилационни системи. Освен простото конфигуриране, направете, направете инсталиране

Всички или почти всички (и ако нямате късмет) трябваше да компилираме програма от изходния код. Всъщност в повечето проекти е достатъчно да направите ./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, който трябва да извикаме, за да генерираме съответния GNU Make Makefile. Той се използва широко, но все повече хора (включително и аз) смятат, че е твърде тромав, труден, бавен и не много съвместим.

Плюсове:

  • Силно конфигурируем
  • Много разпространен

Недостатъци:

  • Малка преносимост между не-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 не изгражда Makefile. SCons е много модифицируем, но е може би най-бавният при прости операции
Плюсове:

  • Лесна модификация
  • Вземете честните тестове

Недостатъци:

  • Малко разпространение
  • ленто

scons

Усилване на Jam

Boost.Jam е версия на Perforce Jam, която се използва в популярните C ++ Boost библиотеки, въпреки че системата за компилация може да се използва отделно. За разлика от GNU Make, Boost.Jam използва Jamfiles, които са подобрена версия на Makefiles. Те са доста популярни в средата BeOS / Zeta / Haiku.

Плюсове:

  • Бързо
  • Най-краткото за писане

Недостатъци:

  • Малко разпространение
  • Трудност при извършване на тестове

bjam

Ninja

Ninja е система, разработена от Google, за да осигури ултра бърза система за изграждане, първоначално проектирана да бъде тази на проекта Chromium. Ninja не е проектиран да бъде лесен за модифициране, според собствените му автори трябва да се намери система, която генерира Ninja. Препоръчителни са CMake и gyp.

Плюсове:

  • Muy rápido

Недостатъци:

  • Нуждаете се от друга система, за да създадете Ninja
  • Малко разпространение

ninja

други

Можете да използвате всяка друга система, като вашия собствен bash или python скрипт. Има и генератори за други чужди езици, които могат да се използват като Gradle, Maven, gyp и т.н.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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

  1.   абимаелмартел каза той

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

    Различавам се с вас, че BSD make е по-широк по функционалност, GNU make е по-пълен, има повече функционалност. И казвам това от собствения си опит, в BSD винаги трябва да инсталирам GNU make, защото BSD make е много проста в сравнение с GNU make.

    Съгласен съм с вас, че Autotools е доста тромав, предпочитам просто да използвам Makefile. Гребните файлове, генерирани от Autotools, са трудни за отстраняване на грешки.

    Поздрави!

    1.    AdrianArroyoStreet каза той

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

      Автоинструментите наистина са голямо главоболие. Като сътрудник на операционната система Haiku трябваше да пренасям софтуер с автоинструменти и това е ад. Малко са случаите, в които в крайна сметка създадох Makefile или CMakeLists.txt, преди да поправя тази бъркотия.

  2.   Чък Даниел каза той

    В момента използвам Premake4, много конфигурируем и опростен въз основа на скриптове Lua. Погледнете, ако не го знаете.
    Поздравления за статията, проста и кратка, отлична справка.

  3.   кости каза той

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