Bonjour a tous,
J'ai un repertoire d'executables ainsi qu'un repertoire contenant les sources d'une librairie "maison".
Chacun de ces repertoires est doté d'un makefile.
Lorsque je modifie les sources de la librairie, il me faut a la fois tout recompiler la librairie mais également tous les executables.
Ya certainement un probleme de dependance mais je n'ai pas trouvé ou la modifier.
Voici les deux makefile pour les intéressés:
1. Pour les executables:
#######################################
BIN = /nfs/data2/arslan/demo_cesbio/bin/
LIB_PERSO = -L/adresselib
INC_PERSO = -I$(HOME)/common/include/greg -I../libstats -I../btoolbox -I$(HOME)/common/include
LIB_INRIMAGE = -L/usr/local/inrimage/lib
FLAG_INR = -linrimage -lm
FLAG_GREG = -lgreg
FLAG_BTOOLBOX = -lbToolBox
FLAG_LIBSTATS = -lstats -lrf
CFILES = prog1.c \
prog2.c \
....
EOBJS = prog1.o \
prog2.o \
....
PROGS = prog1 \
prog2 \
...
INC = -I/usr/local/inrimage/include $(INC_PERSO) -I.
LIB = $(LIB_PERSO) $(LIB_INRIMAGE) $(FLAG_LIBSTATS) $(FLAG_BTOOLBOX) $(FLAG_INR) $(FLAG_GREG)
CFLAGS = -Wall -O2 -g $(INC)
LIBS = $(LIB)
CC = gcc
all : $(PROGS)
prog1 : prog1.o
$(CC) $< -o $@ $(LIB)
prog2 : prog2.o
$(CC) $< -o $@ $(LIB)
etc...
install: $(PROGS)
cp $(PROGS) $(BIN)
clean :
rm -f $(COBJS) $(EOBJS) *~
##################################"
2. Pour la librairie:
################################
DEST = adresse de destination de la librairie libstats
LIB_INRIMAGE = -L/usr/local/inrimage/lib
FLAG_INR = -linrimage -lm -lrf
FLAG_GREG = -lgreg
FLAG_BTOOLBOX = -lbToolBox
FLAG_LIBSTATS = -lstats
LIB_PERSO = -L$(DEST)/lib -L$(HOME)/common/lib
INC_PERSO = -I$(HOME)/common/include/greg -I. -I../btoolbox -I$(HOME)/common/include
CFILES = prog3.c \
prog4.c \
....
COBJS = prog3.o \
prog4.o \
....
INC = -I/usr/local/inrimage/include $(INC_PERSO) -I.
LIB = $(LIB_PERSO) $(LIB_INRIMAGE) $(FLAG_LIBSTATS) $(FLAG_BTOOLBOX) $(FLAG_INR) $(FLAG_GREG)
.c.o:; gcc -Wall -O2 -g $(INC) -c $*.c ;
all : libstats.a
libstats.a: $(COBJS)
rm -f libstats.a
ar r libstats.a $(COBJS)
ranlib libstats.a
cp libstats.a $(DEST)/lib/libstats.a
clean :
rm -f $(COBJS) $(EOBJS) *~
################################
Merci du coup de main.