2012-12-04 13 views
7

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

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

私は私の新しいモジュールでの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例とないから構成されています。

Note#2 - wafが生成する 'myobjects'を認識する必要があるかもしれません。wafはの前にビルのインデックスを作成するため、myshlibをビルドするために使用されません。

+0

が、NS3 WAFシステムは、彼らがいない。このように、ソースとターゲットを整理することを非常に複雑です... – user1875337

1

@ drahnrさんの答えはバニラ・ワフにとっては正しいですが、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'] 
関連する問題