gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:44:50 24 4
gpt4 key购买 nike

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

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

最佳答案

查看 SCons 源(特别是 Tool/FortranCommon.py),似乎是 FORTRANF77 一起被视为方言, F90 , F95F03而不是他们所有人的 parent 。它看起来像 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 )都是独立的,并从文件名结尾映射,这是可配置的。

关于fortran - Scons:构建 Fortran 时 `FORTRAN*` 变量的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com