| prof.
Nunzio Brugaletta |
Sviluppo
in C++: strumenti in ambiente Linux |
Quando lo sviluppo di un progetto software prevede l'utilizzo di più file sorgenti, emergono problematiche di gestione di tale progetto:
L'esistenza di più file sorgenti, la dipendenza di un sorgente da altri, porta come conseguenza, ad ogni modifica, la ricompilazione di tutti i file interessati dal progetto. Risulta estremamente difficoltosa, se non impossibile, date le dipendenze che possono esistere fra sorgenti diversi, anche scrivere una procedura automatica per la ricompilazione dei soli file interessati, quando su questi sono state effettuate modifiche.
La necessità di ricompilare tutti i file sorgenti, anche quelli non interessati dalle modifiche effettuate, può comportare tempi lunghi dipendenti dalla quantità e dimensioni dei file da ricompilare.
Per ovviare a questi inconvenienti, e velocizzare il processo di sviluppo, si può utilizzare il programma GNU Make.
Make compila i sorgenti per come sono specificati nel Makefile (è questo il nome di default. Naturalmente si può usare anche un altro nome, ma è convenzione diffusa lasciarlo così). Il modo in cui sono specificati i file e le dipendenze, all'interno del Makefile, permette di effettuare una compilazione intelligente. In pratica, mediante un confronto fra date ed orari (il timestamp di un file) registrati nei file oggetto e file sorgenti, Make è in grado di effettuare la compilazione soltanto dei file sorgenti che hanno un timestamp successivo a quello dei rispettivi file oggetto, e dei sorgenti che li ammettono come prerequisiti.
I concetti fondamentali su cui si basa il Makefile sono:
target. Indica l'obiettivo da raggiungere. Nel caso generale può essere il nome del file oggetto che si vuole generare
prerequisites. Indicano le cose necessarie, che devono essere verificate, per poter essere in condizioni di raggiungere l'obiettivo
command. Ammesso che tutti i prerequisiti siano verificati, indica il modo come raggiungere l'obiettivo
| http://ennebi.solira.org |
ennebi@solira.org |