Linux urobiť príkaz sa používa na vytváranie a udržiavanie skupín programov a súborov zo zdrojového kódu. V Linuxe je to jeden z najčastejšie používaných príkazov vývojármi. Pomáha vývojárom inštalovať a kompilovať mnohé nástroje z terminálu. Ďalej sa zaoberá procesom zostavovania veľkých projektov. Šetrí to čas kompilácie.
Hlavným motívom príkazu make je určiť veľký program na časti a skontrolovať, či je potrebné ho prekompilovať alebo nie. Tiež vydáva potrebné príkazy na ich prekompilovanie.
V tejto časti budeme používať programy C++, pretože programovací jazyk C++ je objektovo orientovaný jazyk, ale môžete použiť akýkoľvek jazyk nainštalovaný na vašom počítači. Neobmedzuje sa len na programy; môžeme ho použiť aj na popis iných úloh.
Ako funguje príkaz make?
Príkaz make berie ciele ako argumenty. Tieto argumenty sú špecifikované v 'Makefile.' Makefile obsahuje ciele, ako aj súvisiace akcie súvisiace s týmito cieľmi.
Keď vykonáme príkaz make, vyhľadá súbor make a prehľadá ho, aby našiel cieľ a získal prístup k jeho závislostiam. Ak nie sú špecifikované závislosti, vyhľadá závislosť a vytvorí ju. Po vybudovaní závislostí vytvorí hlavný cieľ.
Napríklad, ak chceme zmeniť iba jeden zdrojový súbor a vykonáme príkaz make; takže to skompiluje iba objektový súbor, ktorý je spojený s týmto zdrojovým súborom. Ušetrí to veľa času pri konečnom zostavovaní projektu.
Čo je Makefile?
Príkaz make vyvolá vykonanie súboru makefile. Je to špeciálny súbor, ktorý obsahuje príkazy shellu, ktoré vytvárame na údržbu projektu. Makefile obsahuje ciele a príkazy na vykonanie. Nie je dovolené vytvárať viac ako jeden makefile. Odporúča sa preň vytvoriť samostatný adresár.
Sleduje najnovšie súbory, takže aktualizujte iba tie súbory, ktoré sú potrebné. Ak máme veľký program s mnohými zdrojovými súbormi, musíme prekompilovať všetky závislé súbory. Takže to môže byť veľmi časovo náročný proces.
Makefile obsahuje zoznam štandardov. Tieto štandardy sú užitočné pre systém, aby pochopil, aký príkaz chceme vykonať. Tieto normy sú rozdelené do dvoch častí a sú oddelené novým riadkom. Prvý riadok je línia závislosti, a nasledujúce riadky sa považujú za akcie alebo príkaz s. Príkazy sú oddelené tabulátorom v novom riadku.
The závislosti zadajte vzťah každého súboru so zdrojovými súbormi. A cieľ je spustiteľný súbor a vytvorí sa po vykonaní príkazu make.
možnosti
Príkaz make umožňuje rôzne možnosti, ako ho spresniť. Niektoré dôležité možnosti sú nasledovné:
make -p -f/dev/null.
Poďme pochopiť niekoľko príkladov príkazu make. Uvidíme základné použitie makefile a ďalej vytvoríme niekoľko programov v c++ a makefile. Vykonáme na nich niekoľko operácií, aby sme lepšie porozumeli príkazu make.
js načítať
Základné použitie príkazu make
Poďme pochopiť úplne základné použitie príkazu make a môže vám pomôcť pochopiť, ako to funguje.
Vytvorte adresár „projekt“ a zmeňte doň adresár. Zvážte nasledujúce príkazy:
mkdir project cd project
Teraz vytvorte a 'Makefile' s nasledujúcim obsahom pre prvý program:
say_hello: echo 'Hello World!'
Z vyššie uvedeného súboru je say_hello cieľ, ktorý sa správa ako funkcia v akomkoľvek programovacom jazyku a echo sa bude považovať za akciu. Je potrebné mať na pamäti, že akcia by mala byť napísaná pomocou a TAB. Cieľ a akcia spolu vytvárajú pravidlo pre makefile. Teraz vykonajte príkaz make takto:
Zvážte nasledujúci výstup:
Z vyššie uvedeného výstupu môžeme vidieť, že sa zobrazuje samotná operácia ozveny. Ak nechceme na výstupe zobraziť príkaz echo, vykonajte echo začínajúce od '@' symbol. Ak chcete potlačiť ozvenu, aktualizujte obsah súboru makefile takto:
say_hello: @echo 'Hello World!'
Zvážte nasledujúci výstup:
Cieľ môže byť binárny súbor, ktorý závisí od akcií.
Pridajme niekoľko ďalších cieľov, ako napríklad generovať a uvádzať v makefile. Aktualizujte makefile takto:
say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Ak vykonáme príkaz make, vykoná sa iba prvý cieľ, pretože je to predvolený cieľ súboru makefile. Zvážte nasledujúci výstup:
Predvolený cieľ môžeme zmeniť zahrnutím nižšie uvedeného obsahu do nášho súboru Makefile:
cm na stopy a palce
.DEFAULT_GOAL := generate
Pridajte ho do prvého riadku súboru takto:
Vyššie uvedený makefile bude považovať „generovať“ za predvolený cieľ. Vykonajte príkaz make a výstup bude nasledujúci:
Voľba DEFAULT GOAL (VÝCHOZÍ CIEĽ) vykoná iba jeden cieľ, ak chcete zadať viac ako jeden cieľ na použitie všetkých možností. Ak chcete zadať viac ako jeden cieľ, aktualizujte prvý riadok súboru makefile takto:
all: say_hello generate
Vykoná zadaný cieľ. Zvážte nasledujúci výstup:
Existuje ďalšia možnosť, ktorá nám umožňuje vykonať všetky ciele. Ak chceme spustiť všetky ciele súboru makefile, aktualizujeme súbor takto:
.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
Vyššie uvedený súbor vykoná všetky zadané ciele. Vykonajte príkaz make, zvážte nasledujúci výstup:
Pokročilé použitie príkazu make
Vytvorme C++ projekt so súbormi main.cpp, function1.cpp, function2.cpp a závislým súborom function.h.
Kód súborov je nasledujúci:
centrovanie obrázkov v css
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'; }
function.h:
void print_hello(); int factorial (int n);
Teraz vytvorte spustiteľný súbor vyššie uvedeného projektu vykonaním nižšie uvedeného príkazu:
g++ main.cpp function1.cpp function2.cpp -o hello
Vyššie uvedený príkaz vytvorí spustiteľný súbor 'Ahoj' zo súborov main.cpp, function1.cpp a function2.cpp.
Zvážte nasledujúci výstup:
Z vyššie uvedeného výstupu, ak je úspešne vykonaný, neposkytne žiadny výstup.
Vykonajte rovnakú úlohu pomocou súboru makefile.
Vytvorte súbor ako Makefile a vložte do nej nižšie uvedený kód.
all: g++ main.cpp function1.cpp function2.cpp -o hello
Kľúčové slovo all sa používa pre cieľ a na nový riadok zadajte rovnaký príkaz s TAB ako vyššie, aby ste špecifikovali operáciu. Uložte súbor. Zvážte nasledujúci súbor:
Ak chcete pracovať, vykonajte príkaz takto:
powershell väčší alebo rovný
make
Vyššie uvedený príkaz vytvorí spustiteľný súbor „ahoj“ zo špecifikovaných súborov. Zvážte nasledujúci výstup:
Pridajme do Makefile nejaké ďalšie úlohy. Pridajte úlohu 'kompilovať' nasledovne:
all: compile: g++ main.cpp function1.cpp function2.cpp -o hello
Na vykonanie úlohy zostaviť, vykonajte nižšie uvedený príkaz:
make compile
Vyššie uvedený príkaz vykoná úlohu kompilácie. Zvážte nasledujúci výstup:
Poďme vykonať niekoľko ďalších úloh v našom súbore Makefile.
aktualizujte súbor Makefile takto:
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
Z vyššie uvedeného makefile sme vytvorili tri objekty ako main.o, function1.o a function2.o. Ďalej sme poskytli závislosti pre ciele main.o, function1.o a function2.o ako main.cpp, function1.cpp a function2.cpp. Všetky ciele budú v rámci nej vykonávať zadané úlohy. Tiež sme špecifikovali čistý cieľ na vyčistenie všetkých závislostí a odstránenie spustiteľného súboru.
Teraz vykonajte príkaz make all na spustenie nášho nového súboru makefile.
make all
Zvážte nasledujúci výstup:
Z vyššie uvedeného výstupu môžeme vidieť, že príkaz najskôr vykonal main.o, function1.o a function2.o. Vytvorí spustiteľný súbor a súbor objektov daných súborov. Nevykoná čistý cieľ, pretože sme ho nešpecifikovali v hello. Zvážte nasledujúce súbory:
Príkaz make má priamy pracovný proces. Vykonala možnosť all a prešla na ahoj. Po vykonaní hello načítal cieľ v určenom poradí. Prehľadal každý cieľ a jeho závislosť a vykonal ich v poradí.
Ak chcete odstrániť objekty a spustiteľný súbor, vykonajte úlohu čistenia. Ak chcete vykonať čistú úlohu, vykonajte príkaz takto:
make clean
Zvážte nasledujúci výstup:
Vyššie uvedený príkaz odstráni všetky objekty a spustiteľné súbory. Pozrite si nižšie uvedený záber adresára:
Z vyššie uvedeného obrázku vidíme, že sme vyčistili náš adresár.
Premenné v príkaze make
Premenné môžeme definovať v našom makefile. Na definovanie premenných použite '=' operátor. Napríklad, ak chceme vytvoriť premennú A a priradiť k nej príkaz gcc, priraďme ju ako:
stdin v c
A=g++
Použite ho takto v našom makefile:
hello: hello.cpp ${A} hello.cpp -o hello
Do terminálu sa odovzdáva ako:
g++ hello.cpp -o hello
Namiesto ${A} môžeme použiť $(A), pretože skript s oboma zaobchádza rovnako.
Komentáre v makefile
Ak chcete pridať komentár do súboru makefile, použite '#' symbol. Ak chcete napríklad pridať komentár do sekcie kompilácie, pridajte ho ako '# Týmto sa skompiluje program .' Komentáre sú kompilátorom ignorované.