webrtc現在使用 gn 來生成構建指令碼,使用 ninja 來構建。
gn 比 gyp 快多了,太多,你還沒眨個眼,就結束了。我們來大概介紹下編譯 webrtc 會用到的 gn 和 ninja 相關的知識。 想看編譯指南的,看這裡:ubuntu 14.04下編譯webrtc。
gn 的介紹在這裡:這個頁面還有到 gn 各種 reference 的鏈結。
使用 gn 生成 ninja 構建檔案的常用命令:
// 生成 debug 版本的構建檔案,預設配置注意,通過 --args 可以傳遞引數給 gn ,具體引數的含義,由 webrtc 的構建系統來解釋。比如 is_debug 選項,決定構建 debug 還是 release 版本。gn gen out/debug
// 生成 release 版本的構建檔案
gn gen out/release --args="is_debug=false"
如果有多個引數,可以這樣傳遞:
gn gen out/release --args="is_debug=false proprietary_codecs=true"通過--args指定多個引數時,引數之間用空格分隔。生成的引數,存放在 out/release 下的 args.gn 檔案中。你可以直接開啟該檔案檢視。
通過--args 指定的引數,會覆蓋 webrtc 構建系統中同名引數。
gn 支援為 webrtc 生成針對某個 ide 的工程檔案,通過 --ide 來指定。具體支援哪些 ide ,可以使用下列命令檢視:
gn gen --help寫作本文時,支援:
比如下列命令,生成支援 qtcreator 的專案檔案:
gn gen out/release --args="is_debug=false" --ide="qtcreator"我喜歡 qt ,所以以它為例了。再多說一句,生成的 qtcreator 專案檔案在 out/release/qtcreator_project 下面,只要開啟 qtcreator ,載入 all.creator 檔案即可。
如果你已經使用 gn gen 生成過構建檔案,想看看這個版本的構建檔案都指定了什麼引數,可以使用下面命令:
gn args out/release --list它會列出所有的 build arguments 和對應的文件,以及當前值。
如果你想檢視某個引數,可以使用下面的命令:
gn args out/release --list="is_debug"或者,執行下面的某個命令:
// 顯示 gn 支援的所有命令列選項,比如 --args,-vgn help switches
// 你可是對上面命令列出的每個 switch 使用 help 指令,
// 比如 gn help --args,
// 可以顯示 --args 這個 switch 的詳細幫助資訊
gn help --args
// 顯示 gn gen 的幫助資訊,比如 ide 選項
gn gen --help
記得我在編譯 skia 時介紹過 ninja ,那篇文章在這裡:ninja 的官網在這裡:
字尾為 ninja(*.ninja) 的檔案是 ninja 的 構建檔案。對 webrtc 來講,執行完 gn gen 之後,會在 out/release 下生成 build.ninja 檔案,可以把這個檔案看做是整個 webrtc 的「 makefile 」。它裡面呼叫了各個模組的 ninja 檔案。
要完整編譯 webrtc ,只要在 src 目錄執行下列命令:
ninja -c out/release-c 選項告訴 ninja ,進入 out/release 目錄來編譯。所以,它等同於:
cd out/release要編譯某個模組,可以在 ninja 命令後跟模組名字(build.ninja檔案中定義的構建目標,就像 makefile 中的構建目標一樣)。比如:ninja
// 構建 webrtc/pc使用下列命令可以檢視幫助:ninja pc
// 構建 webrtc/media
ninja media
ninja --helpninja 支援子工具,比如 clean ,用來清理一次構建。用法如下:
ninja -t clean如果要清理某個模組,可以這樣:
ninja -t clean pc
ninja -t list就先這樣吧,下次寫寫 gn 的專案檔案,再下次寫寫 ninja 檔案。
webrtc 和 rtp 協議 之sctp
webrtc和rtp 一 pion的datachannel示例 zoom公司大家其實都知道,會議的體驗很好,因為他們善用了datachannel,有興趣大家可以仔細研究,推敲,到了今天,技術和核心技術得不到大家的理解,很多人依然認為技術可以獲取,缺的是錢,事實上,兩個都缺。sctp協議可以適用tcp...
Linux之CentOS7安裝和解除安裝GNONE桌面
檢視當前的執行級別和可以安裝的group systemctl get default yum grouplist 如下圖 檢視安裝的包有哪些內容 yum group info graphical administration tools 安裝gnome桌面 yum y groups install ...
n2n的編譯和執行 配置
交叉編譯 cmake dcmake toolchain file cmake cmaketoolchainfilemingw32.cmake build 1.n2n 基於p2p的內網穿透方案。2.ubuntu linux下編譯 git clone apt get install cmake libs...