Bonjour,

Je sais oui, j'ai lu l'article, le makefile recursif c'est harmfull, cependant je n'ai pas de dépendance entre les différents modules qui compose mon projet, donc ça devrait aller.

J'ai suivi le cours DVP.com "introduction au makefile" et j'ai un problème avec la commande export, en fait elle ne fonctionne pas !
Les variables déclarées dans mon makefile maitre ne sont pas visibles dans le sous makefile, malgré l'export.

mon makefile maitre :
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 -g -Wall -O2 -ansi
LIBPAT = $(SYBASE)/$(SYBASE_OCS)/lib/
SYBINC = $(SYBASE)/$(SYBASE_OCS)/include
SYBLIB = -lnsl -ldl -lm $(LIBPAT)libct.so $(LIBPAT)libcs.so $(LIBPAT)libcomn.so \
		$(LIBPAT)libintl.so $(LIBPAT)libtcl.so
 
SEAM_DIR = Seam/src/opcli
RESA_DIR = Resa/src/opcli
 
all: SEAM RESA
 
SEAM:
	@export CC
	@export LIBPAT
	@export SYBINC
	@export SYBLIB
	@(cd $(SEAM_DIR) && $(MAKE))
 
RESA:
	@export CC
	@export LIBPAT
	@export SYBINC
	@export SYBLIB
	@(cd $(RESA_DIR) && $(MAKE))
 
clean:
	@(cd $(SEAM_DIR) && $(MAKE) $@)
	@(cd $(RESA_DIR) && $(MAKE) $@)
le sous makefile correspondant à la cible SEAM (le début seulement)
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
 
LINKFLAGS  = -L$(LIBPAT) 
BIN=../../bin
COMMON=../../../Common/src
 
all: $(BIN)/seam01 $(BIN)/seam0v $(BIN)/seam0c $(BIN)/stopseam
 
$(BIN)/seam01 : seam01.o fileseam.o strucseam.o indseam.o reqseam.o sybacces.o global.o strutils.o polling.o
	$(CC) $(LINKFLAGS) -o $(BIN)/seam01 seam01.o fileseam.o strucseam.o indseam.o reqseam.o sybacces.o global.o strutils.o polling.o $(SYBLIB)
 
$(BIN)/seam0c : seam0c.o fileseam.o strucseam.o indseam.o reqseam.o reqseam0c.o sybacces.o global.o strutils.o
	$(CC) $(LINKFLAGS) -o $(BIN)/seam0c seam0c.o fileseam.o strucseam.o indseam.o reqseam.o reqseam0c.o sybacces.o global.o strutils.o $(SYBLIB)
 
$(BIN)/seam0v : reqseam0v.o seam0v.o fileseam.o strucseam.o indseam.o reqseam.o sybacces.o global.o parseam.o strutils.o
	$(CC) $(LINKFLAGS) -o $(BIN)/seam0v seam0v.o reqseam0v.o fileseam.o strucseam.o indseam.o reqseam.o sybacces.o global.o parseam.o strutils.o $(SYBLIB)
 
$(BIN)/stopseam : stopseam.o global.o
	$(CC) $(LINKFLAGS) -o $(BIN)/stopseam stopseam.o global.o reqseam.o sybacces.o $(SYBLIB)
 
seam01.o : seam01.c define.h global.h prototype.h typedef.h top.h $(COMMON)/strutils.h
	$(CC) -c seam01.c -I $(SYBINC)
(...)
Lorsque je lance le make, les variables déclarées dans mon makefile maitre sont toutes vides...

Quelqu'un sait pourquoi ?
Merci d'avance