Makefile et notdir

La question :

Bonjour,

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 !!

Poser votre question sur le forum Programmation

La réponse :

Le Fri, 24 Jul 2009 06:27:41 -0700 (PDT)
Brownie a écrit


Bonjour,

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...

Poser votre question sur le forum Programmation

Questions similaires :