This shows you the differences between two versions of the page.
poo-is:makefile [2020/12/03 17:42] eduard.ciurezu [Make clean] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Makefile ====== | ||
- | ===== Reguli ===== | ||
- | |||
- | Un **Makefile** este alcatuit dintr-un set de reguli, care in mod general au urmatoarea sintaxa: | ||
- | <code> targets: prerequisites | ||
- | command | ||
- | command | ||
- | command | ||
- | </code> | ||
- | <note important>Instructiunile command sunt aliniate la un **tab**.\\ | ||
- | Acest lucru este **foarte important**!\\ | ||
- | **Nu folositi space-uri!**\\ | ||
- | **Folositi tab!**</note> | ||
- | Pentru utilizarea in cadrul temelor cursului de Programare Orientata pe Obiecte, noi o sa ne limitam la cele doua reguli: **make build** si **make clean**. | ||
- | |||
- | ==== Make build ==== | ||
- | Regula **make build** este folosita pentru compilarea fisierelor .cpp folosite in proiectul curent si transpunerea acestora itnr-un fisier executabil cu un nume predefinit. | ||
- | |||
- | Sa presupunem ca avem urmatoarea structura de fisiere: | ||
- | * **Clasa.h** - headerul in care definim clasa | ||
- | * **Clasa.cpp** - implementarea metodelor din clasa | ||
- | * **main.cpp** - fisierul main al proiectului | ||
- | |||
- | Regula **make build** din cadrul fisierului **Makefile** va arata in felul urmator: | ||
- | <code>build: | ||
- | g++ -o Test main.cpp Clasa.cpp | ||
- | </code> | ||
- | |||
- | <note tip> | ||
- | **g++** este un compiler specific limbajului **C++**.\\ | ||
- | Flag-ul **-o** urmat de token-ul **Test** duce la denumirea executabilului obtinut in urma compilarii conform token-ului.\\ | ||
- | **main.cpp** si **Clasa.cpp** sunt toate fisierele **.cpp** existente in proiect.\\ | ||
- | </note> | ||
- | |||
- | Pentru rularea ulterioare, se poate folosi in terminal comanda **make build**.\\ | ||
- | In urma acesteia, fisierele vor fi compilate si se va crea un executabil numit **Test**. | ||
- | |||
- | ==== Make clean ==== | ||
- | Regula **make clean** este utilizata pentru "a face curat" dupa compilarea si executarea programului, pregatindu-l pentru rulari ulterioare.\\ | ||
- | Curatenia consta in **stergerea** fisierelor aditionale create in urma compilarii si executarii.\\ | ||
- | In cazul nostru, fisierul aditional creat este executabilul **Test**, pe care o sa-l stergem. | ||
- | |||
- | <code> | ||
- | </code> |