您的位置:首页 > 产品设计 > UI/UE

WebRTC编译篇之Ninja 编译系统 一

2016-07-10 10:33 851 查看
     WebRTC已经开源五周年了,  其鼎鼎大名, 在实时多媒体通讯领域无出其右.   学习应用WebRTC的热潮,  从未衰退过.  国内的很多公司的多媒体通讯产品, 都基于WebRTC构建.    要理解借鉴WebRTC中的算法或实现, 虽然未必需要了解其如何编译,      但是掌握WebRTC编译系统运作机制,
对于理解应用, 助益颇多,     庖丁解牛,恢恢乎游刃有余, 此之谓也.   

  WebRTC的编译系统是使用了GYP和Ninja的混合系统, 本文无意全面介绍WebRTC的编译及其机制,  仅仅希望以介绍Ninja编译系统为入口, 管中窥豹, 一探WebRTC之编译的鳞爪. 

  什么是Ninja:  Ninja是一个编译系统, 与其它编译系统相比,其最大的不同是:Ninja的最大目标是为了加快编译速度. 现在很多项目都规模庞大, 源代码需要支持跨平台,由多种开发语言构成, 几十万,几百万甚至更多的代码构成一个项目, 编译时间多的需要几个小时或更长, 冗长的编译已经开发人员的恶梦.  Ninja
就是应此而生.  

  Ninja诞生于Chromium项目,它是Google的Chromium工程师为了编译代码而设计的工具, Chromium的源代码超过30000个文件, 其编译非常复杂. Ninja最初设计目的就是为了简化Chromium的编译,现在Ninja又被用来编译Google的另一个开源项目WebRTC而受到关注. 虽然目前Ninja还不是开源项目编译系统的主流选择,  但是相比于现在应用广泛的automake/autoconfig,
Ninja的优势可谓非常明显, Ninja的编译速度占优, 而且Ninja所产生的编译文件的可读性也更好, automake和autoconfig生成的configure和Makefile, 已经超过了人类可以理解的底线. 相比于CMake和GYP系统, Ninja 在支持的features上有不足, 也许未来Ninja可以和CMake或者GYP互为补充, 共同为一个大规模项目编译做支持.

   1.  Ninja 的安装

  Linux: 

           Debian/Ubuntu:   apt-get install ninja-build

       MAC:  需要安装homebrew或者MacPorts

           brew install ninja 或者  port install ninja 

     也可以在这里下载: https://github.com/ninja-build/ninja/releases

       2.   Ninja 的使用

          Ninja的命令行格式如下:

         ninja [options] [targets...]

         常用的options:

          -C DIR  --  指定工作路径

   -f  FILE  -- 指定输入编译文件, 如未指定,则在工作路径选择build.ninja文作为输入, 找不到输入文件将汇报错误

           -t TOOL  -- 运行子工具集中的工具, Example:   ninja -C DIR -t clean

   -j  N    -- 并行运行N个任务, 这个跟make的参数意义一样, 默认的N是CPU核心数量

  待续: 下文将讲述Ninja的语法

Reference:

1.  https://ninja-build.org/   Nanja的官方主页

2  https://github.com/ninja-build/ninja   Nanjia的源代码

 

   

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WebRTC Ninja build