GNU Make

GNU Padarīt apmācību

GNU Padarīt apmācību

GNU Make ir rīks, kas palīdz ģenerēt izpildāmās programmas no avota koda un apstrādāt arī citus ar avotu nesaistītus failus no projekta. Make iegūst loģiku, kā veidot izpildāmos failus un apstrādāt citus avota failus no faila ar nosaukumu a makefile vai a Makefile.

Kāpēc Make?

Programmas Make instalēšana

Lai izveidotu programmas, nepietiek tikai ar izgatavošanu. Lai izveidotu programmas no avota, sistēmā jābūt instalētiem kompilatoriem un citiem rīkiem. Tātad mūsu mērķiem mums ir nepieciešams pilns izstrādes rīku komplekts.

Lai apkopotu avotus Linux, Debian balstītās sistēmās ir pakete ar nosaukumu “build-essential” (piem.,.g. Ubuntu, Linux Mint utt.) Un “Attīstības rīki” Red Hat un CentOS.

Lai to instalētu Debian sistēmās:

apt-get install build-essential

Lai to instalētu CentOS un Red Hat palaist:

yum groupinstall "Izstrādes rīki"

Darba sākšana ar Makefile

Sāksim, rakstot a Sveika pasaule programma ar C programmēšanas valodu.

Mūsu C programmas galvenā funkcija būs iekšpusē hellomain.c. Faila saturam vajadzētu izskatīties šādi:

# iekļaut  int main () my_fun (); atgriešanās 0;  

Šis kods ietver galvenes failu hellofun.h, kas satur funkcijas, ko sauc par hello_fun (), deklarāciju. Hellofun saturs.h ir:

anulēt my_fun ();

My_fun () definīcija dzīvo hellofun iekšienē.c:

# iekļaut  # iekļaut  void my_fun () printf ("Sveika pasaule!\ n "); return;

Šī ir ļoti vienkārša programma, un mēs to varētu apkopot ar gcc tikai ar vienu komandrindu. Bet reālās dzīves programmas nav tik vienkāršas un tik mazas kā šis. Lietas kļūst ļoti sarežģītas.  Zemāk es uzrakstīšu nepieciešamo makefile skriptu šīs sveikas pasaules programmas sastādīšanai. Dažādās tā daļās es paskaidrošu nākamajās sadaļās.

hellomain: hellomain.c hellofun.c gcc -o sveiki hellomain.c hellomain.c-es.

Saglabājiet šo kodu failā ar nosaukumu makefile (bez faila paplašinājuma). Ievietojiet failu direktorijā, kur atrodas C faili. Norādiet komandrindu šajā direktorijā. Komandrindā rakstiet make un nospiediet enter. Pašreizējā direktorijā tiks izveidots izpildāms fails ar nosaukumu hello. Rezultātu var pārbaudīt, palaižot izpildāmo failu ar šādu komandu.

./Sveiki

Rezultāti:

Sveika pasaule!

Noteikumi, mērķi un atkarības

Makefile skripts ir noteikumu kopums. Noteikumi uzdod izveidot, kā izveidot mērķi vai izvadi no avota vai citiem failiem. Noteikums nosaka arī mērķa atkarības. Vispirms jāizpilda atkarības noteikumi atkarībā no tā, vai tas jau ir apstrādāts, aplūkojot laika zīmogus. Mūsu piemērā makefile Iepriekš mums ir noteikums ar mērķi hellomain un tās atkarības. Mērķa nosaukumu no atkarības saraksta atdala kols. Shell komandas, kas tiks izpildītas, ir norādītas nākamajā rindā. Apvalka komandām jāsākas ar tabulēšanas rakstzīmi.

Ja ar make komandu nenorādat nevienu parametru, tiek izpildīts pirmais mērķis. Mūsu piemērā mēs nenorādījām nevienu parametru, un mums tas bija hellomain kā pirmais un vienīgais mērķis.

Mainīgie

Mainīgais ir lielisks veids, kā vienu reizi ierakstīt vērtību un izmantot to vairākas reizes, neatkārtojot vērtību vēl un vēl. Tas palīdz mums saglabāt mūsu kodu DRY (neatkārtojiet sevi). Ja jums kādreiz ir jāmaina kāda vērtība visā skriptā, jums tas vienkārši jāmaina vienā vietā, lai atspoguļotu izmaiņas visur, ja izmantojat mainīgo.

Mūsu piemērā mēs to izmantojām gcc kā kompilators, bet mums var būt nepieciešams mainīt kompilatoru uz kaut ko citu. Tātad, mēs varam saglabāt kompilatora vārdu mainīgajā. Mēs arī varam saglabāt kompilatora karodziņus citā mainīgajā, lai to atkārtoti izmantotu. Lai iestatītu vērtību mainīgajam, mēs izmantojam vienādības zīmi (=) un, lai lasītu šo mainīgo, mēs izmantojam $ (mainīgais_nosaukums).

CC = gcc CFLAGS = -I. hellomain: hellomain.c hellofun.c $ (CC) -o sveiki hellomain.c hellomain.c $ (CFLAGS)

Vides tīrīšana

Mums bieži var būt jātīra vide. Ja mēs vēlamies, lai katrs mūsu projekta gabals tiktu pārbūvēts no jauna, tas ir jātīra. Mūsu vienkāršajā piemērā vienīgais ģenerētais fails ir Sveiki izpildāms. Nedzēšot to manuāli, mēs varam to izdzēst ar make. Tātad, mēs varam izveidot tam noteikumu un nosaukt mērķi kā tīrs.

CC = gcc CFLAGS = -I. hellomain: hellomain.c hellofun.c $ (CC) -o sveiki hellomain.c hellomain.c $ (CFLAGS) tīrs: rm sveiki

Apvalka komanda tīrā mērķī ir tikai vecā čaulas komanda rm. Tagad no komandrindas izpildiet:

padarīt tīru

Apskatiet pašreizējo direktoriju, lai redzētu, ka Sveiki izpildāmā faila vairs nav.

Paplašinot mūsu piemēru, lai atrisinātu citas problēmas

Mūsu vienkāršajā labas pasaules kompilācijas piemērā mums ir problēma, kuru mēs vēl neesam atrisinājuši. hellomain mērķis skatās hellomian.c un hellofun.c failu laika zīmogi nākamajā reizē, kad mēģināt to atkārtoti kompilēt veidot vai padarīt hellomain. Tātad, ja mainīsit kādu no šiem diviem failiem, tie tiks kompilēti. Bet, ja maināt hellofun.h tad tas netiks kompilēts. Tas ir negaidīti!

Atkal mēs esam izlaiduši vidējo līmeni. Mēs neveidojām objekta failus un tieši ģenerējām izpildāmo failu. Bet aiz ainas objekta faili tiek izveidoti pagaidu direktorijā un izdzēsti. Pirms izpildāmā faila izveidošanas mēs vēlamies ģenerēt objekta failus. Šoreiz galveno mērķi nosaucam kā visi

visi: hellomain.o hellofun.o gcc hellomain.o hellofun.o-sveiks hellomain.o: hellomain.c hellofun.h gcc -I. -c hellomain.c hellofun.o: hellofun.c hellofun.h gcc -I. -c hellofun.c tīrs: rm -rf *.o rm sveiki

Vēlreiz palaidiet komandu make, lai redzētu, vai jūsu programma tiek veidota veiksmīgi vai nē. Palaidiet sveicamo izpildāmo failu, lai pārbaudītu rezultātu. Apskatiet pašreizējo direktoriju un redzēsiet, ka tiek izveidoti objektu faili. Mēs tīrām mērķim esam pievienojuši vēl vienu rindiņu, lai notīrītu objektu failus. Šis makefile skripts palīdzēs atkārtoti apkopot sveiks pasaules programmu, pat ja hellofun.h fails ir modificēts.

Secinājums

Make ir viens no vissvarīgākajiem rīkiem Linux lietotājiem un programmētājiem. Ja esat galalietotājs, tad zināšanas par marķējumu palīdzēs jums novērst daudzas šķeltas lietas jūsu linux pasaulē. Ja esat programmētājs, tad vienkārši nevarat aiziet, uzrakstot kodu un ļaujiet lietotājiem izdomāt, kā šo avota kodu apkopot izpildāmos failos. Jums jāizveido makefile skripts galalietotājiem, lai viņi nespēlētu minējumu spēli, lai apkopotu jūsu avotu izpildāmajos failos.

Atsauces

GNUMake projekta mājas lapa
GNU Izveidot dokumentāciju

Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...
Kā mainīt peles un skārienpaliktņu ritināšanas virzienu operētājsistēmā Windows 10
Pele un SkārienpaliktnisTas ne tikai padara skaitļošanu vienkāršu, bet arī efektīvāku un mazāk laikietilpīgu. Mēs nevaram iedomāties dzīvi bez šīm ier...
Kā mainīt peles rādītāja un kursora izmēru, krāsu un shēmu operētājsistēmā Windows 10
Peles rādītājs un kursors operētājsistēmā Windows 10 ir ļoti svarīgi operētājsistēmas aspekti. To var teikt arī par citām operētājsistēmām, tāpēc pati...