gpt4 book ai didi

delphi - 如何强制 SConscript 构建器更改目录?

转载 作者:行者123 更新时间:2023-12-03 15:12:03 26 4
gpt4 key购买 nike

目前,我正在尝试将一个百万 sloc 遗留项目从乏味的 .cmd 脚本移植到 SCons。其中一部分是VC++,其他是Delphi。为 C++ 片段创建 SConscript 是一件轻而易举的事。

为了构建 delphi 部分,我编写了一个非常简单的构建器,它可以检测它是程序还是库项目。通过 SConscript 链接后调用构建器会使 scons 调用 dcc32 $subdir/project.dpr ,这会误导 dcc32 在当前目录而不是 $subdir 中查找单元。

有没有办法告诉 scons 在执行 sconscript 中的命令之前输入 $subdir 或者我应该在构建器中修复它?

提前谢谢

最佳答案

SCons 在读取它们时已经更改为子目录 SConscripts 的目录,因此看起来问题必须在实际构建器中修复。

一旦脚本被解析,并且 SCons 正在运行构建命令,它就会保留在顶级目录中。然后使用相对于该顶级目录的路径名发出命令。更改此行为的方法是在构建器中使用 chdir 关键字。

scons 手册页中的示例如下:

b = Builder(action='build < ${SOURCE.file} > ${TARGET.file}',
chdir=1)
env = Environment(BUILDERS = {'MyBuild' : b})
env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in')

您需要指定 .file 组件,因为使用 chdir 不会更改传递给构建器的名称,即它们仍然相对于顶层目录。

关于delphi - 如何强制 SConscript 构建器更改目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988115/

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