GYP (Generate Your Project) ,用于产生跨平台的项目文件。如在 Mac 下产生 XCode 的工程文件,在Windows下生成 VS 工程文件,以及 Ninja 文件。
GN(Generate Ninja),它是 GYP 的替代工具。由于GN是用C++编写,比起用 python写的 GYP 快了很多。
相对于 gyp 和 gn, 大家可能对 cmake 更熟悉点。它也是一种可以产生跨平台工程文件和 makefile文件的编译工具集。 webrtc最开始也是使用的 cmake /scons 作为编译工具的,但后来发现产生工程文件和编译速度太慢,所以就自己写了一套工具(gyp/ninja)。
scons 与 cmake是一类工具,可以产生跨平台的工程文件以及makefile文件。
ninja,它与 make 类似,也是一种编译控制工具,它可以根据用户的需求进行编译。
从上面的介绍大家可以了解到, cmake/scons/gyp/gn 这几个工具是同一类的,可以产生跨平台的工程文件,以及编译控制文件(如 makefile 或 .ninja 文件);而 make/ninja 是同一类工具,用于根据用户的要求对源文件进行编译,可以将它们称为编译控制工具;而具体的编译工具是指的 gcc/ clang/ msvs等工具了。
上面的几个工具非常容易混淆,大家一定要仔细区别。谢谢!