什麼是 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等工具了。