Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio18:esercitazionib:esercitazione4

Questa è una vecchia versione del documento!


Esercitazione 4

Discussione su un Makefile

Vogliamo scrivere un Makefile in grado di compilare tutti i sorgenti .c che si trovano nella directory dove si trova il Makefile, personalizzando la compilazione dei file eseguibili:

CC	= gcc -std=c99   # quale compilatore usare per compilare il codice
CFLAGS	= -g -Wall       # flags passati al compilatore per debugging e warning etc..
OPTFLAGS= -O3            # flags passati al compilatore per ottimizzazione del codice
INCLUDES= -I.            # path dove si trovano gli include (non di sistema)
LDFLAGS = -L.            # path dove so trovano le librerie
LIBS    =                # vanno messe qui le librerie da linkare

SOURCES=$(wildcard *.c)  # considera tutti i file .c nella directory 
BINS=$(SOURCES:.c=)      # rimuove il suffisso .c dalla lista SOURCES

.PHONY: all clean cleanall

# personalizziamo la generazione dell'eseguibile da un .c utilizzando una Pattern Rule
# Pattern Rules documentation:  
# https://www.gnu.org/software/make/manual/html_node/Pattern-Rules.html
%: %.c
	$(CC) $(CFLAGS) $(INCLUDES) $(OPTFLAGS) -o $@ $< $(LDFLAGS) $(LIBS)

# prima regola contenente il target
all: $(BINS)

clean:
	\rm -f *~

cleanall: clean
	\rm -f $(BINS)
informatica/sol/laboratorio18/esercitazionib/esercitazione4.1520878441.txt.gz · Ultima modifica: 12/03/2018 alle 18:14 (7 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki