Этот репозиторий содержит набор сценариев 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 Driver Kit 10 установлен в том же каталоге установки Windows 10 SDK.
Клонируйте репозиторий, создайте выходной каталог, просмотрите его, затем запустите Cmake.
$ git clone https://github.com/aisouard/libwebrtc.git
$ cd libwebrtc
$ mkdir out
$ cd out
$ cmake ..
Пользователи Windows должны добавить суффикс Win64 в свое имя генератора Visual Studio Если они хотят построить библиотеку для 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 ..
На момент написания этого файла README нет правильного способа обнаружить какую -либо установку библиотеки 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 или еще одну реферизинную реферизации ветвей в переменную 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 , определив переменную Depot_tools_path .
$ cmake -DDEPOT_TOOLS_PATH=/opt/depot_tools ..
Библиотека будет составлена и пригодна для использования на платформе и архитектуре одного хоста. Вот несколько флагов Cmake, которые могут быть полезны, если вам нужно выполнить перекрестную компилирование.
Build_deb_package
Создайте пакет Debian, по умолчанию отключен, доступен только в Linux.
Build_rpm_package
Создайте пакет Red Hat, по умолчанию, доступны только в Linux.
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
Целевая операционная система, значение будет использоваться в аргументе --target_os команды gn gen Значение должно быть одним из следующих:
androidchromeosioslinuxmacnaclwinTarget_cpu
Целевая архитектура, значение будет использоваться в аргументе --target_cpu команды gn gen Значение должно быть одним из следующих:
x86x64armarm64mipselWebrtc_branch_head
Установите REF The Head Head для извлечения, он установлен на последнюю работающую. Эта переменная игнорируется, если установлена webrtc_revision .
Webrtc_revision
Установите конкретный хэш коммита на выезд.
Не стесняйтесь открывать проблему, если вы хотите, чтобы ошибка была исправлена, обсудить новую функцию или задать вопрос. Я открыт для получения запросов, пока ваши модификации работают над тремя основными ОС (Windows, MacOS и Linux).
Не забудьте поместить свое имя и адрес электронной почты в файл AUTHORS ! Вы также можете связаться со мной в Твиттере для дальнейшего обсуждения.
Большое спасибо доктору Алексу Гуайлларду за то, что он был отличным наставником для этого проекта.
Все началось с его «Автоматизации Libwebrtc Build с статьей в блоге Cmake», которая стала для меня отличным источником вдохновения, чтобы создать самый простой способ связать библиотеку WEBRTC в любом местном проекте.
Apache License 2.0 © Axel Isouard