Makefile'i muutujad ja argumendid: põhjalik juhend

Makefile I Muutujad Ja Argumendid Pohjalik Juhend



Tekstifaili nimega makefile kasutatakse tarkvaraprojektide loomise käskude salvestamiseks. See lingib, seadistab ja kompileerib sihtfaili kasutades automaatselt projekti algse koodi. Makefile kasutatakse objekti ja sihtfailide loomiseks lähtekoodifailist. Sihtfaili käivitamisel käivitatakse lähtekoodifailis olev kood ja teie projekt käivitub kiiresti. Selles juhendis anname teile põhjalikud üksikasjad muutujate ja argumentide abil make-faili tegemise kohta.

Põhiline makefile koosneb kolmest osast:







  • Muutujad on märgistatud olemid projektiga seotud andmete salvestamiseks.
  • Reeglid määravad kindlaks, kuidas luua soovitud fail makefile'i sõltuvuste abil.
  • Dokumente, mille genereerimiseks makefile on loodud, nimetatakse sihtmärkideks.

Makefile muutujad

Nagu me juba kirjeldasime, nimetatakse märgistatud objekti, mida võib andmete salvestamiseks kasutada, makefile muutujaks. Muutuja väärtus võib olla üks märk, arvväärtus või väärtuste kogum. Lähte- ja sihtdokumentide pealkirjad ning sihtmärkide loomiseks kasutatavad juhised on kõik koostamisprotseduuri andmed, mis on salvestatud muutujatesse.



Looge Makefile'i muutujad

Makefile'i lihtsa muutuja määratlemiseks peaksime alustama seda lihtsa pealkirjaga, millele järgneb märk “=” ja väärtus, mis sellesse salvestatakse:



muutuja_nimi = muutuja_väärtus





Teisest küljest on projekti kiireks ja parimaks täitmiseks eelistatud ja soovitatav proovida “=” asemel “:=”.

muutuja_nimi := muutuja_väärtus



Näiteks loome C-projekti jaoks make-faili ja deklareerime muutuja 'CC'. See muutuja salvestab väärtusena kompilaatori, mis on C jaoks käivitatav, st 'gcc'. Neljandal real loome muutuja 'CFLAGS', mida kasutatakse kompileerimisprotsessi ajal hoiatuste andmiseks. Selle eesmärk on täiustada teie käivitatava projekti optimeerimist ja vältida probleeme.

Niisamuti kasutatakse selles koodilõigu muutujat TARGET, et määrata uus sihtfail, mis genereeritakse pärast makefile'i käivitamist. Make-faili loomisel tuleb pärast sihtfaili seadistamist määrata lähte- ja objektifailid. Lähte- ja objektifaile saab määratleda ka muutujate abil. Saate neid muutujaid oma valiku järgi nimetada.

Näiteks SRCS-muutuja määrab lähtefaili, samas kui muutuja OBJS määrab uue objektifaili, kasutades muutujat SRCS.

CC = gcc
CFLAGS = - Sein
SIHT = uus
SRCS = main.c
OBJS = $ ( SRCS:.c=.o )

Kasutage Makefile'i muutujaid

Pärast makefile'i muutujate deklareerimist või määratlemist on väga vajalik muuta need makefile'is kasutatavaks. Makefile muutuja kasutamiseks peate kasutama märki '$', millele järgneb '()' või '{}'. Näiteks kasutame sihtkäivitusfaili koostamiseks klahvi '$()'. Pärast selle sammu sooritamist saab sihtfail vastata.

kõik: $ ( SIHT )

Makefile'i argumendid

Alati, kui makefile kutsutakse, antakse sellele parameetrina väärtus, mida nimetatakse 'argumendiks'. Argumente kasutatakse muutuva algväärtuse alistamiseks või make-faili lisateabe lisamiseks käitusajal. Käsurea argumentide edastamiseks makefile'i muutujale peaksite kasutama märksõna 'make', millele järgneb muutuja nimi ja sellele edastatav argumendi väärtus:

tegema muutuja_nimi = muutuja_väärtus

Nendele parameetritele pääseb ligi tavaliste muutujatena makefile'is, st 'New' on muutuja 'TARGET' argumendi väärtus.

SIHT = uus

Näide: loo muutujad ja argumendid

Muutujate ja argumentide kasutamise demonstreerimiseks makefile'is kasutame lihtsat näidet C++ keeles. Loome Notepad++-s uue C++ faili ja lisame päise “iostream”, et kasutada sisendit ja väljundit näidisprogrammis.

Funktsioon main() algab märgitüüpi muutuja “v” deklaratsiooniga. Tavalist väljundvoogu, mis on “cout”, kasutatakse kasutajalt sisendi kuvamiseks ja küsimiseks. Seevastu standardne sisendvoog 'cin' saab kasutajalt käitusajal sisendväärtuse ja salvestab selle muutujasse 'v'. Standardset 'cout' kasutatakse jällegi väärtuse kuvamiseks, mille kasutaja lisab käitamise ajal. Avaldus 'return 0' lõpetab programmi täitmise edukalt.

#include
int main ( ) {
char v;
std::cout << 'Sisestage väärtus:' ;
std::cin >> sisse;
std::cout << sisse << std::endl;
tagasi 0 ;
}

Makefile genereeritakse standardsel viisil. Kõige esimene muutuja 'CXX' deklareerib kompilaatori, mida kasutatakse C++-faili käitamiseks, st 'g++'. Järgmist muutujat kasutatakse kompilaatori lippude seadmiseks, et vältida probleeme.

Nüüd määratakse sihtfail muutuja 'TARGET' abil väärtuseks 'Uus'. See on käivitatav fail. Pärast seda määratleb makefile oma lähte- ja objektifaili muutujate SRCS ja OBJS kaudu. Deklareeritud muutujate kasutamiseks kasutame sihtkäivitusfaili, objektifaili koostamiseks ning objekti ja sihtfaili puhastamiseks märki '$', millele järgneb sulgudes '()'.

CXX = g++
CXXFLAGS = -std =c++ üksteist - Sein
SIHT = uus
SRCS = main.cpp
OBJS = $ ( SRCS:.cpp=.o )
kõik: $ ( SIHT )
$ ( SIHT ) : $ ( OBJS )
$ ( CXX ) $ ( CXXLIPUD ) -O $ ( SIHT ) $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXLIPUD ) -c $ < -O $ @
puhas:
rm -f $ ( SIHT ) $ ( OBJS )

Pärast C++ ja selle makefile salvestamist käivitage oma süsteemi CMD, navigeerige töökataloogi ja käivitage make-juhis järgmiselt. See genereerib lähtekoodifaili jaoks objektifaili 'main.o' ja sihtfaili 'New.exe'. Praegu pole me juhiste koostamiseks ühtegi argumenti läbinud.

tegema

Sihtfaili käivitamine küsib kasutajalt sisendit. Esimesel täitmisel lisame tähemärgi 'h' ja teisel täitmisel 'haha'. Kui muutuja 'v' aktsepteerib ainult 'character' väärtusi, siis 'h' märk stringist 'haha' salvestatakse ja kuvatakse.

New.exe

Käivitame make käsu, kasutades käsurea argumente, mis edastatakse makefile muutujatele. Seega muudame muutuja 'TARGET' väärtust ja edastame sellele 'Test'. Pärast seda luuakse fail 'Test.exe' ja see töötab täpselt nagu fail 'New.exe'.

tegema SIHT = Test
Test.exe

Järeldus

Selle põhjaliku juhendi raames oleme makefile'i sisu ükshaaval läbi vaadanud. Uurisime üksikasjalikult, kuidas deklareerida muutujaid make-failis, kuidas muuta need kasutatavaks ja kuidas muuta nende väärtust käitusajal argumentide abil. Oma selgituse toetamiseks arutasime lihtsat näidet C++ keeles.