WebRTC已经开源五周年了, 其鼎鼎大名, 在实时多媒体通讯领域无出其右. 学习应用WebRTC的热潮, 从未衰退过. 国内的很多公司的多媒体通讯产品, 都基于WebRTC构建. 要理解借鉴WebRTC中的算法或实现, 虽然未必需要了解其如何编译, 但是掌握WebRTC编译系统运作机制, 对于理解应用, 助益颇多, 庖丁解牛,恢恢乎游刃有余, 此之谓也.
WebRTC的编译系统是使用了GYP和Ninja的混合系统, 本文无意全面介绍WebRTC的编译及其机制, 仅仅希望以介绍Ninja编译系统为入口, 管中窥豹, 一探WebRTC之编译的鳞爪.
什么是Ninja: Ninja是一个编译系统, 与其它编译系统相比,其最大的不同是:Ninja的最大目标是为了加快编译速度. 现在很多项目都规模庞大, 源代码需要支持跨平台,由多种开发语言构成, 几十万,几百万甚至更多的代码构成一个项目, 编译时间多的需要几个小时或更长, 冗长的编译已经开发人员的恶梦. Ninja 就是应此而生.