probleme de makefile recursif

probleme de makefile recursif - C - Programmation

Marsh Posté le 28-09-2006 à 15:02:21    

La compilation des make dans les sous dossier fonctione correctement, mais je ne parviens pas à faire en sorte que le make file maitre ordonne au fils d'agir.
 
l'erreur c'est

Code :
  1. make: *** No rule to make target `make', needed by `libavutil'.  Stop.


 

libavcodec/  
libavutil/
config.h
apiexemple.c


 

Code :
  1. #SLIBAVUTIL:= $(wildcard libavutil/*.c)
  2. #OBJS:= $(SLIBAVUTIL:.c=.o)
  3. OBJS:=mathematics.o \
  4.       rational.o \
  5.       intfloat_readwrite.o \
  6.       crc.o \
  7.       md5.o \
  8.       lls.o \
  9.       adler32.o \
  10.       log.o \
  11.       mem.o \
  12.       fifo.o \
  13.        
  14. CFLAGS=-DHAVE_AV_CONFIG_H -I../
  15. LDFLAGS=-lm
  16. all: $(OBJS)  
  17.      
  18. clean:
  19. rm -fv $(OBJS)


 
 

Code :
  1. #SLIBAVUTIL:= $(wildcard libavutil/*.c)
  2. #OBJS:= $(SLIBAVUTIL:.c=.o)
  3. OBJS:=bitstream.o utils.o allcodecs.o \
  4.       mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o\
  5.       mjpeg.o resample.o resample2.o dsputil.o \
  6.       motion_est.o imgconvert.o \
  7.       mpeg12.o mpegaudiodec.o simple_idct.o \
  8.       ratecontrol.o eval.o error_resilience.o \
  9.       fft.o mdct.o raw.o golomb.o cabac.o\
  10.       faandct.o parser.o \
  11.       vp3dsp.o h264idct.o rangecoder.o pnm.o h263.o msmpeg4.o h263dec.o \
  12.       opt.o \
  13.       bitstream_filter.o \
  14.       audioconvert.o \
  15.        
  16. CFLAGS=-DHAVE_AV_CONFIG_H -I../ -I../libavutil/
  17. LDFLAGS=-lm
  18. all: $(OBJS)  
  19. clean:
  20. rm -fv $(OBJS)


 
Makle file maitre
 

Code :
  1. LIBAVUTIL_DIR:=libavutil/
  2. LIBAVCODEC_DIR:=libavcodec/
  3. CFLAGS=-DHAVE_AV_CONFIG_H -I./ -Ilibavutil/ -Ilibavcodec/
  4. LDFLAGS=-lm
  5. OBJS=apiexample.o
  6. all: libavutil libavcodec apiexample
  7. libavutil: $(MAKE) -v -C $(LIBAVUTIL_DIR)
  8.  
  9. libavcodec: $(MAKE) -v -C $(LIBAVCODEC_DIR)
  10.                    
  11. apiexample: $(OBJS)
  12. clean:
  13. rm -f $(OBJS) apiexemple

Message cité 1 fois
Message édité par basketor63 le 28-09-2006 à 15:10:18
Reply

Marsh Posté le 28-09-2006 à 15:02:21   

Reply

Marsh Posté le 29-09-2006 à 10:01:41    

basketor63 a écrit :


Makle file maitre
 

Code :
  1. LIBAVUTIL_DIR:=libavutil/
  2. LIBAVCODEC_DIR:=libavcodec/
  3. CFLAGS=-DHAVE_AV_CONFIG_H -I./ -Ilibavutil/ -Ilibavcodec/
  4. LDFLAGS=-lm
  5. OBJS=apiexample.o
  6. all: libavutil libavcodec apiexample
  7. libavutil: $(MAKE) -v -C $(LIBAVUTIL_DIR)
  8.  
  9. libavcodec: $(MAKE) -v -C $(LIBAVCODEC_DIR)
  10.                    
  11. apiexample: $(OBJS)
  12. clean:
  13. rm -f $(OBJS) apiexemple



 
Allez, je me lance à débroussailler ta question. ton $(MAKE) est défini à quel endroit?
Ton LIBAVUTIL_DIR, tu supposes que c'est un chemin absolu, relatif?
Je pense à ça également : dans les makefile, il n'y a pas une histoire de tabulation dont l'absence/présence fait que ça fonctionne ou pas?


Message édité par GrosBocdel le 29-09-2006 à 10:08:37
Reply

Marsh Posté le 29-09-2006 à 10:08:59    

$(MAKE) est pas défini par moi, y a que ces fichiers.
le chemin est relatif pour LIBAVUTIL_DIR

Reply

Marsh Posté le 29-09-2006 à 10:23:31    

si tu remplaces :
libavutil: $(MAKE) -v -C $(LIBAVUTIL_DIR) et les autres par
 
libavutil: (retour à la ligne)
(tabulation) $(MAKE) -v -C $(LIBAVUTIL_DIR)
ça ne marche pas non plus?
 
en mettant (et les autres):
LIBAVUTIL_DIR:=./libavutil/
?

Reply

Marsh Posté le 29-09-2006 à 11:06:36    

non, et en fait j'ai laissé tombé j'ai mis tout dans le même repertoire en attendant.

Reply

Marsh Posté le 02-10-2006 à 23:12:09    

essaie un truc du genre :

libavutil:
    cd $(LIBAVUTIL_DIR); $(MAKE)


---------------
TriScale innov
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed