如何在makefile中定义变量,然后在Fortran代码中使用它

时间:2014-03-19 16:19:02

标签: variables makefile fortran conditional-compilation

我试图在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?

2 个答案:

答案 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

你应该好好去。