waf 构建与cmake构建的区别以及原因 --关于NS3使用waf构建而非cmake的一些想法
NS3被定义为一款"仿真软件". 首先, NS3的目的是仿真而非应用, 其次, 其次NS3是一个软件而不是库! 也就是说其代码就为用户界面.这种东西和NS3在开发之初就有质的不同
对于一个库来说, 例如opencv, 虽然都为CPP的一坨代码, .opencv是为了辅助应用而创立的代码集合, 其用户端是程序员,下端输出为应用程序,用户面向普通群众, 即:
Opencv -> programer -> app -> consumer
因此, opencv为了满足多样的需求, 考虑各方面因素. 为了考虑opencv与app的更好融合, 需要将opencv的部分融合进app的过程统一化且着重考虑, 因此opencv的构建方式需要可拓展, 所以opencv的工作组采取通过cmake构建工程, 能更好的方便继承
而NS3, 是一个仿真软件, 只不过没有可视化界面, 目的是为了模拟网络离散时间而创立, 如同matlab模拟控制系统一样, 其用户为网络工程师, 下端输出(产品)为脚本,再下端就没有了, 即:
NS3 -> network engineer -> script
NS3最终目的十分集中: 最大程度模拟现实中网络过程, 在这期间效率, 基于此二次构建出的程序架构等因素基本不需考虑, 因为基本没有继承的程序, 所以工作组采取了waf构建, 这种构建方式能以all-in-one的方式让NS3运行起来, 不需要修改工作目录以外的任何东西