Linux udělat příkaz se používá k vytváření a údržbě skupin programů a souborů ze zdrojového kódu. V Linuxu je to jeden z nejčastěji používaných příkazů vývojářů. Pomáhá vývojářům instalovat a kompilovat mnoho utilit z terminálu. Dále se zabývá procesem kompilace rozsáhlých projektů. Šetří to čas kompilace.
Hlavním motivem příkazu make je rozdělit velký program na části a zkontrolovat, zda je třeba jej překompilovat nebo ne. Také vydává potřebné příkazy k jejich opětovné kompilaci.
V této části budeme používat programy C++, protože programovací jazyk C++ je objektově orientovaný jazyk, ale můžete použít jakýkoli jazyk nainstalovaný na vašem počítači. Neomezuje se pouze na programy; můžeme jej použít i k popisu jiných úkolů.
Jak příkaz make funguje?
Příkaz make bere cíle jako argumenty. Tyto argumenty jsou specifikovány v 'Makefile.' Makefile obsahuje cíle a také související akce související s těmito cíli.
Když spustíme příkaz make, vyhledá makefile a prohledá jej, aby našel cíl a získal přístup k jeho závislostem. Pokud nejsou uvedeny závislosti, vyhledá závislost a vytvoří ji. Po vytvoření závislostí vytvoří hlavní cíl.
Chceme-li například změnit pouze jeden zdrojový soubor a provedeme příkaz make; takže to zkompiluje pouze objektový soubor, který je spojen s tímto zdrojovým souborem. Ušetří to spoustu času při konečném sestavování projektu.
Co je Makefile?
Příkaz make vyvolá provedení souboru makefile. Je to speciální soubor, který obsahuje příkazy shellu, které vytváříme pro údržbu projektu. Makefile obsahuje cíle a příkazy pro provedení. Není povoleno vytvořit více než jeden makefile. Doporučuje se pro něj vytvořit samostatný adresář.
Sleduje poslední soubory, takže aktualizujte pouze ty soubory, které jsou vyžadovány. Pokud máme velký program s mnoha zdrojovými soubory, musíme znovu zkompilovat všechny závislé soubory. Takže to může být extrémně časově náročný proces.
Makefile obsahuje seznam standardů. Tyto standardy jsou užitečné pro systém, aby pochopil, jaký příkaz chceme provést. Tyto normy jsou rozděleny do dvou částí a jsou odděleny novým řádkem. První řádek je linii závislosti, a následující řádky jsou považovány za akce nebo příkaz s. Příkazy jsou odděleny tabulátorem na novém řádku.
The závislosti určete vztah každého souboru se zdrojovými soubory. A cílová je spustitelný soubor a je vytvořen po provedení příkazu make.
Možnosti
Příkaz make umožňuje různé možnosti, jak jej upřesnit. Některé důležité možnosti jsou následující:
make -p -f/dev/null.
Pojďme pochopit několik příkladů příkazu make. Uvidíme základní použití makefile a dále vytvoříme některé programy v c++ a makefile. Provedeme na nich některé operace, abychom lépe porozuměli příkazu make.
převést int na řetězec c++
Základní použití příkazu make
Pojďme pochopit velmi základní použití příkazu make a může vám pomoci pochopit, jak funguje.
Vytvořte adresář 'projekt' a změňte do něj adresář. Zvažte níže uvedené příkazy:
mkdir project cd project
Nyní vytvořte a 'Makefile' s následujícím obsahem pro první program:
say_hello: echo 'Hello World!'
Z výše uvedeného souboru je say_hello cíl, který se chová jako funkce v jakémkoli programovacím jazyce a echo bude považováno za akci. Je třeba mít na paměti, že akce by měla být zapsána pomocí a TAB. Cíl a akce společně vytvářejí pravidlo pro makefile. Nyní proveďte příkaz make takto:
matematické metody v Javě
Zvažte následující výstup:
Z výše uvedeného výstupu můžeme vidět, jak se zobrazuje samotná operace echa. Pokud nechceme na výstupu zobrazit příkaz echo, proveďte echo počínaje '@' symbol. Chcete-li potlačit ozvěnu, aktualizujte obsah makefile následovně:
say_hello: @echo 'Hello World!'
Zvažte následující výstup:
Cíl může být binární soubor, který závisí na akcích.
Pojďme přidat několik dalších cílů, jako je generování a seznam v makefile. Aktualizujte makefile následovně:
say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Pokud provedeme příkaz make, provede se pouze první cíl, protože je výchozím cílem souboru makefile. Zvažte následující výstup:
Výchozí cíl můžeme změnit zahrnutím níže uvedeného obsahu do našeho souboru makefile:
.DEFAULT_GOAL := generate
Přidejte jej na první řádek souboru následovně:
Výše uvedený makefile bude považovat 'generovat' za výchozí cíl. Proveďte příkaz make a ten dá výstup takto:
Možnost DEFAULT GOAL (VÝCHOZÍ CÍL) provede pouze jeden cíl pro určení více než jednoho cíle pro použití všech možností. Chcete-li zadat více než jeden cíl, aktualizujte první řádek souboru makefile následovně:
all: say_hello generate
Provede zadaný cíl. Zvažte následující výstup:
Existuje další možnost, která nám umožňuje provést všechny cíle. Pokud chceme spustit všechny cíle makefile, aktualizujeme soubor následovně:
.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
Výše uvedený soubor provede všechny zadané cíle. Spusťte příkaz make, zvažte následující výstup:
Pokročilé použití příkazu make
Vytvořme C++ projekt se soubory main.cpp, function1.cpp, function2.cpp a závislostním souborem function.h.
Kód souborů je následující:
řetězec najít c++
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'; }
funkce.h:
void print_hello(); int factorial (int n);
Nyní vytvořte spustitelný soubor výše uvedeného projektu provedením níže uvedeného příkazu:
g++ main.cpp function1.cpp function2.cpp -o hello
Výše uvedený příkaz vytvoří spustitelný soubor 'Ahoj' ze souborů main.cpp, function1.cpp a function2.cpp.
Zvažte následující výstup:
Z výše uvedeného výstupu, pokud je úspěšně proveden, neposkytne žádný výstup.
Proveďme stejný úkol pomocí makefile.
Vytvořte soubor jako Makefile a vložte do něj níže uvedený kód.
all: g++ main.cpp function1.cpp function2.cpp -o hello
Klíčové slovo all se používá pro cíl a na nový řádek zadejte stejný příkaz s TAB jako výše, abyste specifikovali operaci. Uložte soubor. Zvažte níže uvedený soubor:
Chcete-li pracovat, proveďte příkaz následovně:
unixový top příkaz
make
Výše uvedený příkaz vytvoří spustitelný soubor 'hello' ze zadaných souborů. Zvažte následující výstup:
Pojďme přidat nějaké další úkoly do Makefile. Přidejte úkol 'kompilovat' jak následuje:
all: compile: g++ main.cpp function1.cpp function2.cpp -o hello
K provedení úkolu kompilovat, proveďte níže uvedený příkaz:
make compile
Výše uvedený příkaz provede úlohu kompilace. Zvažte následující výstup:
Pojďme provést nějaké další úkoly do našeho souboru makefile.
aktualizujte Makefile následovně:
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 výše uvedeného makefile jsme vytvořili tři objekty jako main.o, function1.o a function2.o. Dále jsme poskytli závislosti pro cíle main.o, function1.o a function2.o jako main.cpp, function1.cpp a function2.cpp. Všechny cíle v něm budou plnit zadané úkoly. Také jsme určili čistý cíl pro vyčištění všech závislostí a odstranění spustitelného souboru.
Nyní spusťte příkaz make all pro spuštění našeho nového souboru makefile.
make all
Zvažte následující výstup:
Z výše uvedeného výstupu můžeme vidět, že příkaz nejprve provedl main.o, function1.o a function2.o. Vytvoří spustitelný soubor a soubor objektů daných souborů. Nevykoná čistý cíl, protože jsme jej nezadali v hello. Zvažte níže uvedené soubory:
Příkaz make má přímočarý pracovní proces. Provedlo to all option a přešlo na ahoj. Po provedení hello přečetl cíl v zadané sekvenci. Prohledal každý cíl a jeho závislosti a provedl je v pořadí.
Chcete-li odebrat objekty a spustitelný soubor, proveďte úlohu čištění. Chcete-li provést úlohu čištění, spusťte příkaz následovně:
make clean
Zvažte následující výstup:
Výše uvedený příkaz odstraní všechny objekty a spustitelné soubory. Podívejte se na níže uvedený snímek adresáře:
Z obrázku výše vidíme, že jsme vyčistili náš adresář.
Proměnné v příkazu make
Proměnné můžeme definovat v našem makefile. Chcete-li definovat proměnné, použijte '=' operátor. Pokud například chceme vytvořit proměnnou A a přiřadit k ní příkaz gcc, přiřaďte ji jako:
převod řetězce na objekt json
A=g++
Použijte jej následovně v našem makefile:
hello: hello.cpp ${A} hello.cpp -o hello
Do terminálu se předává jako:
g++ hello.cpp -o hello
Můžeme použít $(A) místo ${A}, protože s oběma zachází skript stejně.
Komentáře v makefile
Chcete-li přidat komentář do souboru makefile, použijte '#' symbol. Chcete-li například přidat komentář do sekce kompilace, přidejte jej jako '# Tím se zkompiluje program .' Komentáře jsou kompilátorem ignorovány.