Zástupné znaky a Foreach v Makefile

Zastupne Znaky A Foreach V Makefile



Súbor sa vždy skladá z iného typu obsahu: či už ide o jednoduchý textový súbor, súbor programového kódu alebo akýkoľvek makefile. Typ obsahu každého súboru ho robí jedinečným a odlišuje ho od iného formátu súborov. Makefile sa skladá z pravidiel, ktoré používajú rôzne prvky na správne vykonávanie svojej práce. Z týchto prvkov je tu zástupný znak a foreach, ktoré sú potrebné na vykonanie niečoho jedinečného a extra. V tejto príručke budeme diskutovať o sile zástupných znakov a foreach pri ich použití v súbore Makefile.

Zástupné znaky v Makefile

Vo všeobecnosti je zástupný znak známy ako faktor, ktorý sa nedá predvídať a môže akýmkoľvek spôsobom zmeniť situáciu. Zástupné znaky v makefile sa používajú na vykonanie bonusu detekcie všetkých možných vzorov z aktuálneho pracovného adresára, či už je to súbor alebo akýkoľvek priečinok. Tieto zdrojové súbory môžu byť akéhokoľvek typu.







Ak chcete použiť zástupný znak v makefile, mali by ste použiť kľúčové slovo „wildcard“, ktoré nasleduje za hviezdičkou „*“ alebo „?“ a príponu súboru, ktorá je pripojená cez bodku. Môžete tiež použiť „?“ znak na vyhľadanie jedného znaku a znak „*“ na zhodu s ľubovoľným počtom znakov. Celá táto štruktúra by mala byť použitá v zátvorkách a znaku „$“. Napríklad deklarujeme premennú „SRCS“, ktorá získa svoj súbor hodnôt prostredníctvom zástupného znaku. Tento zástupný znak hľadá všetky súbory so vzorom „cpp“ na konci.





Foreach v Makefile

Funkcia foreach makefile funguje presne ako slučka foreach v programovacích jazykoch – iterujte cez položky v zozname. Funkcia foreach v makefile vykonáva konkrétnu akciu na každej položke zoznamu. Tento prvok môže byť premenná alebo ľubovoľný zdrojový súbor. Napríklad vypracujeme syntax funkcie foreach v makefile prostredníctvom premennej SOURCES, ktorá obsahuje zoznam troch zdrojových súborov. Funkcia foreach používa túto premennú SOURCES na vytvorenie rovnakého názvu pre tri objektové súbory opakovaním zoznamu zdrojových súborov a ich uložením do inej premennej „OBJECTS“. Posledné dva riadky ukazujú, ako možno použiť pravidlo makefile na vytvorenie objektového súboru pre každý súbor C po iterácii.





ZDROJE := súbor1.c súbor2.c súbor3.c
OBJEKTY := $ ( foreach src,$ ( ZDROJE ) ,$ ( src:.c=.o ) )
$OBJECTS : % .O: % .c
$ ( CC ) $ ( CFLAGS ) -c $ < -O $ @

Príklad 1: Použitie zástupných znakov

Na zobrazenie ilustrácie a fungovania zástupných znakov a funkcií foreach zavedieme súbor C++. Tento súbor „salary.cpp“ sa spúšťa s použitím hlavičky „iostream“, aby sa umožnilo plynulé používanie vstupných a výstupných tokov. Hlavná metóda deklaruje premennú „s“ celočíselného typu a príkaz „cout“ na vyžiadanie vstupnej hodnoty za behu. Štandardný vstupný tok „cin“ získa hodnotu od používateľa za behu a uloží ju do premennej „s“. „Cout“ zobrazuje hodnotu zadanú používateľom na obrazovke konzoly.

#include
pomocou menného priestoru std;
int main ( ) {
int s;
cout << 'Zadajte plat: ' ;
jedenie >> s;
cout << ' \n Plat: ' << s << endl;
vrátiť 0 ;
}



Makefile začíname premennou „CXX“, ktorá definuje kompilátor pre C++, a premenná CXXFLAGS obsahuje príznaky pre kompilátor C++. Premenná EXECUTABLE obsahuje názov spustiteľného súboru „hello“, ktorý sa vygeneruje po spustení súboru makefile. Premenná SRCS získa všetky súbory C++ z aktuálneho adresára pomocou zástupného znaku „*“ na vyhľadanie akéhokoľvek vzoru, ktorý končí na „.cpp“. Premenná OBJS obsahuje názvy súborov objektov, ktoré sa majú vytvoriť pomocou premennej SRCS, pričom príponu „cpp“ nahrádza „o“. Predvolený cieľ „all“ vytvára súbor makefile a závisí od premennej EXECUTABLE.

Prvé pravidlo vytvorí cieľový súbor „hello“, ktorý závisí od objektového súboru premennej OBJS (názvy súborov objektov) pomocou názvov súborov, ktoré sa generujú prostredníctvom premennej „OBJS“. Druhé pravidlo makefile generuje objektový súbor s príponou „.o“, ktorý závisí od súboru C++ po kompilácii súboru kódu C++. Tu je „%“ zástupný znak na vyhľadávanie názvov súborov akéhokoľvek vzoru, ktorý končí na „cpp“. Nakoniec čistý cieľ použije svoj príkaz „rm“ na násilné vyčistenie novo vygenerovaných spustiteľných súborov a súborov objektov z adresára pomocou príznaku „-f“.

CXX = g++
CXXFLAGS = -Stena -štd =c++ jedenásť
EXECUTABLE = ahoj
SRCS = $ ( divoká karta * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
všetko: $ ( EXECUTABLE )
$ ( EXECUTABLE ) : $ ( OBJS )
$ ( CXX ) $ ( CXXFLAGS ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXFLAGS ) -c $ < -O $ @
čisté:
rm -f $ ( EXECUTABLE ) $ ( OBJS )

Po spustení inštrukcie „make“ sa vytvorili cieľové aj objektové súbory. Po spustení spustiteľného súboru „ahoj“ je používateľ požiadaný o zadanie mzdy a pridáme „67000“. Na konci sa mzda zobrazí späť.

urobiť

Príklad 2: Použitie Foreach

Po použití zástupných znakov je čas využiť funkciu foreach v makefile. Zvyšok kódu makefile je rovnaký. Na riadku 6 inicializujeme ďalšiu premennú, ktorá je „NAMES“ so zoznamom troch hodnôt – Kate, Kim, Tim. Predvolený cieľ „all“ závisí od premennej EXECUTABLE (názov cieľového súboru „hello“) a každého príkazu. Funkcia „addprefix“ iteruje premennú „NAMES“, aby dynamicky generovala cieľové názvy pridaním predpony „run_“ na začiatok každého mena v zozname „NAMES“.

Pravidlo na ôsmom riadku označuje, že výstupný spustiteľný cieľový súbor, t. j. ahoj, závisí od „OBJS“. Príznak „-o“ generuje cieľový výstupný súbor pomocou OBJS. Pravidlo na desiatom riadku generuje cieľový objektový súbor pomocou zdrojových súborov s príponou „cpp“. Na tento účel sa používa príznak „-c“ na zostavenie zdrojového súboru a vygenerovanie súvisiaceho objektového súboru, ktorý je potrebný na generovanie cieľa. Na trinástom riadku použijeme premennú EXECUTABLE na vygenerovanie výstupu s rôznymi názvami začínajúcimi na „run_“ ako predponu. Nakoniec čistý cieľ a falošné ciele odstránia a vyčistia objekt a cieľové súbory.

CXX = g++
CXXFLAGS = -Stena -štd =c++ jedenásť
# spustiteľný cieľový súbor
EXECUTABLE = ahoj
SRCS = $ ( divoká karta * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
# Zoznam mien
MENÁ = Kate Kim Tim
# Ciele
všetko: $ ( EXECUTABLE ) $ ( addprefix run_, $ ( MENÁ ) )
$ ( EXECUTABLE ) : $ ( OBJS )
$ ( CXX ) $ ( CXXFLAGS ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXFLAGS ) -c $ < -O $ @
# Vytvorte ciele pre každé meno
spustiť_ % : $ ( EXECUTABLE )
. / $ ( EXECUTABLE ) $*
čisté:
rm -f $ ( EXECUTABLE ) $ ( OBJS )
# Falošné ciele
.PHONY: všetko čisté

Použitie inštrukcie „make“ vygeneruje spustiteľný cieľ „hello“ a spustí program pre každé meno, ktoré je zadané v premennej „NAMES“.

urobiť

Môžete tiež upraviť svoj výstup pomocou názvu zo zoznamu s predponou „run_“.

Make run_Kim

Záver

Táto príručka diskutovala o použití zástupných znakov a pojmov foreach v súbore makefile, pričom sa diskutuje o ich syntaxi samostatne. Potom sme diskutovali o príkladoch kódu, aby sme rozpracovali každú z ich prác s výstupmi pri získavaní súborov s rovnakými príponami a opakovaní hodnôt v zozname premenných.