Aizstājējzīmes un Foreach pakalpojumā Makefile

Aizstajejzimes Un Foreach Pakalpojuma Makefile



Fails vienmēr tiek veidots no cita veida satura: vai tas ir vienkāršs teksta fails, programmas koda fails vai jebkurš makefile. Jebkura faila satura veids padara to unikālu un atšķir to no cita formāta failiem. Tāpat makefile sastāv no noteikumiem, kas izmanto dažādus elementus, lai pareizi veiktu savu darbu. No šiem elementiem ir aizstājējzīme un foreach, kas ir nepieciešami, lai izpildītu kaut ko unikālu un papildu. Šajā rokasgrāmatā mēs apspriedīsim aizstājējzīmju un foreach spēku, kamēr tie tiek izmantoti makefile.

Aizstājējzīmes pakalpojumā Makefile

Kopumā ir zināms, ka aizstājējzīme ir faktors, kuru nevar paredzēt un kas var mainīt situāciju jebkādā veidā. Aizstājējzīmes makefile tiek izmantotas, lai veiktu visu iespējamo modeļu noteikšanu no pašreizējā darba direktorija neatkarīgi no tā, vai tas ir fails vai jebkura mape. Šie avota faili var būt jebkura veida.







Lai makefailā izmantotu aizstājējzīmi, izmantojiet aizstājējzīmi, kas seko zvaigznītei “*” vai “?” zīmi un faila paplašinājumu, kas ir savienots ar punktu. Varat arī izmantot “?” zīmi, lai meklētu vienu rakstzīmi, un “*”, lai atbilstu jebkuram rakstzīmju skaitam. Visa šī struktūra ir jāizmanto iekavās un “$” zīmē. Piemēram, mēs deklarējam mainīgo “SRCS”, kas iegūst vērtību failu, izmantojot aizstājējzīmi. Šī aizstājējzīme meklē visus failus, kuru beigās ir “cpp” raksts.





Foreach programmā Makefile

Makefile foreach funkcija darbojas tieši tāpat kā foreach cilpa programmēšanas valodās — atkārtojiet vienumus sarakstā. Foreach funkcija makefile veic noteiktu darbību ar katru saraksta vienumu. Šis elements var būt mainīgs vai jebkurš avota fails. Piemēram, mēs izstrādājam foreach funkcijas sintaksi failā makefile, izmantojot mainīgo SOURCES, kas satur trīs avota failu sarakstu. Funkcija foreach izmanto šo mainīgo SOURCES, lai izveidotu vienādu nosaukumu trim objektu failiem, atkārtojot avota failu sarakstu un saglabājot tos citā mainīgajā “OBJECTS”. Pēdējās divas rindiņas parāda, kā makefile kārtulu var izmantot, lai pēc iterācijas izveidotu objekta failu katram C failam.





AVOTI := fails1.c fails2.c fails3.c
OBJEKTI := $ ( foreach src,$ ( AVOTI ) ,$ ( src:.c=.o ) )
$OBJEKTI : % .O: % .c
$ ( CC ) $ ( CFLAGI ) -c $ < -O $ @

1. piemērs: aizstājējzīmju izmantošana

Lai parādītu aizstājējzīmju un foreach funkciju ilustrāciju un darbību, mēs ieviešam C++ failu. Šis “salary.cpp” fails tiek palaists, izmantojot “iostream” galveni, lai nodrošinātu vienmērīgu ievades un izvades straumju izmantošanu. Galvenā metode deklarē vesela skaitļa mainīgo “s” un paziņojumu “cout”, lai pieprasītu ievades vērtību izpildes laikā. “cin” standarta ievades straume izpildes laikā iegūst vērtību no lietotāja un saglabā to mainīgajā “s”. “Cout” konsoles ekrānā parāda lietotāja ievadīto vērtību.

#include
izmantojot namespace std;
int galvenais ( ) {
int s;
cout << 'Ievadiet algu:' ;
ēšana >> s;
cout << ' \n Alga: ' << s << endl;
atgriezties 0 ;
}



Mēs sākam makefile ar mainīgo “CXX”, kas definē C++ kompilatoru, un mainīgais CXXFLAGS satur C++ kompilatora karogus. Mainīgais EXECUTABLE satur izpildāmā faila “hello” nosaukumu, kas tiek ģenerēts pēc makefile izpildes. SRCS mainīgais iegūst visus C++ failus no pašreizējā direktorija, izmantojot aizstājējzīmi “*”, lai meklētu jebkuru modeli, kas beidzas ar “.cpp”. Mainīgais OBJS satur objektu failu nosaukumus, kas jāizveido, izmantojot SRCS mainīgo, aizstājot paplašinājumu “cpp” ar “o”. Noklusējuma “viss” mērķis veido makefile, un tas ir atkarīgs no mainīgā EXECUTABLE.

Pirmais noteikums izveido mērķa failu 'hello', kas ir atkarīgs no OBJS mainīgā (objektu failu nosaukumiem) objekta faila, izmantojot failu nosaukumus, kas tiek ģenerēti, izmantojot mainīgo 'OBJS'. Otrais makefile noteikums ģenerē objekta failu ar paplašinājumu “.o”, kas ir atkarīgs no C++ faila pēc C++ koda faila kompilēšanas. Šeit “%” ir aizstājējzīme, lai meklētu jebkura modeļa failu nosaukumus, kas beidzas ar “cpp”. Galu galā tīrais mērķis izmanto savu komandu “rm”, lai piespiedu kārtā notīrītu jaunizveidotos izpildāmos un objektu failus no direktorija, izmantojot karodziņu “-f”.

CXX = g++
CXXFLAGS = -Siena -std =c++ vienpadsmit
IZPILDOMS = sveiki
SRCS = $ ( aizstājējzīme * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
visi: $ ( IZPILDAMS )
$ ( IZPILDAMS ) : $ ( OBJS )
$ ( CXX ) $ ( CXXKAROGI ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXKAROGI ) -c $ < -O $ @
tīrs:
rm -f $ ( IZPILDAMS ) $ ( OBJS )

Palaižot “make” instrukciju, tika izveidoti gan mērķa, gan objekta faili. Pēc izpildāmā faila “hello” izpildes lietotājam tiek lūgts ievadīt algu un mēs pievienojam “67000”. Beigās tiek parādīta alga.

veidot

2. piemērs: Foreach izmantošana

Pēc aizstājējzīmju izmantošanas ir pienācis laiks izmantot foreach funkciju makefile. Pārējais makefile kods ir tāds pats. 6. rindā mēs inicializējam citu mainīgo, kas ir “NAMES”, ar trīs vērtību sarakstu — Kate, Kim, Tim. Noklusējuma “viss” mērķis ir atkarīgs no mainīgā EXECUTABLE (mērķa faila nosaukums “hello”) un priekšraksta. Funkcija “addprefix” atkārto mainīgo “NAMES”, lai dinamiski ģenerētu mērķa nosaukumus, katra saraksta “NAMES” vārda sākumā prefiksu “run_”.

Noteikums astoņās rindās norāda, ka izvades izpildāmais mērķa fails, t.i., sveiki, ir atkarīgs no “OBJS”. Karogs “-o” ģenerē mērķa izvades failu, izmantojot OBJS. Noteikums desmitajā rindā ģenerē mērķa objekta failu, izmantojot avota failus ar paplašinājumu “cpp”. Lai to izdarītu, karodziņš “-c” tiek izmantots, lai apkopotu avota failu un ģenerētu saistīto objekta failu, kas nepieciešams mērķa ģenerēšanai. Trīspadsmitajā rindā mēs izmantojam mainīgo EXECUTABLE, lai ģenerētu izvadi ar dažādiem nosaukumiem, kas sākas ar “run_” kā prefiksu. Galu galā tīrais mērķis un neīstie mērķi noņems un notīrīs objektu un mērķa failus.

CXX = g++
CXXFLAGS = -Siena -std =c++ vienpadsmit
# izpildāms mērķa fails
IZPILDOMS = sveiki
SRCS = $ ( aizstājējzīme * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
# Vārdu saraksts
VĀRDI = Keita Kima Tima
# Mērķi
visi: $ ( IZPILDAMS ) $ ( addprefix run_, $ ( VĀRDI ) )
$ ( IZPILDAMS ) : $ ( OBJS )
$ ( CXX ) $ ( CXXKAROGI ) -O $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXKAROGI ) -c $ < -O $ @
# Izveidojiet mērķus katram vārdam
palaist_ % : $ ( IZPILDAMS )
. / $ ( IZPILDAMS ) $*
tīrs:
rm -f $ ( IZPILDAMS ) $ ( OBJS )
# Neīsti mērķi
.FONIJA: viss tīrs

Izmantojot instrukciju “make”, tiek ģenerēts izpildāmais mērķis “hello” un tiek palaista programma katram nosaukumam, kas norādīts mainīgajā “NAMES”.

veidot

Varat arī modificēt izvadi, izmantojot nosaukumu no saraksta ar prefiksu “run_”.

Padarīt run_Kim

Secinājums

Šajā rokasgrāmatā tika apspriesta aizstājējzīmju un foreach jēdzienu izmantošana makefile, vienlaikus apspriežot to sintakse atsevišķi. Pēc tam mēs apspriedām koda piemērus, lai precizētu, kā katrs no tiem strādā ar izvadiem, iegūstot failus ar vienādiem paplašinājumiem un atkārtojot vērtības mainīgo sarakstā.