Linux направи Командата се използва за изграждане и поддържане на групи от програми и файлове от изходния код. В Linux това е една от най-често използваните команди от разработчиците. Той помага на разработчиците да инсталират и компилират много помощни програми от терминала. Освен това той управлява процеса на компилиране на големи проекти. Спестява време за компилация.
Основният мотив на командата make е да раздели голяма програма на части и да провери дали трябва да бъде прекомпилирана или не. Освен това издава необходимите заповеди за прекомпилирането им.
В този раздел ще използваме C++ програми, тъй като езикът за програмиране C++ е обектно-ориентиран език, но можете да използвате всеки език, инсталиран на вашата машина. Не се ограничава само до програми; можем да го използваме и за описание на други задачи.
Как работи командата make?
Командата make приема цели като аргументи. Тези аргументи са посочени в „Makefile“. Makefile съдържа целите, както и свързаните действия, свързани с тези цели.
Когато изпълним командата make, тя търси make-файла и го сканира, за да намери целта и достъп до нейните зависимости. Ако зависимостите не са посочени, той ще търси зависимостта и ще я изгради. Той ще изгради основната цел, след като зависимостите бъдат изградени.
Например, ако искаме да променим само един изходен файл и изпълним командата make; така че това ще компилира само обектния файл, който е свързан с този изходен файл. Това ще спести много време при окончателното компилиране на проекта.
Какво е Makefile?
Командата make извиква изпълнението на make-файла. Това е специален файл, който съдържа командите на shell, които създаваме, за да поддържаме проекта. Makefile съдържа цели и команди за изпълнение. Не е разрешено създаването на повече от един makefile. Препоръчително е да създадете отделна директория за него.
Той следи последните файлове, така че актуализирайте само онези файлове, които са необходими. Ако имаме голяма програма с много изходни файлове, трябва да прекомпилираме всички зависими файлове. Така че процесът може да отнеме много време.
Makefile има списък със стандарти. Тези стандарти са полезни за системата, за да разбере каква команда искаме да изпълним. Тези стандарти са в две части и разделени с нов ред. Първият ред е линията на зависимост, и следващите редове се считат за действия или команда с. Командите са разделени с разделител в новия ред.
The зависимости укажете връзката на всеки файл с изходните файлове. И на мишена е изпълним файл и се създава след изпълнението на командата make.
Настроики
Командата make улеснява различни опции, за да го направи по-специфичен. Някои важни опции са както следва:
make -p -f/dev/null.
Нека разберем някои примери за командата make. Ще видим основното използване на makefile и освен това ще създадем някои C++ програми и makefile. Ще извършим някои операции върху тях, за да разберем по-добре командата make.
python генерира uuid
Основно използване на командата make
Нека разберем основното използване на командата make и това може да ви помогне да разберете как работи.
Създайте директория „проект“ и сменете директорията към нея. Помислете за командите по-долу:
mkdir project cd project
Сега създайте a 'Makefile' със следното съдържание за първата програма:
say_hello: echo 'Hello World!'
От горния файл say_hello е цел, която се държи като функция във всеки език за програмиране и ехото ще се счита за действие. Трябва да се помни, че действието трябва да бъде написано с помощта на a РАЗДЕЛ. Целта и действието заедно създават правило за make-файла. Сега изпълнете командата make както следва:
Помислете за резултата по-долу:
От горния изход можем да видим, че се показва самата ехо операция. Ако не искаме да показваме командата echo на изхода, изпълнете ехото, започвайки с '@' символ. За да потиснете ехото, актуализирайте съдържанието на makefile, както следва:
say_hello: @echo 'Hello World!'
Помислете за резултата по-долу:
Целта може да бъде двоичен файл, който зависи от действията.
Нека добавим още няколко цели, като генериране и списък в make-файла. Актуализирайте makefile-а, както следва:
колко голям е този монитор
say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Ако изпълним командата make, тя изпълнява само първата цел, защото това е целта по подразбиране на make-файла. Помислете за резултата по-долу:
Можем да променим целта по подразбиране, като включим съдържанието по-долу в нашия makefile:
.DEFAULT_GOAL := generate
Добавете го към първия ред на файла, както следва:
Горният makefile ще счита „генериране“ за цел по подразбиране. Изпълнете командата make и тя ще даде изхода, както следва:
Опцията ЦЕЛ ПО ПОДРАЗБИРАНЕ ще изпълни само една цел, за да посочите повече от една цел, за да използвате всички опции. За да посочите повече от една цел, актуализирайте първия ред на make-файла, както следва:
all: say_hello generate
Той ще изпълни определената цел. Помислете за резултата по-долу:
Има и друга опция, която ни позволява да изпълним всички цели. Ако искаме да изпълним всички цели на make-файла, актуализирайте файла, както следва:
.PHONY: all say_hello generate list say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Горният файл ще изпълни всички посочени цели. Изпълнете командата make, разгледайте резултата по-долу:
Разширено използване на командата make
Нека създадем C++ проект с файлове main.cpp, function1.cpp, function2.cpp и файл на зависимостите function.h.
Кодът на файловете е както следва:
типове съединения в rdbms
main.cpp:
#include #include 'functions.h' int main() { print_hello(); std::cout<< std::endl; std::cout<< 'The factorial of 5 is' << factorial(5) << std:: endl; return 0; }
функция1.cpp:
#include 'functions.h' int factorial(int n) { if(n!=1) { return (n * factorial(n-1)); } else return 1; }
функция2.cpp:
#include #include 'functions.h' void print_hello() { std::cout << 'Hello World'; }
functions.h:
void print_hello(); int factorial (int n);
Сега създайте изпълним файл на горния проект, като изпълните командата по-долу:
g++ main.cpp function1.cpp function2.cpp -o hello
Горната команда ще създаде изпълним файл 'Здравейте' на файловете main.cpp, function1.cpp и function2.cpp.
Помислете за резултата по-долу:
От горния изход, ако се изпълни успешно, той няма да даде никакъв изход.
Нека изпълним същата задача с помощта на makefile.
Създайте файл като Makefile и поставете кода по-долу в него.
all: g++ main.cpp function1.cpp function2.cpp -o hello
Ключовата дума all се използва за цел и в нов ред поставете същата команда с TAB като по-горе, за да укажете операцията. Запазете файла. Разгледайте файла по-долу:
За да работите, изпълнете командата, както следва:
е връзка
make
Горната команда ще създаде изпълним файл 'hello' от посочените файлове. Помислете за резултата по-долу:
Нека добавим още няколко задачи към Makefile. Добавяне на задача 'компилирам' както следва:
all: compile: g++ main.cpp function1.cpp function2.cpp -o hello
Да изпълни задачата компилирам, изпълнете командата по-долу:
make compile
Горната команда ще изпълни задачата за компилиране. Помислете за резултата по-долу:
Нека изпълним още няколко задачи към нашия makefile.
актуализирайте Makefile, както следва:
all: hello hello: main.o function1.o function2.o g++ main.o function1.o function2.o -o hello main.o: main.cpp g++ -c main.cpp function1.o: function1.cpp g++ -c function1.cpp function2.o: function2.cpp g++ -c function2.cpp clean: rm -rf *o hello
От горния makefile създадохме три обекта като main.o, function1.o и function2.o. Освен това сме предоставили зависимостите за целите main.o, function1.o и function2.o съответно като main.cpp, function1.cpp и function2.cpp. Всички цели ще изпълняват определените задачи в него. Също така сме посочили чиста цел за почистване на всички зависимости и премахване на изпълнимия файл.
Сега изпълнете командата make all, за да изпълните нашия нов makefile.
make all
Помислете за резултата по-долу:
От горния изход можем да видим, че командата първо е изпълнила съответно main.o, function1.o и function2.o. Той ще създаде изпълним файл и файл с обекти на дадените файлове. Няма да изпълни чистата цел, защото не сме я посочили в hello. Разгледайте следните файлове:
Командата make има ясен работен процес. Той изпълни опцията за всички и отиде на здравей. След изпълнението на hello, той прочита целта в определената последователност. Той претърси всяка цел и нейната зависимост и ги изпълни в последователността.
За да премахнете обектите и изпълнимия файл, изпълнете задачата за почистване. За да изпълните задачата за почистване, изпълнете командата, както следва:
make clean
Помислете за резултата по-долу:
Горната команда ще премахне всички обекти и изпълними файлове. Вижте снимката на директорията по-долу:
От горното изображение можем да видим, че сме почистили нашата директория.
Променливи в командата make
Можем да дефинираме променливите в нашия makefile. За да дефинирате променливите, използвайте '=' оператор. Например, ако искаме да създадем променлива A и да й присвоим команда gcc, присвоете я като:
екземпляр на в java
A=g++
Използвайте го както следва в нашия makefile:
hello: hello.cpp ${A} hello.cpp -o hello
Предава се на терминала като:
g++ hello.cpp -o hello
Можем да използваме $(A) вместо ${A}, тъй като и двете се третират еднакво от скрипта.
Коментари в makefile
За да добавите коментар в make-файла, използвайте '#' символ. Например, за да добавите коментар в секцията за компилиране, добавете го като '# Това ще компилира програмата .' Коментарите се игнорират от компилатора.