Bonjour,
Je cherche à faire un makefile assez générique pour éviter d'avoir à répéter certaines règles mais je rencontre quelques soucis sur la mise en place de celui-ci.
Pour commencer je cherche à gérer deux types de fichier source. Le premier des sources C, le second des sources Cuda (un C pas très joli). Je possède trois répertoires à la racine de mon projet inc, src, et obj. J'aimerais que les fichiers objets créés à la compilation apparaissent dans obj pour ne pas salir le reste.
Je vous montre mon Makefile actuel et ensuite fais part des problèmes.
Le premier soucis concerne la forme des valeurs au sein de la variable OBJ. Elles sont de la forme $(SRC)/fichier.o or je souhaite $(OBJ)/fichier.o mais l'utilisation du raccourci que je ne maîtrise me forme la première instance (je voudrais faire un cut -d / -f 2 sur chaque élément en fait, ce que m'intéresse est juste fichier.o).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29 CC = gcc CuC = nvcc CFLAGS = -Wall -g CuFLAGS = LDFLAGS = SRCDIR = src/ SRC = $(wildcard $(SRCDIR)/*.c) $(wildcard $(SRCDIR)/*.cu) INCDIRS = -I ../inc/ -I inc/ -I . OBJDIR = obj/ OBJ = $(SRC:.c=.o) $(SRC:.cu=.o) EXEC = program all: $(EXEC) $(EXEC): $(OBJ) $(CuC) $(LDFLAGS) -o $@ $^ $(OBJDIR)/%.o: $(SRC)/%.c echo $(INCDIRS) $(CC) $(CFLAGS) $(INCDIRS) -o $@ -c $< $(OBJDIR)/%.o: $(SRC)/%.cu $(CuC) $(INCDIRS) -o $@ -c $<
Le second souci vient de la variable INCDIRS qui est tout simplement ignorée et n'apparait par exemple pour la compilation d'un de mes premiers fichiers :
Si quelqu'un connait un moyen d'éviter ces désagréments, je l'en remercie ;-)make -B
gcc -Wall -g -c -o src//complex.o src//complex.c
Merci à vous !
sperca
Partager