作为自定义生成器的一部分,我需要按顺序运行两个程序。
其中一个程序会使用chdir=1
选项来保证其在与目标相同的目录中运行,因为我无法处理绝对/相对路径。
第二个程序是位于项目的tools
子目录中的脚本,而SConstruct文件位于项目的根目录中。我需要创建一个操作来运行这个脚本,但由于我既没有项目的绝对路径,也没有从目标所在目录返回到tools
子目录的相对路径,所以遇到了麻烦。如果我可以得到我的项目根目录的绝对路径,那么我只需要连接 `tools/myscript.bar' 就可以完成它。
以下是我的代码,或者说是大致的代码:
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe myscript.bar ${SOURCE.filebase}',
], chdir=1);
问题是我需要改变相关操作,以便能够找到"myscript.bar",类似于:
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe $PATHTOHERE/tools/myscript.bar ${SOURCE.filebase}',
], chdir=1);
这似乎很简单,但我无法弄清楚如何做。