Salut,
Je voudrais me faire un makefile pour mes programmes écrits en fortran 90. voici ce que j'ai écrit pour l'instant :
En résumé voilà ce que je veux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 EXEC = beem_ml.exe LIB = libbeem.a FC = ifort FFLAGS = -real-size 128 -u SRC = $(wildcard *.f90) SRC_77 = $(wildcard *.f) SRC_MOD = $(wildcard mod_*.f90) OBJS = $(SRC:.f90=.o) OBJS_77 = $(SRC_77:.f=.o) OBJS_MOD = $(SRC_MOD:.f90=.o) all: $(EXEC) $(OBJS_MOD): $(SRC_MOD) $(FC) $(FFLAGS) -c $^ touch $*.o $(OBJS_77) : $(SRC_77) $(FC) $(FFLAGS) -c $^ $(OBJS) : $(SRC) $(OBJS_MOD) $(FC) $(FFLAGS) -c $^ $(LIB) : $(OBJS) $(OBJS_77) $(OBJS_MOD) ar -rv $(LIB) $^ $(EXEC) : $(OBJ) $(LIB) $(FC) -o $@ $^ # cleaning repertory. # make new remove all *.dat. # Needed to run a new calculation, in order to avoid erasing data .PHONY : clean mrproper new new : rm -f *.log *.dat clean : rm -f *.o *.mod mrproper : clean new rm -f $(EXEC) $(LIB)
- compiler les modules. Ils sont de la forme mod_toto.f90
- compiler les subroutines f77 (écrites par qqun d'autre), qui sont de la forme *.f
- compiler les subroutines f90, qui sont de la forme *.f90 et qui dépendent du module et des subroutines f77
- archiver le tout dans une librairie
- compiler le programme principal qui dépend de la librairie (et donc de tout ce petit monde)
Voilà mon problème : les modules qui sont de la forme mod_*.f90 sont également de la forme *.f90, il y a donc une dépendance circulaire. comment faire pour obtenir un makefile générique?
Merci !
Partager