Je tente de faire un makefile pour compiler un programme avec
plusieurs sources. Le makefile marche bien avec la structure
suivante :
SRC -> dossier avec tous les fichiers f90 et le makefile
OBJ -> dossier ou sont compilés les objets
MOD -> dossier ou sont compilés les modules
la génération de la liste des objets est faite par :
OBJDIR = ../obj
SRCS= \
./TYP_DateJJSecPico_mod.f90 \
main.f90
OBJS= $(SRCS:%.f90=$(OBJDIR)/%.o)
A présent, je souhaite accéder à des sources dans un autre répertoire,
la structure est la suivante :
SRC2 -> dossier contenant la nouvelle source toto.f90
SRC -> dossier avec tous les autres fichiers f90 et le makefile
OBJ -> dossier ou sont compilés les objets
MOD -> dossier ou sont compilés les modules
la génération de la liste des objets est alors faite par :
OBJDIR = ../obj
SRCS= \
./TYP_DateJJSecPico_mod.f90 \
../SRC2/toto.f90 \ <=========modif
main.f90
OBJS= $(SRCS:%.f90=$(OBJDIR)/%.o)
cette formulation me renvoie le OBJS suivant :
../obj/./TYP_DateJJSecPico_mod.f90
../obj/../SRC2/toto.o
Ce qui n'est pas bon !! En jouant avec $(addprefix $(OBJDIR)/,$(notdir
$(OBJS))) j'ai
../obj/TYP_DateJJSecPico_mod.f90
../obj/toto.o
MAIS SRCS a été modifié, de telle sorte que je n'ai plus les path et
mes inférences %.o: %.f90 ne fonctionnent plus.
Au secours !
Merci d'avance,
Brownie
Donc au secour !!
Essayes un truc du genre :
OBJS = $(patsubst %.f90,$(OBJDIR)/%.o,$(notdir $(SRCS)))
--
zwim.
Rien n'est impossible que la mesure de la volont� humaine...