【问题标题】:How to define a variable in a makefile and then use it within Fortran code如何在 makefile 中定义变量,然后在 Fortran 代码中使用它
【发布时间】:2014-04-26 01:26:53
【问题描述】:

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

【问题讨论】:

    标签: variables makefile fortran conditional-compilation


    【解决方案1】:

    您需要添加一个额外的标志

    OPTIONS = -DMYVAR=$(MYVAR)
    

    然后你编译它

    all:
        ifort $(OPTIONS) <file.f90> -fpp
    

    你应该很高兴。

    【讨论】:

    • 太棒了!我使用了你和亚历山大的组合。感谢您的快速响应。
    【解决方案2】:

    您需要在编译时(在您的 Makefile 中)使用 -D 指定变量:

    all:
        ifort -DMYVAR=1 temp.F90 -fpp
        echo $(MYVAR)
    

    或者,因为您只是检查它是否已定义:

    all:
        ifort -DMYVAR temp.F90 -fpp
        echo $(MYVAR)
    

    【讨论】:

    • 太棒了!我使用了你和凯尔斯的组合。感谢您的快速响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多