如何为特定模块指定gcc标志(CXXFLAGS)?

use*_*337 8 c++ gcc waf c++11

我最近正在构建一个新的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')
Run Code Online (Sandbox Code Playgroud)

它作为第一次试验失败了.

我怎样才能做到这一点?

dra*_*hnr 2

根据WAF书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')
Run Code Online (Sandbox Code Playgroud)

注意#1 - 该代码由 wafbook 中提供的 2 个示例组成,根本没有经过测试。

注意 #2 - 您可能需要让 waf 知道生成的“myobjects”,否则它们可能不会用于构建“myshlib”,因为 waf在构建之前会索引所有文件。