FORTRAN*变量在Scons中的用途是什么?该手册将它们描述为所有Fortran版本的默认设置。但据我所知,在实践中它们从未被使用,因为不同的Fortran方言的具体变量总是优先使用(F77*、F90*、F95*)。
是否有一种方法可以将映射从文件扩展名更改为Fortran方言,以便将某些文件映射到默认值?
发布于 2015-04-27 20:26:50
从SCons源代码(特别是Tool/FortranCommon.py)来看,FORTRAN与F77、F90、F95和F03一起被视为方言,而不是所有这些语言的父语言。看起来变量的FORTRAN变体将用于使用.f、.for、.ftn、.fpp和.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)其中,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)都是独立的,并与文件名结尾映射,这是可配置的。
https://stackoverflow.com/questions/29899861
复制相似问题