Bonjour.
Je cherche quelques réponses simples a des questions encore plus simples sous fortran 90.
Précision avant de commencer : j'utilise le compilateur intel (ifort) sous linux
(pour être plus complet : ifort -V donne ceci
Intel(R) Fortran Compiler for applications running on IA-32, Version 10.0 Build 20070426 Package ID: l_fc_p_10.0.023
Copyright (C) 1985-2007 Intel Corporation. All rights reserved. )
1. Comment inclure un header (fichier de type truc.h) dans un program fortran 90. Le #include "truc.h" qui marchait bien en f77 n'est plus valable à priori. J'ai essayer sans le diez, et ça compile, donc peut être ce n'est qu'une question de compilation.
2. le #ifndef #ifdef et #endif ne marche pas. Il y a un équivalent à ça, ou c'est encore mon compilo qui me joue des tours??
3. (Et c'est La question existentielle pour moi) : Comment je peux récupérer la valeur d'une variable que j'utilise dans le Makefile?
Je m'explique :
Je défini une variable (ORDER par exemple) dans mon Makefile, qui prendra des valeurs entières (de 0 à 3 disons). Selon cette valeur, je vais compiler le program qui va avec (genre si je fais : make 0, la variable ORDER prendra la valeur 0. make 2, la variable ORDER prendra la valeur 2, etc).
Maintenant, je veux que cet ORDER soit aussi lu par mon main.f90. En f77, je mettais dans mon param.h : #define n ORDER, j'incluais le param.h via #include, et le tour est joué (puisque mon n prend maintenant la valeur de ORDER). Sous f90, rien ne marche comme il faut, et du coup, je suis à la ramasse
voici une ébauche du Makefile :
Merci d'avance à vos réponses!
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 .SUFFIXES : .out .o .f90 .h FC = ifort FFLAGS = -c -fpe3 -pg -traceback FLAGS = -O3 -pg OBJS = param.o main.o # ici le fameux ORDER ORDER = 0 exec = exe .f90.o : $(FC) -DORDER=$(ORDER) $(FFLAGS) $< $(exec) : $(OBJS) $(FC) -DORDER=$(ORDER) $(FLAGS) -o $@ $^ @rm -f *.out *.mod *.o *~ 0: make exe ORDER=0 1: make exe ORDER=1 2: make exe ORDER=2 3: make exe ORDER=3
Partager