Para aqueles que ainda não usam Makefiles (porque “dá muito trabalho”, porque “não sei fazer isso” ou porque “não vou perder tempo”) deixo aqui um template (mais ou menos) genérico para compilar pequenos programas em C.
Makefile
CONFIG=config.mk
DEPS=deps.mk
include $(CONFIG)
SRC_FILES=$(wildcard *.c)
HDR_FILES=$(wildcard *.h)
OBJ_FILES=$(patsubst %.c,%.o,$(SRC_FILES))
LDLIBS=$(patsubst %,-l%,$(LIBS))
$(TARGET) : $(OBJ_FILES)
all : $(TARGET)
clean :
$(RM) *.o *~
clobber : clean
$(RM) $(TARGET) $(DEPS)
rebuild : clobber $(DEPS) $(TARGET)
$(DEPS) : $(SRC_FILES) $(HDR_FILES)
$(CC) -MM $(SRC_FILES) > $(DEPS)
include $(DEPS)
config.mk
# The name of the compiled program
#TARGET=program
TARGET=
# The flags to use when compiling
#CFLAGS=-g -Wall
CFLAGS=-Wall
# The libs to link with
#LIBS=gl readline
LIBS=
O primeiro ficheiro (Makefile) fica tal e qual como está porque contém as definições básicas comuns. O segundo (config.mk) serve para configurar opções que mudam de projecto para projecto: o nome do executável (TARGET), as flags do compilador (CFLAGS) e as bibliotecas para linkar (LIBS).
Basta colocar estes dois ficheiros na pasta onde têm o código fonte e depois:
$ make
Já está. As dependências (deps.mk) são geradas automaticamente pelo pré-processador.
Também existem outros targets:
$ make cleanApaga todos os ficheiros intermédios da compilação. $ make clobberApaga todos os ficheiros intermédios, o executável compilado e o ficheiro das dependências. $ make rebuildForça a compilação de todos os ficheiros, independentemente de terem sido modificados ou não.
Agora já não têm desculpa :P.
3 commentários:
Para quem percebe tanto só tirou 13?
Agora não sei se deva ficar honrado pelo professor se ter dado ao trabalho de comentar aqui ou ofendido por alguém achar esta brincadeira engraçada.
tirou 13 mas pelo menos tenta explicar e na minha opiniao bem aquilo que faz o que nos permite ter uma compreensao melhor dos programas, coisa que o senhor nunca se da ao trabalho de fazer, por isso e que tanta gente reprova a disciplina
Enviar um comentário