WebRTC中的编译工具 gyp 、gn 与 ninja

2020-04-01 20:25:41 浏览数 (1)

什么是 gyp

GYP (Generate Your Project) ,用于产生跨平台的项目文件。如在 Mac 下产生 XCode 的工程文件,在Windows下生成 VS 工程文件,以及 Ninja 文件。

什么是 gn

GN(Generate Ninja),它是 GYP 的替代工具。由于GN是用C 编写,比起用 python写的 GYP 快了很多。

什么是 cmake

相对于 gyp 和 gn, 大家可能对 cmake 更熟悉点。它也是一种可以产生跨平台工程文件和 makefile文件的编译工具集。 webrtc最开始也是使用的 cmake /scons 作为编译工具的,但后来发现产生工程文件和编译速度太慢,所以就自己写了一套工具(gyp/ninja)。

什么是 scons

scons 与 cmake是一类工具,可以产生跨平台的工程文件以及makefile文件。

什么是 ninja

ninja,它与 make 类似,也是一种编译控制工具,它可以根据用户的需求进行编译。

小结

从上面的介绍大家可以了解到, cmake/scons/gyp/gn 这几个工具是同一类的,可以产生跨平台的工程文件,以及编译控制文件(如 makefile 或 .ninja 文件);而 make/ninja 是同一类工具,用于根据用户的要求对源文件进行编译,可以将它们称为编译控制工具;而具体的编译工具是指的 gcc/ clang/ msvs等工具了。

上面的几个工具非常容易混淆,大家一定要仔细区别。谢谢!

0 人点赞