Alcuni suggerimenti (a patto di utilizzare GNU make, non qualcos'altro)
Innanzitutto, eseguire una volta make -p
, capirai quali regole incorporate make
è sapere. Cercare in particolare per COMPILE.c
e LINK.c
Poi, suggerisco
CFLAGS= -g -Wall -I.
(perché si vuole veramente -g
per il debug, e -Wall
per ottenere la maggior parte delle avvertenze)
E probabilmente non bisogno
$(EXECUTABLE): $(OBJ)
gcc -o [email protected] $^ $(CFLAGS)
Tuttavia, suggerisco st aggiungendo prima di molte altre norme
.PHONY: all clean
all: $(EXECUTABLES)
In realtà, vorrei codificare il Makefile
(per GNUmake
!) come segue
# file Makefile
CC= gcc
RM= rm -vf
CFLAGS= -Wall -g
CPPFLAGS= -I.
SRCFILES= ex1.c ex2.C## or perhaps $(wildcard *.c)
OBJFILES= $(patsubst %.c, %.o, $(SRCFILES))
PROGFILES= $(patsubst %.c, %, $(SRCFILES))
.PHONY: all clean
all: $(PROGFILES)
clean:
$(RM) $(OBJFILES) $(PROGFILES) *~
## eof Makefile
Ricordate che scheda è un personaggio significativo nella Makefile
-s (parte di azione di rules). In questa risposta, le righe che iniziano con almeno quattro spazi dovrebbero in realtà iniziare con una scheda con il carattere.
Una volta che tutto è debug si consiglia di eseguire make clean
per pulire tutto, e poi make -j CFLAGS=-O2 all
di compilare in ogni cosa in parallelo con le ottimizzazioni.
Finalmente, mi consiglia di utilizzare remake
e funzionante remake -x
per eseguire il debug complessi Makefile
-s
Naturalmente, sto supponendo che la directory ha solo programmi di file singolo.
BTW, ci sono altri programmi di builder. Forse si potrebbe considerare omake
Non dimenticare di utilizzare un sistema di controllo versione come git per i file di origine. È anche il momento di imparare un tale strumento.
Upvote per la magia del makefile! – Gui13
Molto utile! Grazie per avere un'idea del funzionamento interno del comando make. – Raeven