gpt4 book ai didi

scons - 获取 scons 根目录

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

我需要作为自定义构建器的一部分按顺序运行两个程序。

其中一个程序我被困住了,无法处理绝对/相对路径,因此我必须使用构建器的 chdir=1 选项才能运行其操作与目标位于同一目录中。

第二个是位于项目的 tools 子目录中的脚本; SConstruct 文件位于项目的根目录中。我需要创建一个操作来运行此脚本,但遇到了麻烦,因为我既没有项目的绝对路径,也没有从目标所在目录到工具的相对路径> 脚本所在的子目录。如果我能以某种方式获得项目根目录的绝对路径,我就准备好了,我可以连接“tools/myscript.bar”并完成它。

这是我所拥有的,或多或少:

env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe myscript.bar ${SOURCE.filebase}',
], chdir=1);

问题是我需要更改有问题的操作,以便可以找到“myscript.bar”,例如:

env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe $PATHTOHERE/tools/myscript.bar ${SOURCE.filebase}',
], chdir=1);

这看起来很简单,但我不知道如何实现。

最佳答案

您应该使用“#”来指示源目录的顶部。

print Dir('#').abspath

如果您使用variant directory,则此版本有效。也。例如在SConstruct中:

SConscript('main.scons', variant_dir="build")

然后在ma​​in.scons中:

print Dir('.').abspath
print Dir('#').abspath

第一个将打印 /path/to/project/build,而第二个将显示正确的 /path/to/project

关于scons - 获取 scons 根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461774/

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