该存储库包含一个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