Makefile-variabler og -argumenter: En omfattende veiledning

Makefile Variabler Og Argumenter En Omfattende Veiledning



En tekstfil kalt en 'makefile' brukes til å lagre kommandoene for å lage programvareprosjekter. Den kobler, setter opp og kompilerer automatisk prosjektets opprinnelige kode ved hjelp av en målfil. En makefil brukes til å lage et objekt og målfiler fra en kildekodefil. Ved kjøring av en målfil, vil koden i kildekodefilen bli utført, og prosjektet ditt vil kjøre på kort tid. I denne veiledningen vil vi gi deg omfattende detaljer om hvordan du lager en makefil ved hjelp av variabler og argumenter.

En grunnleggende makefil består av tre deler:





  • Variablene er merket som enheter for å lagre prosjektrelaterte data.
  • Reglene spesifiserer hvordan du oppretter en tiltenkt fil ved å bruke avhengighetene i makefilen.
  • Dokumentene som makefilen er designet for å generere, blir referert til som mål.

Makefile-variabler

Som vi allerede har beskrevet, blir et merket objekt som kan brukes til å lagre data referert til som en makefile-variabel. En variabels verdi kan være et enkelt tegn, en numerisk verdi eller en samling av verdier. Titlene på kilde- og måldokumentene, samt instruksjonene som skal brukes for å lage målene, er alle data om byggeprosedyren som er lagret i variabler.



Lag Makefile-variablene

For å definere en enkel variabel i makefile, bør vi starte den med en enkel tittel etterfulgt av '='-tegnet og verdien som vil bli lagret i den:



name_of_variable = value_of_variable





På den annen side er det foretrukket og anbefalt å prøve ':=' i stedet for '=' for en rask og best mulig ytelse av et prosjekt.

navn_på_variabel := verdi_av_variabel



For eksempel lager vi en makefile for C-prosjektet og erklærer en 'CC'-variabel. Denne variabelen lagrer kompilatoren som er kjørbar for C, dvs. 'gcc', som en verdi. På den fjerde linjen lager vi 'CFLAGS'-variabelen som brukes til å gi advarsler mens kompileringsprosessen pågår. Dette er for å forbedre optimaliseringen av et prosjekt du kjører og for å unngå problemer.

Akkurat som det brukes 'TARGET'-variabelen i denne kodebiten for å sette den nye målfilen som genereres etter kjøringen av en makefil. Når du oppretter en make-fil, er det nødvendig å angi kilde- og objektfilene etter å ha angitt en målfil. Kilde- og objektfilene kan også defineres ved hjelp av variablene. Du kan navngi disse variablene etter eget valg.

For eksempel setter SRCS-variabelen en kildefil mens OBJS-variabelen setter en ny objektfil ved å bruke SRCS-variabelen.

CC = gcc
CFLAGS = -Vegg
MÅL = Ny
SRCS = hoved.c
OBJS = $ ( SRCS:.c=.o )

Bruk Makefile-variablene

Etter å ha deklarert eller definert makefile-variablene, er det svært nødvendig å gjøre dem brukbare i makefilen. For å bruke en makefile-variabel, må du bruke '$'-tegnet etterfulgt av '()' eller '{}' parentes. For eksempel bruker vi '$()' for å bygge den kjørbare målfilen. Etter å ha gjort dette trinnet, vil målfilen kunne svare.

alle: $ ( MÅL )

Makefile-argumenter

Hver gang makefilen kalles opp, leveres en verdi til den som en parameter som er kjent som et 'argument'. Argumentene brukes til å overstyre den opprinnelige verdien av en mutable eller for å legge til flere detaljer til makefilen under kjøring. For å sende kommandolinjeargumentene til en variabel i en make-fil, bør du bruke nøkkelordet 'make' etterfulgt av et variabelnavn og en argumentverdi som sendes til den:

gjøre name_of_variable = value_of_variable

Disse parameterne kan nås som vanlige variabler i makefilen, dvs. 'New' er argumentverdien til 'TARGET'-variabelen.

MÅL = Ny

Eksempel: Lag variablene og argumentene

For å demonstrere bruken av variabler og argumenter i makefile, bruker vi et enkelt eksempel i C++. Vi lager en ny C++-fil i Notepad++ og legger til en 'iostream'-header for å bruke input og output i et eksempelprogram.

Main()-funksjonen starter med erklæringen av en tegntypevariabel 'v'. Standard utdatastrømmen som er 'cout' brukes til å vise og be brukeren om input. I motsetning til dette får 'cin'-standardinndatastrømmen en inngangsverdi fra en bruker ved kjøring og lagrer den i 'v'-variabelen. Standard 'cout' brukes igjen for å vise verdien som legges til av en bruker under kjøring. 'Return 0'-setningen avslutter programkjøringen vellykket.

#include
int main ( ) {
røye v;
std::cout << 'Skriv inn en verdi: ' ;
std::cin >> i;
std::cout << i << std::endl;
komme tilbake 0 ;
}

En makefil genereres på en standard måte. Den aller første variabelen, 'CXX', erklærer at kompilatoren skal brukes til å kjøre C++-filen, dvs. 'g++'. Den aller neste variabelen brukes til å sette flaggene for en kompilator for å unngå problemer.

Nå settes målfilen ved å bruke 'TARGET'-variabelen til 'New'. Dette er en kjørbar fil. Etter dette definerer makefilen sin kilde- og objektfil via SRCS- og OBJS-variablene. For å bruke de deklarerte variablene bruker vi '$'-tegnet etterfulgt av '()'-brakettene for å bygge den kjørbare målfilen, objektfilen og rense objektet og målfilen.

CXX = g++
CXXFLAGGER = -std =c++ elleve -Vegg
MÅL = Ny
SRCS = main.cpp
OBJS = $ ( SRCS:.cpp=.o )
alle: $ ( MÅL )
$ ( MÅL ) : $ ( OBJS )
$ ( CXX ) $ ( CXXFLAGGER ) -O $ ( MÅL ) $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXFLAGGER ) -c $ < -O $ @
ren:
rm -f $ ( MÅL ) $ ( OBJS )

Etter å ha lagret C++ og makefilen, start CMD-en til systemet ditt, naviger inn i arbeidskatalogen og kjør make-instruksjonen som følger. Den genererer 'main.o'-objektfilen og 'New.exe'-målfilen for kildekodefilen. Vi har ikke bestått noe argument for å lage instruksjonene for nå.

gjøre

Å kjøre målfilen vil be brukeren om input. Vi legger til 'h'-tegnet ved den første utførelsen og 'haha' ved den andre utførelsen. Mens 'v'-variabelen bare godtar 'tegn'-verdier, lagres og vises 'h'-tegnet fra 'haha'-strengen.

New.exe

La oss kjøre make-instruksjonen ved å bruke kommandolinjeargumentene som sendes til makefil-variablene. Så vi endrer 'TARGET'-variabelverdien og sender 'Test' til den. Etter det blir 'Test.exe'-filen generert og fungerer akkurat som 'New.exe'-filen.

gjøre MÅL =Test
Test.exe

Konklusjon

I denne omfattende guiden har vi gått gjennom innholdet i makefile en etter en. Vi utdypet hvordan man deklarerer variablene i en make-fil, hvordan man gjør dem brukbare, og hvordan man endrer verdien ved kjøring ved hjelp av argumenter. Som støtte for forklaringen vår diskuterte vi et enkelt eksempel i C++.