Makefile-variabler og -argumenter: En omfattende vejledning

Makefile Variabler Og Argumenter En Omfattende Vejledning



En tekstfil kaldet en 'makefile' bruges til at gemme kommandoerne til oprettelse af softwareprojekter. Den linker, opsætter og kompilerer automatisk projektets originale kode ved hjælp af en målfil. En makefile bruges til at skabe et objekt og målfiler fra en kildekodefil. Ved udførelse af en målfil vil koden i kildekodefilen blive eksekveret, og dit projekt vil køre på ingen tid. I denne guide vil vi give dig omfattende detaljer om, hvordan du laver en make-fil ved hjælp af variabler og argumenter.

En grundlæggende makefil består af tre dele:





  • Variablerne er mærkede enheder til at gemme de projektrelaterede data.
  • Reglerne specificerer, hvordan man opretter en tiltænkt fil ved hjælp af afhængighederne i make-filen.
  • De dokumenter, som makefilen er designet til at generere, omtales som mål.

Makefile-variabler

Som vi allerede har beskrevet, omtales et mærket objekt, der kan bruges til at gemme dataene, som en makefile-variabel. En variabels værdi kan være et enkelt tegn, en numerisk værdi eller en samling af værdier. Titlerne på kilde- og måldokumenterne, samt instruktionerne, der skal bruges til at oprette målene, er alle data vedrørende byggeproceduren, der er gemt i variabler.



Opret Makefile-variablerne

For at definere en simpel variabel i makefile, bør vi starte den med en simpel titel efterfulgt af tegnet '=' og værdien, der vil blive gemt i den:



name_of_variable = værdi_af_variabel





På den anden side foretrækkes og anbefales det at prøve ':=' i stedet for '=' for at få en hurtig og bedste udførelse af et projekt.

name_of_variable := value_of_variable



For eksempel opretter vi en makefile til C-projektet og erklærer en 'CC'-variabel. Denne variabel gemmer den compiler, der er eksekverbar for C, dvs. 'gcc', som en værdi. På den fjerde linje opretter vi 'CFLAGS'-variablen, der bruges til at give advarsler, mens kompileringsprocessen foregår. Dette er for at forbedre optimeringen af ​​et projekt, du kører, og for at undgå problemer.

Lige sådan bruges 'TARGET'-variablen i dette kodestykke til at indstille den nye målfil, der genereres efter udførelsen af ​​en make-fil. Når du opretter en make-fil, er det nødvendigt at indstille kilde- og objektfilerne efter at have indstillet en målfil. Kilde- og objektfilerne kan også defineres ved hjælp af variablerne. Du kan navngive disse variabler efter dit valg.

For eksempel sætter SRCS-variablen en kildefil, mens OBJS-variablen sætter en ny objektfil ved hjælp af SRCS-variablen.

CC = gcc
CFLAGS = -Væg
MÅL = Nyt
SRCS = hoved.c
OBJS = $ ( SRCS:.c=.o )

Brug Makefile-variablerne

Efter at have erklæret eller defineret makefile-variablerne, er det meget nødvendigt at gøre dem brugbare i makefilen. For at bruge en makefile-variabel skal du bruge tegnet '$' efterfulgt af '()' eller '{}' parenteser. For eksempel bruger vi '$()' til at bygge den eksekverbare målfil. Efter at have udført dette trin, vil målfilen være i stand til at reagere.

alle: $ ( MÅL )

Makefile-argumenter

Når make-filen kaldes, leveres en værdi til den som en parameter, der er kendt som et 'argument'. Argumenterne bruges til at tilsidesætte den oprindelige værdi af en mutable eller til at tilføje flere detaljer til makefilen under kørsel. For at sende kommandolinjeargumenterne til en variabel i en make-fil, skal du bruge nøgleordet 'make' efterfulgt af et variabelnavn og en argumentværdi, der sendes til den:

lave name_of_variable = værdi_af_variabel

Disse parametre kan tilgås som almindelige variabler i makefilen, dvs. 'Ny' er argumentværdien for 'TARGET'-variablen.

MÅL = Nyt

Eksempel: Lav variablerne og argumenterne

For at demonstrere brugen af ​​variabler og argumenter i makefile bruger vi et simpelt eksempel i C++. Vi opretter en ny C++-fil i Notepad++ og tilføjer en 'iostream'-header for at bruge input og output i et eksempelprogram.

Main()-funktionen starter med erklæringen af ​​en tegntypevariabel 'v'. Standardoutputstrømmen, som er 'cout', bruges til at vise og bede brugeren om input. I modsætning hertil får 'cin'-standardinputstrømmen en inputværdi fra en bruger ved kørsel og gemmer den i 'v'-variablen. Standard 'cout' bruges igen til at vise den værdi, der tilføjes af en bruger ved kørsel. 'Return 0'-sætningen afslutter programafviklingen med succes.

#include
int main ( ) {
char v;
std::cout << 'Indtast en værdi: ' ;
std::cin >> i;
std::cout << i << std::endl;
Vend tilbage 0 ;
}

En makefil er genereret på en standard måde. Den allerførste variabel, 'CXX', erklærer compileren, der skal bruges til at køre C++-filen, dvs. 'g++'. Den næste variabel bruges til at indstille flagene for en compiler for at undgå problemer.

Nu er målfilen indstillet ved hjælp af 'TARGET'-variablen til 'Ny'. Dette er en eksekverbar fil. Efter dette definerer makefilen sin kilde- og objektfil via SRCS- og OBJS-variablerne. For at gøre brug af de erklærede variabler bruger vi tegnet '$' efterfulgt af '()'-brikkerne til at bygge den eksekverbare målfil, objektfilen og rense objektet og målfilen.

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

Efter at have gemt C++ og dens make-fil, start CMD'en på dit system, naviger ind i arbejdsbiblioteket og kør make-instruktionen som følger. Den genererer 'main.o'-objektfilen og 'New.exe'-målfilen for kildekodefilen. Vi har ikke bestået noget argument for at lave instruktionerne for nu.

lave

Kørsel af målfilen vil du bede brugeren om input. Vi tilføjer 'h'-tegnet ved den første udførelse og 'haha' ved den anden udførelse. Mens 'v'-variablen kun accepterer 'tegn'-værdierne, gemmes og vises 'h'-tegnet fra 'haha'-strengen.

New.exe

Lad os køre make-instruktionen ved at bruge kommandolinjeargumenterne, der sendes til makefil-variablerne. Så vi ændrer 'TARGET'-variabelværdien og sender 'Test' til den. Derefter genereres 'Test.exe'-filen og fungerer nøjagtigt som 'New.exe'-filen.

lave MÅL =Test
Test.exe

Konklusion

I denne omfattende guide har vi gennemgået indholdet af makefile én efter én. Vi har uddybet, hvordan man deklarerer variablerne i en make-fil, hvordan man gør dem brugbare, og hvordan man ændrer deres værdi under kørsel ved hjælp af argumenter. Som støtte for vores forklaring diskuterede vi et simpelt eksempel i C++.