2011-05-20 27 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

相關問題