2012-12-04 59 views
7

我正在構建一個新的NS3模塊。在我的代碼中,我使用了C++11 (c++0x)的一些新功能,我想在waf配置系統中添加一個gcc標誌(CXXFLAGS)"-std=c++0x"。我試過:CXXFLAGS="-std=c++0x" waf configure,然後構建它。但是,事實證明,一些現有的模塊(如ipv4-address)與c++11不兼容。因此,我想特別爲我的新模塊指定此標誌,以便其他模塊不會在C++ 11上編譯。如何爲特定模塊指定gcc標誌(CXXFLAGS)?

我想這在我的新模塊添加到WScript的:

def configure(conf): 
    conf.env.append_value('CXXFLAGS', '-std=c++0x') 

它未按一審。

我該怎麼做?

回答

1

按照waf book 1.7.8, section 9.1.1 and 9.1.2

bld.shlib(source='main.c', 
      target='myshlib', 
      cflags  = ['-O2', '-Wall'], 
      cxxflags  = ['-O3', '-std=c++0x'], 
      use   = 'myobjects') 

    bld.objects(source='ip4.c', 
      cflags  = ['-O2', '-Wall'], 
      cxxflags  = ['-std=somethingelse'], 
      target  = 'myobjects') 

注#1 - 這個碼由在wafbook提供的2例和測試在所有。

注意#2 - 您可能需要讓waf知道'myobjects'的產生,或者他們可能不會用於構建'myshlib',因爲waf索引之前的所有文件

+0

但NS3 WAF系統是如此復​​雜,他們組織的源和目標不是以這種方式... – user1875337

1

雖然@ drahnr的答案是正確的香草waf,它不會與NS-3的構建系統,這顯然是OP想要的。要將CXXFLAGS添加到NS-3程序中,可以將它們添加到構建對象中,而不是在配置階段。

例如:

def build(bld): 
    obj = bld.create_ns3_program('my_app', ['core', 'other-dependencies']) 
    obj.source = 'MyApplication.cpp' 
    obj.cxxflags = ['-std=c++11'] 
相關問題