該存儲庫包含一個CMAKE腳本的集合,可幫助您簡單地將Google的本機WebRTC實現嵌入您的項目中:
cmake_minimum_required ( VERSION 3.3)
project (sample)
find_package (LibWebRTC REQUIRED)
include ( ${LIBWEBRTC_USE_FILE} )
set ( SOURCE_FILES main.cpp)
add_executable (sample ${SOURCE_FILES} )
target_link_libraries (sample ${LIBWEBRTC_LIBRARIES} )如果您喜歡經典的方式,它還會產生pkg-config文件:
$ g++ `pkg-config --cflags LibWebRTC` main.cpp -o main `pkg-config --libs LibWebRTC`
下表顯示了該項目的當前狀態,包括受支持的平台和架構。
| x86 | x64 | 手臂 | ARM64 | |
| Linux | ✔ | ✔ | ||
|---|---|---|---|---|
| macos | - | ✔ | - | - |
| 視窗 | ✔ | ✔ |
depot_tools安裝內的解釋器) # apt-get install build-essential libglib2.0-dev libgtk2.0-dev libxtst-dev
libxss-dev libpci-dev libdbus-1-dev libgconf2-dev
libgnome-keyring-dev libnss3-dev libasound2-dev libpulse-dev
libudev-dev
Windows 7 x64或更高版本
Visual Studio 2015帶更新- 下載安裝程序
確保安裝以下組件:
Windows 10 SDK帶有用於Windows或Windows驅動程序套件10的調試工具,安裝在同一Windows 10 SDK安裝目錄中。
克隆存儲庫,創建一個輸出目錄,在其中瀏覽,然後運行cmake。
$ git clone https://github.com/aisouard/libwebrtc.git
$ cd libwebrtc
$ mkdir out
$ cd out
$ cmake ..
Windows用戶必須將Win64後綴添加到其Visual Studio Generator的名稱中,如果他們想為64位平台構建庫,他們將省略32位構建的庫,並相應地定義TARGET_CPU變量。
> cmake -G "Visual Studio 14 2015" -DTARGET_CPU=x86
> cmake -G "Visual Studio 14 2015 Win64"
然後,他們必須打開位於當前輸出目錄內部的libwebrtc.sln並構建ALL_BUILD項目。
UNIX用戶只需要運行以下make即可。
$ make
# make install
該庫將位於當前輸出目錄的lib文件夾中。 include文件夾將包含標頭文件。 CMAKE腳本將放置在lib/cmake/LibWebRTC目錄中。
如果您使用的是Xcode或Visual Studio,則可以簡單地在IDE的調試和發布配置之間切換。調試標誌將附加到發電機的參數上。
否則,您必須將CMAKE_BUILD_TYPE變量定義為Debug 。
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
在撰寫此讀書文件時,沒有適當的方法來檢測WEBRTC庫和標頭文件的任何安裝。同時,此CMAKE腳本生成並聲明了一個LibWebRTC軟件包,該軟件包將非常易於用於您的項目。
您要做的就是包括包裝,然後嵌入“使用文件”,該“使用文件”將自動找到所需的庫,定義正確的編譯標誌並包括目錄。
find_package (LibWebRTC REQUIRED)
include ( ${LIBWEBRTC_USE_FILE} )
target_link_libraries (my-app ${LIBWEBRTC_LIBRARIES} )還提供了pkg-config文件,您可以通過將LibWebRTC指定為軟件包名稱來獲得所需的編譯器和鏈接標誌。
$ pkg-config --cflags --libs LibWebRTC
默認情況下,最新的工作版本將默認情況下獲取,除非您決定通過將其將其設置為webrtc_revision cmake cmake變量來檢索特定的提交,否則將其設置為webrtc_branch_head變量。
$ cmake -DWEBRTC_REVISION=be22d51 ..
$ cmake -DWEBRTC_BRANCH_HEAD=refs/branch-heads/57 ..
如果設置了兩個變量,它將集中於獲取WebRTC_Revision中定義的提交。
Cmake將檢索depot_tools存儲庫的最新修訂版。它將獲得WEBRTC存儲庫的提交日期,然後結帳depot_tools到具有與WebRTC最近的日期的提交,以確保與gclient和其他工具具有很高的兼容性。
通過定義depot_tools_path變量,可以通過指定自己的depot_tools存儲庫來防止此行為。
$ cmake -DDEPOT_TOOLS_PATH=/opt/depot_tools ..
該庫將在同一主機的平台和架構上編譯並可用。這是一些CMAKE標誌,如果您需要執行交叉編譯,可能會很有用。
build_deb_package
僅在Linux下可用,生成Debian軟件包,默認為OFF。
build_rpm_package
僅在Linux下可用的Red Hat軟件包,默認為OFF。
build_tests
構建WEBRTC單元測試和模擬類,例如FakeAudioCaptureModule 。
build_sample
在sample文件夾中構建可執行文件。
depot_tools_path
將此變量設置為您自己的depot_tools目錄。這將防止Cmake獲取與所需的WEBRTC修訂版的匹配。
gn_extra_args
在gn gen --args參數中添加額外的參數。
ninja_args
執行ninja命令時要通過的論點。
target_os
目標操作系統,該值將在gn gen命令的--target_os參數內使用。該值必須是以下一個:
androidchromeosioslinuxmacnaclwintarget_cpu
目標體系結構,該值將在gn gen命令的--target_cpu參數內使用。該值必須是以下一個:
x86x64armarm64mipselwebrtc_branch_head
將分支頭參考設置為檢索,將其設置為最新的工作。如果設置了WebRTC_Revision ,則將忽略此變量。
webrtc_revision
設置特定的提交哈希進行結帳。
如果您希望修復錯誤,討論新功能或提出問題,請隨時打開問題。只要您的修改在三個主要的操作系統(Windows,MacOS和Linux)上工作,我就可以提取請求。
不要忘記將您的姓名和電子郵件地址放在AUTHORS文件中!您也可以在Twitter上與我聯繫以進行進一步討論。
非常感謝Alex Gouaillard博士是該項目的出色導師。
一切都始於他的“自動化libwebrtc build with cmake»博客文章,這對我來說是創建最簡單的方法來鏈接任何本機項目中的webrtc庫的絕佳來源。
Apache許可證2.0©Axel Isouard