Makefile générique pour compilation projet C
Bonsoir tout le monde.
Alors j'ai fait un makefile qui me permet de compiler un projet C qui possède toujours la même structure : bin, headers, src qui sont des dossiers où l'on y trouve respectivement : executable, les .h, les .c
Je voudrais aussi faire un dossier obj qui contient les .o mais je n'y arrive pas.
Voici le makefile :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
CC=gcc
CFLAGS=-Wall -std=c99 -Wextra -O -Wwrite-strings -Wstrict-prototypes -Wuninitialized -Wunreachable-code -Wno-missing-braces -Wno-missing-field-initializers -Iheaders
LDFLAGS=-Wall -lm
EXEC=bin/Bataille
VPATH=src
vpath %.h headers
SRC=$(wildcard src/*.c)
OBJ=$(notdir $(SRC:.c=.o))
Bataille: $(OBJ)
@ $(CC) -o $(EXEC) $(OBJ) $(LDFLAGS)
@echo creation de lien
%.o: %.c
@ $(CC) -c $< $(CFLAGS)
@echo creation de $@
.PHONY: clean mrproper
@echo suppression de tous les fichiers.
mrproper: clean
@ rm -f $(EXEC)
@echo suppression executable
clean:
@ rm -f *.o
@echo suppression des fichiers objets |
Je suis ouvert a toute proposition et critique => si vous pensez le rendre plus simple, compact etc...
Merci d'avance.