回 帖 发 新 帖 刷新版面

主题:如何设置Fortran的编译参数FFLAGS

最近修改了Fortran写的一个工程,在上面添加了一些框架的引用,这样,原来的工程makefile就要修改了,需要引入框架的路径。因此,我想通过修改FFLAGS参数来添加框架的路径,但不论我在makefile中如何修改FFLAGS
     FFLAGS = $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)
     FFLAGS的值似乎总是不变,使用echo命令打出来的,都是-I/netcdf_include_path,这是为什么呢?
     请各位资深Fortran大师帮忙看一下问题在哪?

回复列表 (共5个回复)

沙发

FFLAGS是编译器开关
你得具体去看$(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)各项的含义是什么,我们是猜不出来的……
-I/netcdf_include_path对fortran来说是指module所在位置

板凳

$(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)是一些参数,组合起来是
    -O -fPIC -threads -openmp
    -I/root/esmf_5.2/esmf/DEFAULTINSTALLDIR/mod/modO
    但这些参数没办法添加到FFLAGS里面,导致makefile使用隐式规则的时候总是找不到-I/root/esmf_5.2/esmf/DEFAULTINSTALLDIR/mod/modO下面的mod文件

    

3 楼

是么?你能把makefile的内容贴上来吗?

4 楼


 楼主并没有把问题完全说清楚,

不管怎么样,把
$(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)


改成
${ESMF_F90COMPILEOPTS} ${ESMF_F90COMPILEPATHS} ${ESMF_F90COMPILECPPFLAGS}

先试试看。

5 楼

[quote]
 楼主并没有把问题完全说清楚,

不管怎么样,把
$(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)


改成
${ESMF_F90COMPILEOPTS} ${ESMF_F90COMPILEPATHS} ${ESMF_F90COMPILECPPFLAGS}

先试试看。[/quote]
我觉得不是这个问题
只有具体的shell命令时,才需要使用大括号

我来回复

您尚未登录,请登录后再回复。点此登录或注册