Scons:如何通过附加两个节点来创建文件路径?

时间:2017-07-24 07:49:45

标签: scons

我正在尝试编写一个sconstruct文件,该文件将在目标目录中安装标头。预期的效果是:

cp include/a.h ../dest/a.h
cp include/b.h ../dest/b.h

或者同样好:

cp include/a.h ../dest/include/a.h
cp include/a.h ../dest/include/b.h

这是我到目前为止所拥有的:

env = Environment()
for header in Glob("include/*.h"):
    env.Command(Dir("../dest").Append(header), header, Copy("$TARGET", "$SOURCE"))
    env.Alias("includes", Dir("../dest").Append(header));

这显然不起作用,因为没有Append功能。 Glob返回Node对象,Dir也是Node对象。我无法弄清楚我应该如何将两个Node对象组合成一个更长的路径。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您不需要自己粘贴这些路径(感谢您描述了您尝试解决的实际问题)。您正在寻找已提供的Install()方法。还请查看User Guide,第11章“在其他目录中安装文件:安装构建器”,但具体的解决方案看起来应该是这样的(从头到尾):

env = Environment()
includes = env.Install("../dest", Glob("include/*.h"))
env.Alias("includes", includes)

如果你应该真的需要这个

str(node)

将返回相关node的路径。 ;)