ns3 使用了 waf 编译系统,因此在 ns3 中尝试引入第三方模块时,就没有 make 那么直接了。

其实思路的核心还是想办法最终为编译器提供-L-I的设置。这个过程我们通过wscript中的configure函数来实现。这里我们假设模块使用的库的位置放在模块源码目录下的libs子目录。库的名字为example-lib。目录结构如下:

1
2
3
4
libs
└── example-lib
├── include
└── libexample-lib.a

其中,include文件夹内为头文件,libexample-lib.a为静态库文件。

修改wscript文件中的 configure 函数,如下

1
2
3
4
5
6
7
8
def configure(conf):
root_dir = conf.path.abspath()
example_lib_dir = os.path.join(root_dir, "libs/example-lib")
conf.env.append_value("LINKFLAGS",
["-L%s/" % example_lib_dir])
conf.env.append_value("LIB", ["example-lib"])
conf.env.append_value("CPPFLAGS",
["-I%s/include" % example_lib_dir, ])

修改configure函数之后要重新运行./waf configure命令来让设置生效。