我试图在makefile中定义一个变量,然后根据是否设置该变量,更改在我的Fortran例程中编译的代码块。
简单的例子我无法工作:
program test
implicit none
integer :: a
#ifdef MYVAR
a = 1
#else
a = 0
#endif
write(*,*) a
end program test
我的makefile是:
MYVAR=1
all:
ifort temp.F90 -fpp
echo $(MYVAR)
echo $(MYVAR)
行正确打印1.但是,在编译测试程序时,它会设置a = 0。如何让Fortran代码识别MYVAR?
答案 0 :(得分:0)
您需要使用-D
在编译时(在您的Makefile中)指定变量:
all:
ifort -DMYVAR=1 temp.F90 -fpp
echo $(MYVAR)
或者,因为您只是检查它是否已定义:
all:
ifort -DMYVAR temp.F90 -fpp
echo $(MYVAR)
答案 1 :(得分:0)
您需要添加额外的标记
OPTIONS = -DMYVAR=$(MYVAR)
然后用
编译它all:
ifort $(OPTIONS) <file.f90> -fpp
你应该好好去。