Scons:构建Fortran时`FORTRAN *`变量的目的是什么?

时间:2015-04-27 15:27:58

标签: fortran scons

Scons中FORTRAN*变量的目的是什么?该联机帮助页将它们描述为所有Fortran版本的默认设置。但据我所知,实际上它们从未使用过,因为不同的Fortran方言的特定变量总是优先(F77*F90*F95*)。

有没有办法将文件扩展名的映射更改为Fortran方言,以便将某些文件映射到默认值?

1 个答案:

答案 0 :(得分:3)

通过SCons源(特别是Tool / FortranCommon.py),可以看出FORTRAN被视为方言以及F77F90F95F03而不是所有人的父母。看起来变量的FORTRAN变体将用于以.f.for.ftn.fpp和{{1}命名的源文件虽然可以从变量.FPPFORTRANFILESUFFIXES覆盖它们。

设置此代码的代码是:

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) F77F90等的代码非常相似,例如:

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)都是独立的,并从文件名结尾映射,这些结尾是可配置的。