1. Народження GCC!
У 1985 році, в темну ніч, коли його пальці були поза полем зору, незнайомий чоловік із бородою, низькою фігурою та скуйовдженим волоссям почав писати набір компіляторів мови C. Цей екфонія, пізніше відомий як «найвидатніший програміст» і «батько вільного програмного забезпечення», був Річардом Столлманом. Після двох років наполегливої праці Річард Столлман, який має довшу бороду і більш розпатлане волосся, завершив першу версію компілятора C, яку він називає GNU C Complier, що нині є джерелом відомого GCC. Згодом GCC швидко розвивався, і тепер GCC може компілювати не лише мову C, а й C++, Fortran, Pascal, Objective-C, Java, Ada та інші мови. У 80-х і 90-х роках минулого століття частота процесора, розмір жорсткого диска та пам'яті персональних комп'ютерів вимірювалися в МБ або навіть КБ, кількість файлів програм, які потрібно було компілювати, була невеликою, і команд GCC були достатніми, щоб це впоратися.
По-друге, з'явилися нові проблеми! (make & makefile)
З покращенням і популяризацією продуктивності комп'ютерів програмний проєкт містить все більше вихідних файлів, таких як Linux, який легко заплутаний і перевантажується, що легко заплутати і перевантажити роботу, що може звести людей з розуму.
Річард Столлман і Роланд МакГрат спільно розробили марку та makefile для вирішення цієї проблеми. Інструмент make можна розглядати як інтелектуальний інструмент пакетної обробки, який не виконує функції компіляції та зв'язування, а використовує метод, схожий на пакетну обробку — виклик команд, визначених користувачем у файлі makefile. Що таке makefile? Makefile — це скрипт-файл, подібний до партитури пісні, інструмент make — це як диригент, диригент керує всім оркестром грати відповідно до партитури, а make tool компілюється та пов'язується відповідно до команд у makefile. Команда makefile містить команди для виклику gcc (або іншого компілятора) для компіляції вихідного файлу.
3. Знову виникли нові проблеми! (Cmake та CMakelist)
Makefile можна написати вручну в деяких простих проєктах, але коли проєкт дуже великий, також дуже складно писати його вручну. І makefile для різних платформ з'являлися один за одним, зокрема GNU make, qmake від QT, MSnmake від Microsoft, BSD Make(pmake), Makepp тощо. Ці інструменти Make відповідають різним специфікаціям і стандартам, а формат Makefile, який вони виконують, значно варіюється. Це створює серйозну проблему: якщо програмне забезпечення хоче бути кросплатформенним, воно має мати змогу компілювати на різних платформах. Якщо ви використовуєте інструмент Make вище, потрібно писати makefile для кожного стандарту, що буде шалено складною роботою, а якщо змінити makefile платформи, доведеться його повторно змінювати.
Отже, у цей момент з'явився інструмент Cmake, і Cmake може легше генерувати файл makefile для вищезазначеної марки. Звісно, cmake має й інші функції: він може генерувати makefile, які можна використовувати на відповідній платформі різних платформ, і вам не потрібно змінювати їх самостійно. cmake — це верхній рівень Makefile, і його мета — створювати портативні makefile і спрощувати величезне навантаження самостійного написання makefile. Але що використовує cmake для створення makefile? Також потрібно згенерувати makefile на основі файлу під назвою CMakeLists.txt file (наукова назва: конфігураційний файл). Зрештою, CMakeLists.txt хто пише документ? Звісно, ти сама її написала.
По-четверте, знову з'явилися нові проблеми! (Ніндзя)
Зі зростанням і складністю розробки програмного забезпечення проблема повільної швидкості виконання робіт стає дедалі серйознішою.
Внаслідок цього програміст Google запустив Ninja — інструмент збірки, орієнтований на швидкість. Ninja не має всіма розширеними функціями, синтаксис і використання дуже прості, і він детально вказує, що робити, тому компіляція починається дуже швидко. Згідно з реальними тестами: з понад 30 000 вихідних файлів також можливо розпочати справжню збірку за 1 секунду. Натомість Makefile, написані старшими інженерами, також потребують 10-20 секунд на початок створення.
5. Ідеальний фінал на даний момент!
Cmake може генерувати інструменти .ninja та .makefile. Оскільки багато людей не знайомі з написанням makefile файлів і ninja-файлів, cmake вимагає лише простого опису файлу вихідного коду (тобто CMakeLists.txt файлу), щоб автоматично згенерувати файл makefile або ninja файл, а потім почати компіляцію через ninja або make.
5 хвилин, щоб зрозуміти make/makefile/cmake/nmake
Останнім часом, чи були ви створені за знову, make, makefile... ... Ці речі викликають запаморочення, подивіться на наступну статтю, можливо, ви зрозумієте чітко.
1. GCC Це GNU Compiler Collection, або просто компілятор, який може компілювати багато мов програмування (включаючи C, C++, Objective-C, Fortran, Java тощо).
Коли наша програма має лише один вихідний файл, ми можемо скомпілювати його безпосередньо за допомогою команди gcc.
Але що, якщо наша програма містить багато вихідних файлів? Під час компіляції з командами gcc одну за одною легко заплутатися і зайняти багато зусиль, тому з'являється наступний інструмент make.
2. зробити Інструмент make можна розглядати як інтелектуальний інструмент пакетної обробки, який не виконує функції компіляції та зв'язування, а використовує метод, схожий на пакетну обробку — виклик команд, визначених користувачем у файлі makefile.
3. makefile Що це?
Простіше кажучи, як і саундтрек пісні, інструмент створення — це як диригент: диригент керує всім оркестром грати відповідно до партитури, а інструмент створення компілюється та зв'язується відповідно до команд у файлі make. Команда makefile містить команди для виклику gcc (або іншого компілятора) для компіляції вихідного файлу.
Makefile можна зробити вручну в деяких простих проєктах, але коли проєкт дуже великий, рукописний makefile також дуже складний.
4. CMAKE cmake може легко створити файл makefile для вищезазначеної марки. Звісно, у cmake є й інші кращі функції, тобто він може генерувати makefile, які можна використовувати на відповідній платформі різних платформ, тож нам не доводиться змінювати їх самостійно.
Але що використовує cmake для створення makefile? Також потрібно згенерувати makefile на основі файлу під назвою CMakeLists.txt file (наукова назва: конфігураційний файл).
5. CMakeList.txt Зрештою, CMakeLists.txt хто пише документ? Дорога, це написано твоєю власною рукою.
6. nmake Що таке nmake?
nmake — це побічна команда в Microsoft Visual Studio, яка має встановити VS, що насправді можна назвати еквівалентною make у Linux, розумієте?
Переведено з:
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
|