2015-09-07 49 views
0

通常使用SCons會自動追加後綴,FX的SConstruct無論如何,強制scons追加後綴。

StaticLibrary("foo", ["t.c"]) 

會產生靜態庫libfoo.afoo.lib或任何平臺的幻想,但是如果庫的基本名稱似乎已經有一個擴展這個億韓元」不會發生。 FX的SConstruct文件

StaticLibrary("foo.bar", ["t.c"]) 

產生libfoo.bar(我想這將使用MS工具鏈產生foo.bar)。

我想要的是使用GNU toolchain生成libfoo.bar.a,使用MS工具鏈生成foo.bar.lib(等等)。有沒有一種(簡單)的方法來實現這一點?

注意,它不會工作做

StaticLibrary("foo.bar.a", ["t.c"]) 

,因爲它會產生libfoo.bar.a爲使用GNU工具鏈想要的,但我猜想,它會產生foo.bar.a與MS工具鏈(而不是foo.bar.lib我通緝)。

回答

2

這是我能想到的,現在最簡單的解決方法:

env = Environment() 
env['MYLIB'] = "foo.bar" 
t = env.StaticLibrary('${MYLIB}', Glob('*.cpp')) 

通過定義庫作爲環境變量的名稱,可以防止生成邏輯(後綴/ src_suffix參數)從檢測已經現有的擴展。在處理鏈的後面,目標庫的名稱得到完全擴展,以便正確的事情發生。