Pagina 1 di 1

Domande sui makefile

MessaggioInviato: 8 giu 2017, 12:29
da AjeieBrazov
Girando per il web ho trovato una quantità enorme di informazioni e tutorial sui makefile. Il problema è che molte volte mi pare di trovare delle contraddizioni. La prima che non riesco a capire è questa: la compilazione di tutti i file sorgenti con un goal implicito. Nello specifico ho trovato questi due metodi
Codice: Seleziona tutto
# Compiles all source files
%.o: %.c
        gcc –c –g $< -o $@

Codice: Seleziona tutto
.c.o:
        gcc -c -o $*.o $<

Teoricamente dovrebbero fare la stessa cosa: compilare tutti i sorgenti però sono differenti. A questo punto vorrei sapere se sono entrambi corretti e perché sono scritti in modo diverso.

Grazie per l'attenzione

Re: Domande sui makefile

MessaggioInviato: 8 giu 2017, 14:55
da simo85
Non sono un guru di make e makefile ma se vedi la documentazione è spiegato il significato.

https://www.gnu.org/software/make/manual/make.pdf sezione 10.5.3 Automatic Variables.

Magari prenditi anche questo: http://pdf.th7.cn/down/files/1602/The%2 ... 20Book.pdf

O_/

Re: Domande sui makefile

MessaggioInviato: 8 giu 2017, 18:19
da xyz
Il manuale (se installato) lo puoi leggere con il comando "info make"

Si è la stessa regola scritta in due modi diversi. E' preferibile la prima forma chiamata in inglese «pattern rule», la seconda più vecchia prende il nome di «implicit rule».

Consiglio di parametrizzare i comandi e le opzioni, un Makefile più funzionale è questo:

Codice: Seleziona tutto
CC=gcc
CFLAGS=-g

%.o: %.c
        $(CC) $(CFLAGS) –c $< -o $@

Re: Domande sui makefile

MessaggioInviato: 8 giu 2017, 19:27
da AjeieBrazov
Ho provato a scrivere un makefile parametrizzato e devo dire che è un qualcosa di veramente potente. :ok:

Grazie a tutti. :-)