Pakaitos simboliai ir Foreach programoje Makefile

Pakaitos Simboliai Ir Foreach Programoje Makefile



Failas visada sudarytas iš skirtingo tipo turinio: ar tai paprastas tekstinis failas, programos kodo failas ar bet koks makefile. Bet kurio failo turinio tipas daro jį unikalų ir išskiria jį iš kitų failų formatų. Taip pat makefile susideda iš taisyklių, kurios naudoja skirtingus elementus, kad tinkamai atliktų savo darbą. Iš šių elementų yra pakaitos simbolis ir foreach, kurių reikia norint atlikti kažką unikalaus ir papildomo. Šiame vadove aptarsime pakaitos simbolių ir foreach galią, kai jie naudojami makefile.

Pakaitos simboliai Makefile

Apskritai žinoma, kad pakaitos simbolis yra veiksnys, kurio negalima numatyti ir kuris gali bet kokiu būdu pakeisti situaciją. Pakaitos simboliai makefile naudojami norint aptikti visus galimus šablonus iš esamo darbo katalogo, nesvarbu, ar tai failas, ar bet koks aplankas. Šie šaltinio failai gali būti bet kokio tipo.







Norėdami naudoti pakaitos simbolį make-file, turėtumėte naudoti 'pakaitos simbolio' raktinį žodį, kuris yra po žvaigždute '*' arba '?' ženklas ir failo plėtinys, sujungtas tašku. Taip pat galite naudoti „? ženklas, jei norite ieškoti vieno simbolio, ir „*“, kad atitiktų bet kokį simbolių skaičių. Visa ši struktūra turėtų būti naudojama skliausteliuose ir „$“ ženkle. Pavyzdžiui, deklaruojame „SRCS“ kintamąjį, kuris gauna vertės failą per pakaitos simbolį. Šis pakaitos simbolis ieško visų failų, kurių pabaigoje yra „cpp“ šablonas.





Foreach programoje Makefile

Makefile foreach funkcija veikia lygiai taip pat kaip foreach ciklas programavimo kalbomis – kartokite sąrašo elementus. Foreach funkcija makefile atlieka tam tikrą veiksmą su kiekvienu sąrašo elementu. Šis elementas gali būti kintamasis arba bet koks šaltinio failas. Pavyzdžiui, makefile funkcijos foreach sintaksę parengiame per kintamąjį SOURCES, kuriame yra trijų šaltinio failų sąrašas. Funkcija „foreach“ naudoja šį kintamąjį SOURCES, kad sukurtų tą patį pavadinimą trims objektų failams, kartodama šaltinio failų sąrašą ir išsaugodama juos kitame „OBJECTS“ kintamajame. Paskutinės dvi eilutės rodo, kaip makefile taisyklė gali būti naudojama kuriant objekto failą kiekvienam C failui po iteracijos.





ŠALTINIAI := failas1.c failas2.c failas3.c
OBJEKTAI := $ ( foreach src,$ ( ŠALTINIAI ) ,$ ( src:.c=.o ) )
$OBJEKTAS : % .O: % .c
$ ( CC ) $ ( CFLAGS ) -c $ < -O $ @

1 pavyzdys: pakaitos simbolių naudojimas

Norėdami parodyti pakaitos simbolių ir foreach funkcijų iliustraciją ir veikimą, pristatome C++ failą. Šis „salary.cpp“ failas paleidžiamas naudojant „iostream“ antraštę, kad būtų galima sklandžiai naudoti įvesties ir išvesties srautus. Pagrindinis metodas deklaruoja sveikojo skaičiaus kintamąjį „s“ ir teiginį „cout“, kad vykdymo metu būtų prašoma įvesties reikšmės. Standartinis „cin“ įvesties srautas gauna vertę iš vartotojo vykdymo metu ir išsaugo ją kintamajame „s“. „Cout“ rodo vartotojo įvestą reikšmę konsolės ekrane.

#include
naudojant vardų erdvę std;
tarp pagrindinis ( ) {
int s;
cout << 'Įveskite atlyginimą:' ;
valgymas >> s;
cout << \n Atlyginimas: ' << s << endl;
grąžinti 0 ;
}



Makefile pradedame su kintamuoju „CXX“, kuris apibrėžia C++ kompiliatorių, o kintamasis CXXFLAGS turi C++ kompiliatoriaus vėliavėles. EXECUTABLE kintamasis turi vykdomojo failo „hello“, kuris sugeneruojamas paleidus makefile, pavadinimą. SRCS kintamasis gauna visus C++ failus iš dabartinio katalogo, naudodamas pakaitos simbolį „*“, kad būtų galima ieškoti bet kokio šablono, kuris baigiasi „.cpp“. OBJS kintamasis turi objektų failų, kurie turi būti sukurti naudojant SRCS kintamąjį, pavadinimus, pakeičiant plėtinį 'cpp' į 'o'. Numatytasis tikslas „visi“ sukuria makefile ir priklauso nuo EXCUTABLE kintamojo.

Pirmoji taisyklė sukuria tikslinį „hello“ failą, kuris priklauso nuo OBJS kintamojo (objektų failų pavadinimų) objekto failo, naudojant failų pavadinimus, sugeneruotus naudojant „OBJS“ kintamąjį. Antroji makefile taisyklė sugeneruoja objekto failą su plėtiniu „.o“, kuris priklauso nuo C++ failo, sukūrus C++ kodo failą. Čia „%“ yra pakaitos simbolis, skirtas ieškoti bet kokio šablono, kuris baigiasi „cpp“, failų pavadinimų. Galų gale švarus tikslas naudoja savo komandą „rm“, kad priverstinai išvalytų naujai sugeneruotus vykdomuosius ir objektų failus iš katalogo, naudodamas vėliavą „-f“.

CXX = g++
CXXFLAGS = -Siena -std =c++ vienuolika
VYKDOMA = labas
SRCS = $ ( pakaitos simbolis * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
visi: $ ( VYKDOMA )
$ ( VYKDOMA ) : $ ( OBJS )
$ ( CXX ) $ ( CXX FLAGS ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXX FLAGS ) -c $ < -O $ @
švarus:
rm -f $ ( VYKDOMA ) $ ( OBJS )

Vykdant „make“ instrukciją, buvo sukurti ir tikslo, ir objekto failai. Įvykdžius vykdomąjį „hello“ failą, vartotojo prašoma įvesti atlyginimą ir pridedame „67000“. Pabaigoje rodomas atlyginimas.

padaryti

2 pavyzdys: Foreach naudojimas

Panaudojus pakaitos simbolius, laikas naudoti foreach funkciją makefile. Likusi makefile kodo dalis yra tokia pati. 6 eilutėje inicijuojame kitą kintamąjį, kuris yra 'NAMES' su trijų reikšmių sąrašu - Kate, Kim, Tim. Numatytasis tikslas „visi“ priklauso nuo EXCUTABLE kintamojo (tikslinio failo pavadinimo „hello“) ir foreach teiginio. Funkcija „addprefix“ kartoja „NAMES“ kintamąjį, kad dinamiškai generuotų tikslinius pavadinimus, kiekvieno sąrašo „NAMES“ vardo pradžioje pridedant „run_“.

Aštuntoje eilutėje esanti taisyklė rodo, kad išvesties vykdomasis tikslinis failas, ty labas, priklauso nuo „OBJS“. Vėliava „-o“ generuoja tikslinį išvesties failą naudodama OBJS. Dešimtoje eilutėje esanti taisyklė sugeneruoja tikslinio objekto failą naudodama šaltinio failus su plėtiniu „cpp“. Norėdami tai padaryti, „-c“ vėliavėlė naudojama šaltinio failui sudaryti ir susijusiam objekto failui sugeneruoti, kuris reikalingas tikslinei generacijai. Tryliktoje eilutėje mes naudojame EXCUTABLE kintamąjį, kad sugeneruotume išvestį skirtingais pavadinimais, pradedant „run_“ kaip priešdėliu. Galų gale švarus taikinys ir apgaulingi tikslai pašalins ir išvalys objektą ir tikslinius failus.

CXX = g++
CXXFLAGS = -Siena -std =c++ vienuolika
# vykdomasis tikslinis failas
VYKDOMA = labas
SRCS = $ ( pakaitos simbolis * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
# Vardų sąrašas
VARDAI = Kate Kim Tim
# Tikslai
visi: $ ( VYKDOMA ) $ ( addprefix run_, $ ( VARDAI ) )
$ ( VYKDOMA ) : $ ( OBJS )
$ ( CXX ) $ ( CXX FLAGS ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXX FLAGS ) -c $ < -O $ @
# Sukurkite kiekvieno vardo taikinius
paleisti_ % : $ ( VYKDOMA )
. / $ ( VYKDOMA ) $*
švarus:
rm -f $ ( VYKDOMA ) $ ( OBJS )
# Netikri taikiniai
.FONIJA: viskas švaru

Instrukcijos „make“ naudojimas sugeneruoja vykdomąjį „hello“ tikslą ir paleidžia programą kiekvienam pavadinimui, nurodytam „NAMES“ kintamajame.

padaryti

Taip pat galite keisti išvestį naudodami pavadinimą iš sąrašo su priešdėliu „run_“.

Padaryti run_Kim

Išvada

Šiame vadove buvo aptartas pakaitos simbolių ir foreach sąvokų naudojimas makefile, kartu aptariant jų sintaksę atskirai. Po to aptarėme kodo pavyzdžius, kad patobulintume kiekvieną jų darbą su išvestimis, gaudami failus su tais pačiais plėtiniais ir kartodami reikšmes kintamųjų sąraše.