2014-03-19 64 views
2

我想在makefile中定義一個變量,然後根據是否設置該變量,更改在我的Fortran例程中編譯哪個代碼塊。如何在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) 

的線正確打印。然而,當測試程序編譯它設置= 0。我如何獲得Fortran代碼來識別MYVAR?

回答

0

您需要添加一個額外的標誌

OPTIONS = -DMYVAR=$(MYVAR) 

然後你編譯它與

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

你應該很好走。

+1

太棒了!我用了你和亞歷山大的組合。感謝您的快速響應。 –

0

你需要使用-D指定在編譯時變量(在你的Makefile):

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

或者,因爲你只是檢查它是否被定義或沒有:

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

太棒了!我使用了你和Kyles的組合。感謝您的快速響應。 –

相關問題