我最近正在构建一个新的NS3模块。在我的代码中,我使用了C++11 (c++0x)
的一些新功能,我想在"-std=c++0x"
配置系统中添加一个gcc标志(CXXFLAGS)waf
。
我尝试了这个:CXXFLAGS="-std=c++0x" waf configure
,然后构建它。但是,事实证明,某些现有模块(如ipv4-address)与c++11
不兼容。因此,我想特别为我的新模块指定此标志,以便其他模块不会在c ++ 11上得到编译。
我尝试将此添加到 my new module 中的wscript:
def configure(conf):
conf.env.append_value('CXXFLAGS', '-std=c++0x')
第一次试验失败了。
我该怎么做?
答案 0 :(得分:1)
根据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个示例和 not 进行测试。
注意#2 - 您可能需要让waf知道生成的“myobjects”,或者它们可能不会用于构建“myshlib”,因为waf会在构建之前索引所有文件。
答案 1 :(得分:1)
尽管@ drahnr的答案对于vanilla 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']