gpt4 book ai didi

build - Scons - Fortran 文件的构建顺序

转载 作者:行者123 更新时间:2023-12-02 04:45:08 24 4
gpt4 key购买 nike

在 Fortran 中构建模块需要按特定顺序完成,例如如果一个文件A.f需要B.f中定义的模块,那么B.f需要先被编译。我怎样才能在 Scons 中强加这样的构建顺序?如果我向它提供源文件列表,它会按字母顺序排列它们(因此 A.fB.f 之前编译)。我阅读了有关 Requires()Depends() 函数的信息,但无法让它们为我工作。

我很乐意只列出源文件以便我需要它们编译(因此禁用按字母顺序重新排列它们),但也欢迎任何其他方法。

根据 Kyle 的要求,这是我的 Sconscript 和构建日志:

# Main program building script

Import('env')

PROGRAM = 'main.exe'

SRC_PREFIX = './src/'

SRC = [ 'array_1D_module.f',
'array_2D_module.f',
'array_3D_module.f',
'thomas_algorithm_module.f',
'histogram_module.f',
'histogram_computer_module.f',
'density_parameters_module.f',
'diffusion3D_aos_z_sub_solver_module.f',
'diffusion3D_aos_y_sub_solver_module.f',
'diffusion3D_aos_x_sub_solver_module.f',
'diffusion3D_aos_solver_module.f',
'nonlinear_diffusion_utilities_module.f',
'nonlinear_diffusion_parameters_module.f',
'derivative_magnitude_computer_module.f',
'nonlinear_diffusion_module.f',
'main_module.f',
'main.f' ]

# Attach prefix to each source file
for i in range( len(SRC) ) :
SRC[i] = SRC_PREFIX + SRC[i]


env.Program(target = PROGRAM, source = SRC)

这产生了:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
ifort -o src/array_1D_module.o -c src/array_1D_module.f
ifort -o src/array_2D_module.o -c src/array_2D_module.f
ifort -o src/array_3D_module.o -c src/array_3D_module.f
ifort -o src/density_parameters_module.o -c src/density_parameters_module.f
ifort -o src/derivative_magnitude_computer_module.o -c src/derivative_magnitude_computer_module.f
ifort -o src/diffusion3D_aos_solver_module.o -c src/diffusion3D_aos_solver_module.f
src/diffusion3D_aos_solver_module.f(7): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [DIFFUSION3D_AOS_Z_SUB_SOLVER_MODULE]
use diffusion3D_aos_z_sub_solver_module, only :
------------^

所以 density_parameters_module.f 是在 thomas_algorithm_module.f 之前编译的,即使它在我的列表中排在它之后。

最佳答案

您的程序(如建议的那样)是否使用模块?这里有几个问题:

  1. FORTRANMODDIR 需要定义:参见 http://scons.tigris.org/ds/viewMessage.do?dsForumId=1272&dsMessageId=82725对此进行讨论。
  2. 我发现源文件混合包含模块定义和源代码会造成一定程度的困惑。

关于build - Scons - Fortran 文件的构建顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19920040/

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