SCons:获取原始文件的abspath(好像我没有设置variant_dir)

时间:2011-05-20 01:18:44

标签: scons

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

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

我可以使用某种File('foo.bar').origpath吗?

如果它来了,我可以使用os.path.join(Dir('#').abspath, 'orig'),但这需要SConscript知道它所在的目录,这很麻烦。

1 个答案:

答案 0 :(得分:8)

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

  

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

这将为您提供源目录中的绝对路径:

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