主题:如何设置Fortran的编译参数FFLAGS
yesshi06
[专家分:0] 发布于 2011-04-24 15:53:00
最近修改了Fortran写的一个工程,在上面添加了一些框架的引用,这样,原来的工程makefile就要修改了,需要引入框架的路径。因此,我想通过修改FFLAGS参数来添加框架的路径,但不论我在makefile中如何修改FFLAGS
FFLAGS = $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)
FFLAGS的值似乎总是不变,使用echo命令打出来的,都是-I/netcdf_include_path,这是为什么呢?
请各位资深Fortran大师帮忙看一下问题在哪?
回复列表 (共5个回复)
沙发
dongyuanxun [专家分:7180] 发布于 2011-04-24 16:23:00
FFLAGS是编译器开关
你得具体去看$(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)各项的含义是什么,我们是猜不出来的……
-I/netcdf_include_path对fortran来说是指module所在位置
板凳
yesshi06 [专家分:0] 发布于 2011-04-24 17:11:00
$(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 楼
dongyuanxun [专家分:7180] 发布于 2011-04-24 17:30:00
是么?你能把makefile的内容贴上来吗?
4 楼
f2003 [专家分:7960] 发布于 2011-04-24 22:19:00
楼主并没有把问题完全说清楚,
不管怎么样,把
$(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)
改成
${ESMF_F90COMPILEOPTS} ${ESMF_F90COMPILEPATHS} ${ESMF_F90COMPILECPPFLAGS}
先试试看。
5 楼
dongyuanxun [专家分:7180] 发布于 2011-04-24 22:37:00
[quote]
楼主并没有把问题完全说清楚,
不管怎么样,把
$(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILECPPFLAGS)
改成
${ESMF_F90COMPILEOPTS} ${ESMF_F90COMPILEPATHS} ${ESMF_F90COMPILECPPFLAGS}
先试试看。[/quote]
我觉得不是这个问题
只有具体的shell命令时,才需要使用大括号
我来回复