This is an old revision of the document!
În secțiunile anterioare, am compilat fișiere cod sursă C folosind compilatorul GCC. Dezvoltarea unui program este un proces continuu, nu scriem tot codul dintr-o singură iterație și de multe ori ajungem să îl modificăm pe parcurs. Vrem să testăm schimbările aduse în program. Pentru aceasta trebuie să recompilăm fișierul pe care l-am modificat și să creăm un nou executabil.
Automatizarea procesului de compilare ne ajută să fim eficienți atunci când dezvoltăm un proiect. În loc să dăm de fiecare dată toate comenzile pentru recompilarea fișierelor, putem să dăm o singură comandă care să le facă pe toate. Acest proces se numește build automation. Există mai multe soluții de build automation1). În această carte vom folosi utilitarul Make împreună cu fișiere Makefile ca să automatizăm procesul de compilare.
În secțiunile următoare vom folosi vedea cum funcționează utilitarul Make și cum arată un fișier Makefile.
~/uso-lab
și rulați comanda git pull
.
În această secțiune vom compila programul Hangman folosind un fișier Makefile.
Întrăm în directorul ~/uso-lab/labs/04-appdev/support/simple-make
folosind comanda cd
:
student@uso:~$ cd ~/uso-lab/labs/04-appdev/support/simple-make student@uso:~/uso-lab/labs/04-appdev/support/simple-make$ ls hangman.c Makefile
Avem în director un fișier cod sursă C, hangman.c
, și un fișier Makefile. Ca să compilăm programul, folosim comanda make
:
student@uso:~/uso-lab/labs/04-appdev/support/simple-make$ make gcc -o hangman hangman.c student@uso:~/uso-lab/labs/04-appdev/support/simple-make$ ls hangman hangman.c Makefile
Comanda make
a rulat, de fapt, comanda gcc -o hangman hangman.c
, comandă prin care am creat fișierul executabil hangman
.
Practic, scriind doar comanda make
, am trecut fișierul hangman.c
prin toate etapele compilării și am obținut executabilul final, așa cum am făcut în secțiunea Compilarea unui fișier cod sursă C
pentru fișierul is-prime.c
.
Rulăm executabilul hangman
ca să vedem că funcționează, ca în imaginea de mai jos:
În secțiunea anterioară, Folosirea unui Makefile existent
, am folosit fișierul Makefile
ca să compilăm programul Hangman. Ca să putem crea un Makefile pentru un proiect al nostru, trebuie să înțelegem formatul fișierului Makefile. În această secțiune vom folosi fișierul Makefile pe care l-am folosit anterior.
Fișierul Makefile
folosit la programul Hangman are următorul conținut:
all: hangman hangman: hangman.c gcc -o hangman hangman.c clean: rm -rf hangman
Liniile din fișier sunt de două tipuri:
regulă: <dependență>
(all: hangman
sau clean:
).Tab
la începutul rândului, urmat de o comandă (gcc -o hangman hangman.c
).
O regulă din fișierul Makefile este, de fapt, un nume asociat unei comenzi. Spunem că rulăm regula clean
atunci când vrem să executăm comanda rm -rf hangman
. În terminal, facem acest lucru folosind comanda make
urmată de numele regulii, în acest caz make clean
:
student@uso:~/uso-lab/labs/04-appdev/support/simple-make$ make clean rm *.o hangman student@uso:~/uso-lab/labs/04-appdev/support/simple-make$ ls hangman.c Makefile