wscript

REF:http://zzgthk.iteye.com/blog/1402271

ns3自带的waf不会去找依赖,也不知道怎么添加依赖。也就是说waf编译器无法自己找#include的文件

自定义的模块中,在利用ns3的waf编译的时候会将我们自己定义的头文件 复制到  build/debug/ns3/下面(所以是不能重名的),并且会对对应模块中的.cc文件编译成对应的 .o 文件,使得在 scratch中编写主程序时可以正确找到和链接。
   注意:1.  模块中那些头文件会拷贝以及那些.cc文件会生成.o 都是在模块中的  wscript  文件 规定的,可以看上面的例子
http://blog.csdn.net/sea_shore/article/details/6102437
所以,我要以aodv为模版建立自己的模型cyf,需要先修改文件名,利用linux批量修改文件名指令rename:
批量更改文件扩展名 
$ sudo rename 's/aodv/cyf/' * 
src下也有一个wscript,它定义了目录结构与模型之间的关系,
如下,从src底下的目录名直接得到model名,所以文件夹的名字和里面wscript里写的模块名应该是一样的

我加了一个print之后:

报错 Warning: (in t2) Requested to build modular python bindings, but apidefs dir not found => skipped the bindings.

def build(bld):
module = bld.create_ns3_module('aodv', ['internet', 'wifi'])
module.includes = '.'                    ##对应当前目录(aodv/model、aodv/test)
module.source = [
'model/aodv-id-cache.cc',
'model/aodv-dpd.cc',
'model/aodv-rtable.cc',
'model/aodv-rqueue.cc',
'model/aodv-packet.cc',
'model/aodv-neighbor.cc',
'model/aodv-routing-protocol.cc',
'helper/aodv-helper.cc',
]

aodv_test = bld.create_ns3_module_test_library('aodv')
aodv_test.source = [
'test/aodv-id-cache-test-suite.cc',
'test/aodv-test-suite.cc',
'test/aodv-regression.cc',
'test/bug-772.cc',
'test/loopback.cc',
]

headers = bld(features='ns3header')
headers.module = 'aodv'
headers.source = [
'model/aodv-id-cache.h',
'model/aodv-dpd.h',
'model/aodv-rtable.h',
'model/aodv-rqueue.h',
'model/aodv-packet.h',
'model/aodv-neighbor.h',
'model/aodv-routing-protocol.h',
'helper/aodv-helper.h',
]

if bld.env['ENABLE_EXAMPLES']:
bld.recurse('examples')

bld.ns3_python_bindings()

原文地址:https://www.cnblogs.com/cyf1995/p/6674637.html