Усі або майже всі (і якщо вам не пощастило) нам довелося скомпілювати програму з вихідного коду. Насправді в більшості проектів достатньо виконати ./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 тощо.
Make - це не система компіляції, це генератор двійкових файлів (або цілей) із вихідного коду. Його також можна використовувати як запуску завдань.
Я відрізняюся від вас тим, що марка BSD ширша за функціональністю, марка GNU є більш повною, вона має більше функціональних можливостей. І я кажу це з власного досвіду, в BSD мені завжди доводиться встановлювати GNU make, оскільки BSD make дуже простий у порівнянні з GNU make.
Я згоден з вами, що Autotools досить громіздкий, я вважаю за краще просто використовувати Makefile. Згенеровані файли автоінструментів важко налагодити.
Привіт!
Дякуємо за коментар!
На мій погляд, марка GNU завжди була більш традиційною та вірною оригінальній програмі make, а BSD make завжди була більш інноваційною, але, можливо, я помічав інші речі, коли робив порівняння.
Автоінструменти - це справді великий головний біль. Як співробітник операційної системи Haiku, мені довелося переносити програмне забезпечення на автоматичні інструменти, і це пекло. Є не мало випадків, коли я в кінцевому підсумку створив Makefile або CMakeLists.txt перед тим, як виправити цей безлад.
В даний час я використовую Premake4, дуже настроюваний і простий на основі сценаріїв Lua. Погляньте, якщо ви цього не знаєте.
Вітаю зі статтею, просто і коротко, відмінна довідка.
'make check' використовується для перевірки компіляції після використання make
Привітання