Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Makefile et notdir

3 views
Skip to first unread message

Brownie

unread,
Jul 24, 2009, 9:27:41 AM7/24/09
to
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 !!

zwim

unread,
Jul 24, 2009, 10:16:31 AM7/24/09
to
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...

0 new messages