9

我最近正在构建一个新的 NS3 模块。在我的代码中,我使用了一些新特性C++11 (c++0x),我想"-std=c++0x"waf配置系统中添加一个 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')

它作为第一次试验失败。

我怎样才能做到这一点?

4

2 回答 2

4

尽管@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']
于 2013-12-22T20:44:09.187 回答
2

根据waf book 1.7.8, section 10.1.1 and 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 - 您可能需要让 waf 了解生成的“myobjects”,或者它们可能不会用于构建“myshlib”,因为 waf在构建之前会索引所有文件。

于 2012-12-18T08:05:23.110 回答