如何在 Scons 中找到绝对路径 site_tools

How to find absolute path in Scons site_tools

我 运行 遇到了 site_tools 下 SConscripts 和自定义工具之间环境差异的问题。

我正在尝试查找字符串的绝对路径,这在 SConscript 中很好:

print File('#something').get_abspath()
>> /home/projects/something

site_tools中的类似代码:

from SCons.Node.FS import File
print File('#something').get_abspath()
>> TypeError: __init__() takes exactly 4 arguments (2 given)

很明显,在 SConscript 中构造的 File() 不是 SCons.Node.FS.File

所以问题是:

1) SConscript 中的 File 对象是什么,如何在 builder/site_tools 中获取一个?

2) 如何获取site_tools中的绝对路径?我需要这个,因为我正在为需要绝对路径的工具构建命令行参数。

对我来说这看起来像是一个 XY 问题。如果你在命令行中需要单个文件或目录的绝对路径,完整路径的构建应该留给 SCons 自己。 请查看 "Variable Substitution" 部分下的 MAN 页面(http://scons.org/doc/production/HTML/scons-man.html 或“man scons”)。您可以将更多的说明符(如 abspath 在您的情况下)附加到变量,并且它们在命令执行之前被替换。 因此,您的 Builder 操作的命令行字符串可能如下所示:

$MYTOOL -i $SOURCE.abspath $TARGET.abspath