Scons中FORTRAN*
变量的目的是什么?该联机帮助页将它们描述为所有Fortran版本的默认设置。但据我所知,实际上它们从未使用过,因为不同的Fortran方言的特定变量总是优先(F77*
,F90*
,F95*
)。
有没有办法将文件扩展名的映射更改为Fortran方言,以便将某些文件映射到默认值?
答案 0 :(得分:3)
通过SCons源(特别是Tool / FortranCommon.py),可以看出FORTRAN
被视为方言以及F77
,F90
,F95
和F03
而不是所有人的父母。看起来变量的FORTRAN
变体将用于以.f
,.for
,.ftn
,.fpp
和{{1}命名的源文件虽然可以从变量.FPP
和FORTRANFILESUFFIXES
覆盖它们。
设置此代码的代码是:
FORTRANPPFILESUFFIXES
其中def add_fortran_to_env(env):
"""Add Builders and construction variables for Fortran to an Environment."""
try:
FortranSuffixes = env['FORTRANFILESUFFIXES']
except KeyError:
FortranSuffixes = ['.f', '.for', '.ftn']
#print "Adding %s to fortran suffixes" % FortranSuffixes
try:
FortranPPSuffixes = env['FORTRANPPFILESUFFIXES']
except KeyError:
FortranPPSuffixes = ['.fpp', '.FPP']
DialectAddToEnv(env, "FORTRAN", FortranSuffixes,
FortranPPSuffixes, support_module = 1)
给出了Fortran构建变量的值,例如(DialectAddToEnv
是传递给函数的第二个变量):
dialect
设置 env['%sCOM' % dialect] = '$%s -o $TARGET -c $%sFLAGS $_%sINCFLAGS $_FORTRANMODFLAG $SOURCES' % (dialect, dialect, dialect)
,F77
,F90
等的代码非常相似,例如:
F95
没有任何机制可以从一种方言退回到def add_f90_to_env(env):
"""Add Builders and construction variables for f90 to an Environment."""
try:
F90Suffixes = env['F90FILESUFFIXES']
except KeyError:
F90Suffixes = ['.f90']
#print "Adding %s to f90 suffixes" % F90Suffixes
try:
F90PPSuffixes = env['F90PPFILESUFFIXES']
except KeyError:
F90PPSuffixes = []
DialectAddToEnv(env, "F90", F90Suffixes, F90PPSuffixes,
support_module = 1)
。每个方言(包括FORTRAN
)都是独立的,并从文件名结尾映射,这些结尾是可配置的。