2011-05-20 58 views
7

我可以使用File('foo.bar').abspath获取文件的位置,但如果我有variant_dir设置则返回的路径将是variant_dir而不是它的原始位置。如果我设置了duplicate=0,则返回的文件实际上不会存在。SCons的:获取ABSPATH原始文件(就好像我没有设置variant_dir)

显然SCons的知道在哪里的原始文件,因为它是作为参数传递时,文件的实际构建(如gcc -c -o variant/foo.o orig/foo.c)。

是否有某种File('foo.bar').origpath,我可以使用?

如果涉及到它,我可以使用os.path.join(Dir('#').abspath, 'orig'),但这需要SConscript知道它在哪个目录中,这很混乱。

回答

8

您可以使用srcnode()。引述man page

的srcnode()方法返回另一个 文件或表示给定文件或风向的 源路径风向对象。

这会给你的源目录的绝对路径:

File('foo.bar').srcnode().abspath 
+1

啊,漂亮!我知道一定有这样的事情。谢谢! – mcccclean 2011-05-22 23:27:15

相关问题