如何在 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
我 运行 遇到了 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