2010-02-16 22 views
1

我:scons的一個模塊中設置CXXFLAGS影響迪拉/ SConscript另一個

Import('env') 
probeenv = env.Clone() 
probeenv['CXXFLAGS'] += ['-fno-rtti','-Wnon-virtual-dtor'] 
... stuff that uses probeenv 
在DIRB/SConscript

Import('env') 
sipenv = env.Clone() 
... stuff that uses sipenv 

現在,C++在DIRB文件被編譯,得到來自dirA的CXXFLAGS - 怎麼回事? CCFLAGS不會發生這種情況。它也沒有發生,如果我用probeenv['CXXFLAGS'] = ['-fno-rtti','-Wnon-virtual-dtor']在迪拉

+0

您正在使用哪個版本的scons?儘管我在老版本的scons中看到過類似的東西,但更新的版本在環境之間有更好的隔離。 –

回答

1

如果未在「主」SConstruct中設置CXXFLAGS,這似乎是一個scons錯誤。解決方法是簡單地將其設置爲空列表。

SConscript:

env['CXXFLAGS'] = [] 
1

有專門的方法來將數據添加到各種編譯器標誌:

probenv.Append(CXXFLAGS = ['-fno-rtti','-Wnon-virtual-dtor']) 

還有AppendUnique和AppendENVPath。請參閱該男子的描述。

0

實現這一目標的最佳方式是:

env.Prepend(CXXFLAGS = ['-fno-rtti', '-Wnon-virtual-dtor']) 

這樣,你沒有得到一個錯誤,你避免一種解決方法,因爲如果CXXFLAGS值沒有設置,它是自動創建的。