Linux veidot komanda tiek izmantota, lai izveidotu un uzturētu programmu un failu grupas no pirmkoda. Operētājsistēmā Linux tā ir viena no izstrādātāju visbiežāk izmantotajām komandām. Tas palīdz izstrādātājiem no termināļa instalēt un apkopot daudzas utilītas. Turklāt tā apstrādā lielu projektu apkopošanas procesu. Tas ietaupa kompilācijas laiku.
Komandas make galvenais motīvs ir sadalīt lielu programmu daļās un pārbaudīt, vai tā ir jāpārkompilē vai nē. Tas arī izdod nepieciešamos rīkojumus to pārkompilēt.
Šajā sadaļā mēs izmantosim C++ programmas, jo C++ programmēšanas valoda ir objektorientēta valoda, taču jūs varat izmantot jebkuru jūsu datorā instalēto valodu. Tas neaprobežojas tikai ar programmām; mēs varam to izmantot, lai aprakstītu arī citus uzdevumus.
Kā darbojas komandas izveide?
Komanda make izmanto mērķus kā argumentus. Šie argumenti ir norādīti 'Makefile'. Makefile satur mērķus, kā arī ar šiem mērķiem saistītās darbības.
Kad mēs izpildām komandu make, tā meklē makefile un skenē to, lai atrastu mērķi un piekļūtu tā atkarībām. Ja atkarības nav norādītas, tā meklēs atkarību un izveidos to. Tas izveidos galveno mērķi pēc atkarību izveidošanas.
Piemēram, ja mēs vēlamies mainīt tikai vienu avota failu un izpildām komandu make; tādējādi tiks apkopots tikai objekta fails, kas ir saistīts ar šo avota failu. Tas ietaupīs daudz laika projekta galīgajā apkopojumā.
Kas ir Makefile?
Komanda make izsauc makefile izpildi. Tas ir īpašs fails, kurā ir čaulas komandas, kuras mēs izveidojam, lai uzturētu projektu. Makefile satur izpildes mērķus un komandas. Nav atļauts izveidot vairāk kā vienu makefile. Tam ieteicams izveidot atsevišķu direktoriju.
Tas seko jaunākajiem failiem, tāpēc atjauniniet tikai tos failus, kas ir nepieciešami. Ja mums ir liela programma ar daudziem avota failiem, mums ir jāpārkompilē visi atkarīgie faili. Tātad, tas var būt ļoti laikietilpīgs process.
Makefile ir standartu saraksts. Šie standarti palīdz sistēmai saprast, kādu komandu mēs vēlamies izpildīt. Šie standarti ir divās daļās un atdalīti ar jaunu līniju. Pirmā rinda ir atkarības līnija, un nākamās rindas tiek uzskatītas par darbības vai komandas s. Komandas jaunajā rindā ir atdalītas ar cilni.
The atkarības norādiet katra faila saistību ar avota failiem. Un mērķis ir izpildāms fails, un tas tiek izveidots pēc komandas make izpildes.
Iespējas
Komanda make atvieglo dažādas iespējas, lai padarītu to precīzāku. Dažas svarīgas iespējas ir šādas:
padarīt -p -f/dev/null.
Sapratīsim dažus komandas make piemērus. Mēs redzēsim makefile pamata lietojumu, un tālāk mēs izveidosim dažas c++ programmas un makefile. Mēs ar tiem veiksim dažas darbības, lai labāk izprastu komandu make.
js daudzrindu virkne
Pamata komandas make izmantošana
Izpratīsim komandas make pamata lietojumu, un tas var palīdzēt jums saprast, kā tā darbojas.
Izveidojiet direktoriju 'projekts' un mainiet direktoriju uz to. Apsveriet tālāk norādītās komandas:
mkdir project cd project
Tagad izveidojiet a 'Makefile' ar šādu saturu pirmajai programmai:
say_hello: echo 'Hello World!'
No iepriekš minētā faila say_hello ir mērķis, kas darbojas kā funkcija jebkurā programmēšanas valodā, un atbalss tiks uzskatīta par darbību. Jāatceras, ka darbība jāraksta, izmantojot a TAB. Mērķis un darbība kopā veido makefile noteikumu. Tagad izpildiet komandu make šādi:
Apsveriet tālāk norādīto izvadi:
No iepriekš minētās izvades mēs varam redzēt, kā tiek parādīta pati atbalss darbība. Ja mēs nevēlamies, lai izvadā tiktu parādīta atbalss komanda, izpildiet atbalsi, sākot ar '@' simbols. Lai nomāktu atbalsi, atjauniniet makefile saturu šādi:
say_hello: @echo 'Hello World!'
Apsveriet tālāk norādīto izvadi:
Mērķis var būt binārs fails, kas ir atkarīgs no darbībām.
java vizualizētājs
Pievienosim vēl dažus mērķus, piemēram, ģenerēšanu un sarakstu makefile. Atjauniniet makefile šādi:
say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Ja izpildām komandu make, tā izpilda tikai pirmo mērķi, jo tas ir makefile noklusējuma mērķis. Apsveriet tālāk norādīto izvadi:
Mēs varam mainīt noklusējuma mērķi, iekļaujot tālāk norādīto saturu mūsu makefailā:
.DEFAULT_GOAL := generate
Pievienojiet to faila pirmajai rindai šādi:
Iepriekš minētajā makefile par noklusējuma mērķi tiks uzskatīts “ģenerēt”. Izpildiet komandu make, un tā sniegs izvadi šādi:
Opcija DEFAULT GOAL izpildīs tikai vienu mērķi, lai norādītu vairāk nekā vienu mērķi, lai izmantotu visas opcijas. Lai norādītu vairāk nekā vienu mērķi, atjauniniet makefile pirmo rindiņu šādi:
all: say_hello generate
Tas izpildīs norādīto mērķi. Apsveriet tālāk norādīto izvadi:
Ir vēl viena iespēja, kas ļauj izpildīt visus mērķus. Ja vēlamies izpildīt visus makefile mērķus, atjauniniet failu šādi:
.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
Iepriekš minētais fails izpildīs visus norādītos mērķus. Izpildiet komandu make, apsveriet tālāk norādīto izvadi:
Uzlabota komandas make izmantošana
Izveidosim C++ projektu ar failiem main.cpp, function1.cpp, function2.cpp un atkarības failu function.h.
Failu kods ir šāds:
skaits atšķirīgs sql
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; }
function1.cpp:
#include 'functions.h' int factorial(int n) { if(n!=1) { return (n * factorial(n-1)); } else return 1; }
function2.cpp:
#include #include 'functions.h' void print_hello() { std::cout << 'Hello World'; }
Funkcijas.h:
void print_hello(); int factorial (int n);
Tagad izveidojiet iepriekš minētā projekta izpildāmo failu, izpildot tālāk norādīto komandu:
g++ main.cpp function1.cpp function2.cpp -o hello
Iepriekš minētā komanda izveidos izpildāmo failu 'Sveiki' no failiem main.cpp, function1.cpp un function2.cpp.
Apsveriet tālāk norādīto izvadi:
No iepriekš minētās izvades, ja tā tiek veiksmīgi izpildīta, tā nedos nekādu izvadi.
Veiksim to pašu uzdevumu, izmantojot makefile.
Izveidojiet failu kā Makefile un ievietojiet tajā zemāk esošo kodu.
all: g++ main.cpp function1.cpp function2.cpp -o hello
Mērķim tiek izmantots atslēgvārds all, un jaunā rindiņā ievietojiet to pašu komandu ar TAB, kā norādīts iepriekš, lai norādītu darbību. Saglabājiet failu. Apsveriet tālāk redzamo failu:
Lai strādātu, izpildiet komandu šādi:
mašīnraksta datuma veids
make
Iepriekš minētā komanda izveidos norādīto failu izpildāmo failu 'sveiki'. Apsveriet tālāk norādīto izvadi:
Pievienosim Makefile vēl dažus uzdevumus. Pievienojiet uzdevumu 'sastādīt' sekojoši:
all: compile: g++ main.cpp function1.cpp function2.cpp -o hello
Lai izpildītu uzdevumu sastādīt, izpildiet tālāk norādīto komandu:
make compile
Iepriekš minētā komanda izpildīs kompilēšanas uzdevumu. Apsveriet tālāk norādīto izvadi:
Veiksim vēl dažus uzdevumus mūsu makefile.
atjauniniet Makefile šādi:
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
No iepriekš minētā makefaila esam izveidojuši trīs objektus kā main.o, function1.o un function2.o. Turklāt mēs esam nodrošinājuši atkarības mērķiem main.o, function1.o un function2.o attiecīgi kā main.cpp, function1.cpp un function2.cpp. Visi mērķi tajā veiks norādītos uzdevumus. Mēs esam arī norādījuši tīru mērķi, lai notīrītu visas atkarības un noņemtu izpildāmo failu.
Tagad izpildiet komandu make all, lai izpildītu mūsu jauno makefile.
make all
Apsveriet tālāk norādīto izvadi:
No iepriekš minētās izvades mēs redzam, ka komanda vispirms izpildīja attiecīgi main.o, function1.o un function2.o. Tas izveidos norādīto failu izpildāmo un objektu failu. Tas neizpildīs tīro mērķi, jo mēs to neesam norādījuši sveikā. Apsveriet tālāk norādītos failus.
Komandai make ir tiešs darba process. Tas izpildīja visas iespējas un devās uz sveiki. Pēc hello izpildīšanas tas nolasīja mērķi norādītajā secībā. Tā meklēja katru mērķi un tā atkarību un izpildīja tos secīgi.
Lai noņemtu objektus un izpildāmo failu, veiciet tīro uzdevumu. Lai veiktu tīru uzdevumu, izpildiet komandu šādi:
make clean
Apsveriet tālāk norādīto izvadi:
Iepriekš minētā komanda noņems visus objektus un izpildāmos failus. Skatiet tālāk redzamo direktorija attēlu:
No iepriekš redzamā attēla mēs redzam, ka esam iztīrījuši savu direktoriju.
Mainīgie komandā make
Mēs varam definēt mainīgos mūsu makefile. Lai definētu mainīgos, izmantojiet '=' operators. Piemēram, ja mēs vēlamies izveidot mainīgo A un piešķirt tam komandu gcc, piešķiriet to kā:
alfa beta atzarošanas piemērs
A=g++
Izmantojiet to šādi mūsu makefile:
hello: hello.cpp ${A} hello.cpp -o hello
Tas tiek nodots terminālim šādi:
g++ hello.cpp -o hello
Mēs varam izmantot $(A), nevis ${A}, jo skripts uz abiem attiecas vienādi.
Komentāri makefilē
Lai pievienotu komentāru makefile, izmantojiet '#' simbols. Piemēram, lai kompilēšanas sadaļā pievienotu komentāru, pievienojiet to kā '# Tas kompilēs programmu .' Kompilators komentārus ignorē.