2012-12-04 6 views
7

Sto costruendo un nuovo modulo NS3 recentemente. Nel mio codice, utilizzo alcune nuove funzionalità di C++11 (c++0x), desidero aggiungere un flag gcc (CXXFLAGS) "-std=c++0x" al sistema di configurazione waf.Come specificare i flag gcc (CXXFLAGS) in particolare per un modulo specifico?

Ho provato a questo: CXXFLAGS="-std=c++0x" waf configure e quindi lo costruisco. Tuttavia, risulta che alcuni dei moduli exsiting come ipv4-address non sono compatibili con c++11. Quindi, voglio specificare questo flag in particolare per il mio nuovo modulo in modo che gli altri moduli non vengano rispettati in C++ 11.

ho cercato di aggiungere questo alla WScript in mio nuovo modulo:

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

Non riesce come il primo processo.

Come posso farlo?

risposta

1

Secondo il 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') 

Nota # 1 - di questo codice è composto dai 2 esempi forniti nella wafbook e non testato a tutti.

Nota # 2 - potrebbe essere necessario fare WAF a conoscenza di '' MyObjects generati o non possono essere utilizzati per costruire 'myshlib', come gli indici waf tutti i file prima di edificio.

+0

ma il sistema WAF NS3 è così complicato che organizzano la fonte e obiettivi non in questo modo ... – user1875337

1

Sebbene la risposta di @ drahnr sia corretta per van waf, non funzionerà con il sistema di build di NS-3, che apparentemente è ciò che l'OP vuole. Per aggiungere CXXFLAGS a un programma NS-3, è possibile aggiungerli all'oggetto di build anziché nella fase di configurazione.

Ad esempio:

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