Nadomestni znaki in Foreach v Makefile

Nadomestni Znaki In Foreach V Makefile



Datoteka je vedno sestavljena iz drugačne vrste vsebine: naj bo to preprosta besedilna datoteka, datoteka programske kode ali katera koli datoteka make. Vrsta vsebine katere koli datoteke jo naredi edinstveno in jo razlikuje od drugih oblik datotek. Prav tako je makefile sestavljen iz pravil, ki uporabljajo različne elemente za pravilno opravljanje svojega dela. Od teh elementov sta nadomestni znak in foreach, ki sta potrebna za izvedbo nečesa edinstvenega in dodatnega. V tem priročniku bomo razpravljali o moči nadomestnih znakov in foreach, medtem ko se uporabljajo v datoteki make.

Nadomestni znaki v Makefile

Na splošno je znano, da je nadomestni znak dejavnik, ki ga ni mogoče predvideti in lahko obrne situacijo na kakršen koli način. Nadomestni znaki v datoteki makefile se uporabljajo za izvedbo bonusa zaznavanja vseh možnih vzorcev iz trenutnega delovnega imenika, ne glede na to, ali gre za datoteko ali katero koli mapo. Te izvorne datoteke so lahko katere koli vrste.







Če želite uporabiti nadomestni znak v datoteki make, morate uporabiti ključno besedo »nadomestni znak«, ki sledi zvezdici »*« ali »?« znak in končnico datoteke, ki je povezana s piko. Uporabite lahko tudi »?« znak za iskanje enega samega znaka in »*« za iskanje poljubnega števila znakov. Celotno strukturo je treba uporabiti v oklepajih in znaku '$'. Na primer, deklariramo spremenljivko 'SRCS', ki dobi datoteko z vrednostjo prek nadomestnega znaka. Ta nadomestni znak išče vse datoteke z vzorcem »cpp« na koncu.





Foreach v Makefile

Funkcija foreach datoteke makefile deluje natanko tako kot zanka foreach v programskih jezikih – ponavljanje po elementih na seznamu. Funkcija foreach v makefile izvede določeno dejanje na vsaki postavki seznama. Ta element je lahko spremenljivka ali katera koli izvorna datoteka. Na primer, izdelamo sintakso funkcije foreach v makefile prek spremenljivke SOURCES, ki vsebuje seznam treh izvornih datotek. Funkcija foreach uporablja to spremenljivko SOURCES za ustvarjanje istega imena za tri objektne datoteke tako, da ponovi seznam izvornih datotek in jih shrani v drugo spremenljivko »OBJECTS«. Zadnji dve vrstici prikazujeta, kako je mogoče uporabiti pravilo makefile za ustvarjanje objektne datoteke za vsako datoteko C po ponavljanju.





VIRI := datoteka1.c datoteka2.c datoteka3.c
PREDMETI := $ ( foreach src,$ ( VIRI ) ,$ ( src:.c=.o ) )
$OBJEKTI : % .O: % .c
$ ( CC ) $ ( CZSTAVICE ) -c $ < -O $ @

Primer 1: Uporaba nadomestnih znakov

Za prikaz ilustracije in delovanja nadomestnih znakov in funkcij foreach uvajamo datoteko C++. Ta datoteka »salary.cpp« se zažene z uporabo glave »iostream«, da se omogoči nemotena uporaba vhodnih in izhodnih tokov. Glavna metoda deklarira spremenljivko 's' celoštevilskega tipa in stavek 'cout', da zahteva vhodno vrednost med izvajanjem. Standardni vhodni tok »cin« pridobi vrednost od uporabnika med izvajanjem in jo shrani v spremenljivko »s«. 'Cout' prikaže vrednost, ki jo vnese uporabnik na zaslonu konzole.

#include
uporaba imenskega prostora std;
int main ( ) {
int s;
cout << 'Vnesite plačo:' ;
prehranjevanje >> s;
cout << ' \n Plača: ' << s << endl;
vrnitev 0 ;
}



Makefile zaženemo s spremenljivko 'CXX', ki definira prevajalnik za C++, spremenljivka CXXFLAGS pa vsebuje zastavice za prevajalnik C++. Spremenljivka EXECUTABLE vsebuje ime izvršljive datoteke »hello«, ki je ustvarjena po izvedbi makefile. Spremenljivka SRCS pridobi vse datoteke C++ iz trenutnega imenika z uporabo nadomestnega znaka »*« za iskanje katerega koli vzorca, ki se konča z ».cpp«. Spremenljivka OBJS vsebuje imena objektnih datotek, ki jih je treba ustvariti s spremenljivko SRCS, pri čemer se pripona »cpp« nadomesti z »o«. Privzeti cilj »vse« zgradi makefile in je odvisen od spremenljivke EXECUTABLE.

Prvo pravilo ustvari ciljno datoteko »zdravo«, ki je odvisna od spremenljivke OBJS (imena objektnih datotek), objektne datoteke z uporabo imen datotek, ki so ustvarjena prek spremenljivke »OBJS«. Drugo pravilo makefile ustvari objektno datoteko s pripono ».o«, ki je odvisna od datoteke C++ po prevajanju kodne datoteke C++. Tukaj je »%« nadomestni znak za iskanje imen datotek katerega koli vzorca, ki se konča s »cpp«. Na koncu čisti cilj uporabi svoj ukaz »rm« za prisilno čiščenje na novo ustvarjenih izvedljivih in objektnih datotek iz imenika z uporabo zastavice »-f«.

CXX = g++
CXXZASTAVE = -Zid -std =c++ enajst
IZVRŠLJIVO = pozdravljeni
SRCS = $ ( nadomestni znak * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
vse: $ ( IZVELJLJIV )
$ ( IZVELJLJIV ) : $ ( OBJS )
$ ( CXX ) $ ( CXXZASTAVE ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXZASTAVE ) -c $ < -O $ @
čisto:
rm -f $ ( IZVELJLJIV ) $ ( OBJS )

Po zagonu ukaza »make« sta bili ustvarjeni ciljna in objektna datoteka. Po izvedbi izvršljive datoteke »hello« se od uporabnika zahteva, da vnese plačo, mi pa dodamo »67000«. Na koncu se za nazaj izpiše plača.

narediti

Primer 2: Uporaba Foreach

Po uporabi nadomestnih znakov je čas, da uporabite funkcijo foreach v datoteki makefile. Preostali del kode makefile je enak. V vrstici 6 inicializiramo še eno spremenljivko, ki je »NAMES« s seznamom treh vrednosti – Kate, Kim, Tim. Privzeti cilj »all« je odvisen od spremenljivke EXECUTABLE (ime ciljne datoteke »hello«) in stavka foreach. Funkcija »addprefix« ponavlja spremenljivko »NAMES« za dinamično generiranje ciljnih imen s predpono »run_« na začetku vsakega imena na seznamu »NAMES«.

Pravilo v osmi vrstici nakazuje, da je izhodna izvedljiva ciljna datoteka, tj. hello, odvisna od »OBJS«. Zastavica »-o« ustvari ciljno izhodno datoteko z uporabo OBJS. Pravilo v deseti vrstici ustvari ciljno predmetno datoteko z uporabo izvornih datotek s pripono »cpp«. Za prevajanje izvorne datoteke in ustvarjanje povezane objektne datoteke, ki je potrebna za ciljno generiranje, se uporabi zastavica »-c«. V trinajsti vrstici uporabimo spremenljivko EXECUTABLE za ustvarjanje izhoda z različnimi imeni, ki se začnejo s predpono »run_«. Na koncu bodo čisti cilj in cilji Phony odstranili in očistili objekt in ciljne datoteke.

CXX = g++
CXXZASTAVE = -Zid -std =c++ enajst
# izvršljiva ciljna datoteka
IZVRŠLJIVO = pozdravljeni
SRCS = $ ( nadomestni znak * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
# Seznam imen
IMENA = Kate Kim Tim
# Tarče
vse: $ ( IZVELJLJIV ) $ ( addprefix run_, $ ( IMENA ) )
$ ( IZVELJLJIV ) : $ ( OBJS )
$ ( CXX ) $ ( CXXZASTAVE ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXZASTAVE ) -c $ < -O $ @
# Ustvarite cilje za vsako ime
teči_ % : $ ( IZVELJLJIV )
. / $ ( IZVELJLJIV ) $*
čisto:
rm -f $ ( IZVELJLJIV ) $ ( OBJS )
# Lažne tarče
.LAŽNO: vse čisto

Uporaba ukaza »make« generira izvršljivo tarčo »hello« in zažene program za vsako ime, ki je podano v spremenljivki »NAMES«.

narediti

Izhod lahko spremenite tudi z uporabo imena s seznama s predpono »run_«.

Naj teče_Kim

Zaključek

Ta priročnik je obravnaval uporabo nadomestnih znakov in konceptov foreach v datoteki makefile, medtem ko je njihova sintaksa obravnavana ločeno. Po tem smo razpravljali o primerih kode, da bi podrobneje opisali njihovo delo z izhodi pri pridobivanju datotek z enakimi končnicami in ponavljanju vrednosti na seznamu spremenljivk.