什么是Scons中的FORTRAN*变量的目的?manpage将其描述为所有Fortran版本的默认设置。但据我所知,在实践中它们从未被使用,因为不同的Fortran语言版本的特定变量始终具有优先权(F77*,F90*,F95*)。
是否有一种方法可以更改文件扩展名到Fortran语言版本的映射,以便某些文件被映射到默认值?
是否有一种方法可以更改文件扩展名到Fortran语言版本的映射,以便某些文件被映射到默认值?
FORTRAN
与F77
、F90
、F95
和F03
一样被视为方言,而不是它们的父类。看起来,具有.f
、.for
、.ftn
、.fpp
和.FPP
扩展名的源文件将使用FORTRAN
变量的变体,尽管可以从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)
其中DialectAddToEnv
将值赋给Fortran构建变量,例如(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
的机制。每个方言(包括FORTRAN
)都是单独的,并且从文件名后缀映射,这些后缀是可配置的。