Salut,
j'ai un petit souci pour faire un Makefile. Je cherche à le faire le plus générique possible pour pouvoir le réutiliser avec le plus grand nombre de projets en le modifiant le moins possible.
Ayant de nombreux projets différents, avec un grand nombre de fichiers source (dans un certain nombre de sous-dossiers pour chaque projet), j'aimerais pouvoir me contenter d'indiquer les noms de ces sous-dossiers où chercher les sources, et qu'il utilise alors automatiquement tous les .f s'y trouvant (en plus de ceux du dossier racine).
Pour fixer les idées sur l'arborescence d'un projet :
Dossier Projet
p1.f
p2.f
...
Sous-dossier A
a1.f
a2.f
...
Sous-dossier B
b1.f
b2.f
...
Sous dossier C, D... etc
Voici alors le Makefile que j'utilise actuellement :
Cela marche bien... sauf qu'il ne me trouve que les .f présents dans le dossier racine du projet mais pas dans les sous-dossiers.
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 # Dossiers Objets_dir = temp/Win VPATH = aero:maths:$(Objets_dir) # Fichiers du projet Executable = a.exe #Src = $(wildcard *.f) #Objets = $(Src:.f=.o) Objets = $(patsubst %.f,%.o,$(wildcard *.f)) # Commandes et options F_compilo = gfortran #F_compilo_options = -fno-automatic -O2 -fdefault-real-8 -Wline-truncation -Wsurprising -ffpe-trap=invalid,zero,overflow -march=core2 -mfpmath=sse F_compilo_options = -fno-automatic -O2 -Wline-truncation -Wsurprising -ffpe-trap=invalid,zero,overflow -march=core2 -mfpmath=sse Link = gfortran Link_options = # Compilation (génération des .o) %.o:%.f $(F_compilo) $(F_compilo_options) -c $< -o $(Objets_dir)/$@ # Link (génération de l'éxecutable) $(Executable): $(Objets) $(Link) $(Link_options) -o $@ $(addprefix $(Objets_dir)/, $(Objets))
Quelqu'un saurait-il comment faire ? je ne sais pas comment lui dire d'effectuer le wildcard sur tous les dossiers donnés.
Merci de votre aide
Partager