gpt4 book ai didi

scons - 使用散列标记时获取 variant_dir 下的路径

转载 作者:行者123 更新时间:2023-12-05 05:24:48 29 4
gpt4 key购买 nike

问题

我有两个目录,ab,一个的输出应该在另一个中用作输入。为此,我使用井号语法(例如 b/SConscript 指的是 #a/a2.txt)。
我使用 variant_dir 构建到 build 目录中(因此 a2.txt 是在 /home/build/a/a2 中创建的。 txt).
这种组合不起作用 - #a/a2.txt 被解析为 /home/a/a2.txt,但我需要 /home/build/a/a2.txt.

我可以手动添加 build (#/build/a/a2.txt) 但我不喜欢它。首先,它可能会在某些情况下发生变化。其次,SCons 总是自己添加 variant_dir,所以我不希望在某些地方手动添加它。

例子

我构建到 build 中,并且有两个目录。 aa.txt 作为 a2.txt 复制到构建目录。 b 尝试将其复制到 b.txt。显然,复制只是为了示例 - 实际上我做了一些真正的处理。
我想基于 a2.txt 构建 b.txt,它只存在于构建目录中。但它试图从源代码中使用它,但失败了。

% cat SConstruct
SConscript("SConscript", variant_dir="build", duplicate=0)

% cat SConscript
SConscript("a/SConscript")
SConscript("b/SConscript")

% cat a/SConscript
Command("a2.txt", File("a.txt").srcnode(), Copy("$TARGET", "$SOURCE"))

% cat b/SConscript
Command("b.txt", "#a/a2.txt", Copy("$TARGET", "$SOURCE"))

输出:

%  scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
scons: *** [build/b/b.txt] Source `a/a2.txt' not found, needed by target `build/b/b.txt'.
scons: building terminated because of errors.

附言SCons 2.3.4

最佳答案

您应该使用如下相对路径:

% cat b/SConscript
Command("b.txt", "../a/a2.txt", Copy("$TARGET", "$SOURCE"))

,而不是使用 # 的绝对规范。

关于scons - 使用散列标记时获取 variant_dir 下的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33461179/

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