WebRTC中的編譯工具 gyp 、gn 與 ninja

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章