9

最近、新しい NS3 モジュールを構築しています。私のコードでは、 の新しい機能を使用しています。構成システムに gcc フラグ (CXXFLAGS)をC++11 (c++0x)追加したいと考えています。"-std=c++0x"waf

私はこれを試みました:CXXFLAGS="-std=c++0x" waf configure、そしてそれをビルドします。ただし、ipv4-address などの既存のモジュールの一部は と互換性がないことが判明しましたc++11。したがって、他のモジュールが c++11 でコンパイルされないように、特に新しいモジュールに対してこのフラグを指定したいと考えています。

これを新しいモジュールの wscript に追加しようとしました:

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

最初の試行として失敗します。

どうやってやるの?

4

2 に答える 2

4

@drahnrの答えはバニラwafには正しいですが、明らかにOPが望んでいるものであるNS-3のビルドシステムでは機能しません。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']
于 2013-12-22T20:44:09.187 に答える
2

waf book 1.7.8 によると、セクション 10.1.1 および 10.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 - 生成された 'myobjects' を waf に認識させる必要がある場合や、waf がビルド前にすべてのファイルにインデックスを付けるため、'myshlib' のビルドに使用されない場合があります。

于 2012-12-18T08:05:23.110 に答える