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

Scons: how to create a file path by appending two nodes?

我正在尝试编写一个将在目标目录中安装 headers 的构造文件。预期效果是:

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));

这显然是行不通的,因为没有追加功能。 GlobreturnsNodeobjects,Dir也是Nodeobject。我不知道我应该如何将两个节点 object 组合成更长的路径。有人可以帮忙吗?

您不需要自己将这些路径粘贴在一起(感谢您描述了您试图解决的实际问题)。您正在寻找已经提供的 Install() 方法。另请查看 User Guide,第 11 章 "Installing Files in Other Directories: the Install Builder",但具体的解决方案应该如下所示(从我的脑海中看):

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

如果你真的需要这个

str(node)

将 return 有问题的 node 的路径。 ;)