我遇到了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中的绝对路径?我需要这个,因为我为需要绝对路径的工具构建命令行参数。
答案 0 :(得分:1)
这看起来像是一个XY问题。如果您需要命令行中单个文件或目录的绝对路径,则完整路径的构造应留给SCons本身。
请在"变量替换"部分下方查看MAN页面(http://scons.org/doc/production/HTML/scons-man.html或" man scons
")。您可以将其他说明符(例如abspath
)添加到变量中,并在命令执行之前替换它们。
因此,Builder操作的命令行字符串可能如下所示:
$MYTOOL -i $SOURCE.abspath $TARGET.abspath