Linux tehdä komentoa käytetään ohjelmien ja tiedostojen ryhmien rakentamiseen ja ylläpitoon lähdekoodista. Linuxissa se on yksi kehittäjien useimmin käyttämistä komennoista. Se auttaa kehittäjiä asentamaan ja kääntämään monia apuohjelmia terminaalista. Lisäksi se hoitaa mittavien projektien kokoamisprosessin. Se säästää kokoamisaikaa.
Make-komennon päämotiivina on jakaa suuri ohjelma osiin ja tarkistaa, pitääkö se kääntää uudelleen vai ei. Se myös antaa tarvittavat käskyt kääntää ne uudelleen.
Tässä osiossa käytämme C++-ohjelmia, koska C++-ohjelmointikieli on oliokieli, mutta voit käyttää mitä tahansa koneellesi asennettua kieltä. Se ei rajoitu vain ohjelmiin; voimme käyttää sitä kuvaamaan myös muita tehtäviä.
Miten make command toimii?
Make-komento ottaa kohteet argumenteiksi. Nämä argumentit määritetään 'Makefile'-kohdassa. Makefile sisältää kohteet sekä niihin liittyvät toiminnot.
Kun suoritamme komennon make, se etsii make-tiedostoa ja skannaa sen löytääkseen kohteen ja käyttääkseen sen riippuvuuksia. Jos riippuvuuksia ei ole määritetty, se etsii riippuvuuden ja rakentaa sen. Se rakentaa pääkohteen riippuvuuksien rakentamisen jälkeen.
Esimerkiksi, jos haluamme muuttaa vain yhtä lähdetiedostoa ja suoritamme komennon make; joten tämä kääntää vain objektitiedoston, joka on yhdistetty kyseiseen lähdetiedostoon. Se säästää paljon aikaa projektin lopullisessa koostamisessa.
Mikä on Makefile?
Make-komento käynnistää makefile-tiedoston. Se on erityinen tiedosto, joka sisältää shell-komennot, jotka luomme projektin ylläpitämiseksi. Makefile sisältää tavoitteita ja komentoja suoritusta varten. Ei saa luoda useampaa kuin yhtä make-tiedostoa. On suositeltavaa luoda sille erillinen hakemisto.
Se pitää kirjaa viimeisimmistä tiedostoista, joten päivitä vain tarvittavat tiedostot. Jos meillä on suuri ohjelma, jossa on useita lähdetiedostoja, meidän on käännettävä uudelleen kaikki riippuvat tiedostot. Joten se voi olla erittäin aikaa vievä prosessi.
Makefile-tiedostossa on luettelo standardeista. Nämä standardit auttavat järjestelmää ymmärtämään, minkä komennon haluamme suorittaa. Nämä standardit ovat kahdessa osassa, ja ne erotetaan uudella rivillä. Ensimmäinen rivi on riippuvuuslinja, ja seuraavat rivit katsotaan toimia tai käskyä s. Komennot erotetaan uudella rivillä sarkaimella.
The riippuvuuksia määritä kunkin tiedoston suhde lähdetiedostoihin. Ja kohde on suoritettava tiedosto, ja se luodaan make-komennon suorittamisen jälkeen.
Vaihtoehdot
Make-komento mahdollistaa erilaisia vaihtoehtoja tarkentamaan sitä. Jotkut tärkeät vaihtoehdot ovat seuraavat:
tee -p -f/dev/null.
Ymmärretään joitain esimerkkejä make-komennosta. Näemme makefilen peruskäytön ja lisäksi luomme joitain c++-ohjelmia ja makefile-tiedoston. Suoritamme niille joitain toimintoja ymmärtääksemme make-komennon paremmin.
mikä on rom
Make-komennon peruskäyttö
Ymmärretään make-komennon peruskäyttö, ja se voi auttaa sinua ymmärtämään, miten se toimii.
Luo hakemisto 'projekti' ja vaihda hakemisto siihen. Harkitse seuraavia komentoja:
mkdir project cd project
Luo nyt a 'Makefile' jossa on seuraava sisältö ensimmäiselle ohjelmalle:
say_hello: echo 'Hello World!'
Yllä olevasta tiedostosta say_hello on kohde, joka käyttäytyy funktiona millä tahansa ohjelmointikielellä, ja kaikua pidetään toimintona. On muistettava, että toiminto tulee kirjoittaa komennolla a TAB. Kohde ja toiminta yhdessä muodostavat säännön makefilelle. Suorita nyt komento make seuraavasti:
Harkitse alla olevaa tulosta:
Yllä olevasta lähdöstä voimme nähdä itse kaikutoiminnon olevan näytössä. Jos emme halua näyttää echo-komentoa lähdössä, suorita kaiku alkaen '@' symboli. Voit vaimentaa kaiun päivittämällä makefile-tiedoston sisällön seuraavasti:
say_hello: @echo 'Hello World!'
Harkitse alla olevaa tulosta:
Kohde voi olla binääritiedosto, joka riippuu toiminnoista.
Lisätään vielä muutama kohde, kuten generointi ja luettelo Makefile. Päivitä makefile seuraavasti:
asetusvalikko android
say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Jos suoritamme komennon make, se suorittaa vain ensimmäisen kohteen, koska se on make-tiedoston oletuskohde. Harkitse alla olevaa tulosta:
Voimme muuttaa oletuskohteen sisällyttämällä alla olevan sisällön make-tiedostoomme:
.DEFAULT_GOAL := generate
Lisää se tiedoston ensimmäiselle riville seuraavasti:
Yllä oleva makefile pitää 'generate' oletustavoitteena. Suorita make-komento, ja se antaa tulosteen seuraavasti:
OLETUSTAVOITTEET -vaihtoehto suorittaa vain yhden kohteen määrittääkseen useamman kuin yhden kohteen kaikkien vaihtoehtojen käyttämiseksi. Jos haluat määrittää useamman kuin yhden kohteen, päivitä make-tiedoston ensimmäinen rivi seuraavasti:
all: say_hello generate
Se suorittaa määritetyn kohteen. Harkitse alla olevaa tulosta:
On toinenkin vaihtoehto, jonka avulla voimme suorittaa kaikki tavoitteet. Jos haluamme suorittaa kaikki makefile-kohteet, päivitä tiedosto seuraavasti:
.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
Yllä oleva tiedosto suorittaa kaikki määritetyt kohteet. Suorita make-komento, harkitse alla olevaa lähtöä:
Make-komennon edistynyt käyttö
Luodaan C++-projekti, jossa on tiedostot main.cpp, function1.cpp, function2.cpp ja riippuvuustiedosto function.h.
Tiedostojen koodi on seuraava:
korvaa merkkijonosta javassa
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'; }
Functions.h:
void print_hello(); int factorial (int n);
Luo nyt suoritettava tiedosto yllä olevasta projektista suorittamalla alla oleva komento:
g++ main.cpp function1.cpp function2.cpp -o hello
Yllä oleva komento luo suoritettavan tiedoston 'Hei' tiedostoista main.cpp, function1.cpp ja function2.cpp.
Harkitse alla olevaa tulosta:
Yllä olevasta lähdöstä, jos se suoritetaan onnistuneesti, se ei anna tulosta.
Suoritetaan sama tehtävä käyttämällä makefileä.
Luo tiedosto nimellä Makefile ja laita siihen alla oleva koodi.
all: g++ main.cpp function1.cpp function2.cpp -o hello
Kohteessa käytetään all-avainsanaa ja laita rivinvaihdossa sama komento TAB:lla kuin yllä määrittääksesi toiminnon. Tallenna tiedosto. Harkitse alla olevaa tiedostoa:
Toimiaksesi suorita komento seuraavasti:
tehdä javassa
make
Yllä oleva komento luo määritetyistä tiedostoista suoritettavan tiedoston 'hello'. Harkitse alla olevaa tulosta:
Lisätään vielä muutama tehtävä Makefileen. Lisää tehtävä 'koota' seuraavasti:
all: compile: g++ main.cpp function1.cpp function2.cpp -o hello
Tehtävän suorittamiseen koota, suorita alla oleva komento:
make compile
Yllä oleva komento suorittaa käännöstehtävän. Harkitse alla olevaa tulosta:
Suoritetaan muita tehtäviä make-tiedostollemme.
päivitä Makefile seuraavasti:
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
Yllä olevasta make-tiedostosta olemme luoneet kolme objektia: main.o, function1.o ja function2.o. Lisäksi olemme toimittaneet riippuvuudet kohteille main.o, function1.o ja function2.o vastaavasti main.cpp, function1.cpp ja function2.cpp. Kaikki kohteet suorittavat siinä määritellyt tehtävät. Olemme myös määrittäneet puhtaan kohteen kaikkien riippuvuuksien puhdistamiseksi ja suoritettavan tiedoston poistamiseksi.
Suorita nyt make all -komento suorittaaksesi uuden make-tiedoston.
make all
Harkitse alla olevaa tulosta:
Yllä olevasta lähdöstä voimme nähdä, että komento suoritti ensin main.o, function1.o ja function2.o. Se luo annetuista tiedostoista suoritettavan ja objektitiedoston. Se ei suorita puhdasta kohdetta, koska emme ole määrittäneet sitä Hellossa. Harkitse alla olevia tiedostoja:
Make-komennolla on suoraviivainen työprosessi. Se suoritti kaikki vaihtoehdot ja meni tervehtimään. Hellon suorittamisen jälkeen se luki kohteen määritetyssä järjestyksessä. Se etsi jokaista kohdetta ja sen riippuvuutta ja suoritti ne järjestyksessä.
Poista objektit ja suoritettava tiedosto suorittamalla puhdistustehtävä. Suorita puhdas tehtävä suorittamalla komento seuraavasti:
make clean
Harkitse alla olevaa tulosta:
Yllä oleva komento poistaa kaikki objektit ja suoritettavat tiedostot. Katso alla oleva ote hakemistosta:
Yllä olevasta kuvasta voimme nähdä, että olemme puhdistaneet hakemistomme.
Muuttujat make-komennossa
Voimme määrittää muuttujat make-tiedostossamme. Määritä muuttujat käyttämällä '=' operaattori. Jos esimerkiksi haluamme luoda muuttujan A ja määrittää sille komennon gcc, määritä se seuraavasti:
ero rakkauden ja tykkäämisen välillä
A=g++
Käytä sitä make-tiedostossamme seuraavasti:
hello: hello.cpp ${A} hello.cpp -o hello
Se välitetään terminaaliin seuraavasti:
g++ hello.cpp -o hello
Voimme käyttää $(A) ${A} sijaan, koska skripti käsittelee molempia samalla tavalla.
Kommentit make-tiedostossa
Voit lisätä kommentin make-tiedostoon käyttämällä '#' symboli. Jos haluat esimerkiksi lisätä kommentin käännösosaan, lisää se nimellä '# Tämä kääntää ohjelman .' Kääntäjä jättää kommentit huomioimatta.