Este repositório contém uma coleção de scripts CMake para ajudá -lo a incorporar a implementação do WebRTC nativo do Google em seu projeto tão simples assim:
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} ) Ele também produz um arquivo pkg-config se você preferir a maneira clássica:
$ g++ `pkg-config --cflags LibWebRTC` main.cpp -o main `pkg-config --libs LibWebRTC`
A tabela a seguir exibe o estado atual deste projeto, incluindo plataformas e arquiteturas suportadas.
| x86 | x64 | braço | ARM64 | |
| Linux | ✔ | ✔ | ||
|---|---|---|---|---|
| macos | - | ✔ | - | - |
| Windows | ✔ | ✔ |
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 ou mais tarde
Visual Studio 2015 com atualizações - Baixe o instalador
Certifique -se de instalar os seguintes componentes:
Windows 10 SDK com ferramentas de depuração para o Windows ou Windows Driver Kit 10 instalado no mesmo diretório de instalação do Windows 10 SDK.
Clone o repositório, crie um diretório de saída, navegue dentro dele e execute o cmake.
$ git clone https://github.com/aisouard/libwebrtc.git
$ cd libwebrtc
$ mkdir out
$ cd out
$ cmake ..
Os usuários do Windows devem adicionar o sufixo Win64 ao nome do gerador do Visual Studio, se quiserem criar a biblioteca para plataformas de 64 bits, eles o omitem para compilações de 32 bits e definirão a variável TARGET_CPU de acordo.
> cmake -G "Visual Studio 14 2015" -DTARGET_CPU=x86
> cmake -G "Visual Studio 14 2015 Win64"
Em seguida, eles terão que abrir o libwebrtc.sln localizado dentro do diretório de saída atual e criar o projeto ALL_BUILD .
Os usuários do UNIX precisarão apenas executar os seguintes comandos make .
$ make
# make install
A biblioteca estará localizada dentro da pasta lib do diretório de saída atual. A pasta include conterá os arquivos do cabeçalho. Os scripts CMake serão colocados dentro do diretório lib/cmake/LibWebRTC .
Se você estiver usando o Xcode ou o Visual Studio, basta alternar entre a depuração e a configuração de liberação do seu IDE. Os sinalizadores de depuração serão anexados aos parâmetros do gerador.
Caso contrário, você deve definir a variável CMAKE_BUILD_TYPE para Debug .
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
No momento da redação deste arquivo ReadMe, não há maneira adequada de detectar qualquer instalação da biblioteca WebRTC e arquivos de cabeçalho. Enquanto isso, esse script cmake gera e declara um pacote LibWebRTC que será muito fácil de usar para seus projetos.
Tudo o que você precisa fazer é incluir o pacote e incorporar o "arquivo de uso" que encontrará automaticamente as bibliotecas necessárias, definirá os sinalizadores de compilação adequados e incluirão diretórios.
find_package (LibWebRTC REQUIRED)
include ( ${LIBWEBRTC_USE_FILE} )
target_link_libraries (my-app ${LIBWEBRTC_LIBRARIES} ) Um arquivo PKG-Config também é fornecido, você pode obter os sinalizadores de compilador e vinculador necessário especificando LibWebRTC como o nome do pacote.
$ pkg-config --cflags --libs LibWebRTC
A versão mais recente de trabalho será buscada por padrão, a menos que você decida recuperar um comprometimento específico, definindo o hash na variável webrtc_revision cmake, ou outro chefe de ramificação ref para a variável webrtc_branch_head .
$ cmake -DWEBRTC_REVISION=be22d51 ..
$ cmake -DWEBRTC_BRANCH_HEAD=refs/branch-heads/57 ..
Se ambas as variáveis estiverem definidas, ela se concentrará em buscar o compromisso definido dentro do webrtc_revision .
O CMAKE recuperará a revisão mais recente do repositório depot_tools . Ele receberá a data de comprometimento do repositório WebRTC e o check-out depot_tools para a confirmação com a data mais próxima dos WebRTC's, a fim de garantir uma alta compatibilidade com as ferramentas gclient e outras.
É possível impedir esse comportamento especificando o local ao seu próprio repositório depot_tools , definindo a variável depot_tools_path .
$ cmake -DDEPOT_TOOLS_PATH=/opt/depot_tools ..
A biblioteca será compilada e utilizável na plataforma e arquitetura do mesmo host. Aqui estão alguns sinalizadores CMake que podem ser úteis se você precisar executar o cruzamento.
Build_deb_package
Gere o pacote Debian, padrão para desligar, disponível apenas no Linux.
Build_rpm_package
Gere o pacote Red Hat, os padrões para desligar, disponível apenas no Linux.
Build_tests
Construa testes de unidade WebRTC e ridicularizou classes como FakeAudioCaptureModule .
Build_sample
Construa um executável localizado dentro da pasta de sample .
Depot_tools_path
Defina essa variável para o seu próprio diretório depot_tools . Isso impedirá que Cmake busque o que corresponde à revisão WebRTC desejada.
GN_EXTRA_ARGS
Adicione argumentos extras ao parâmetro gn gen --args .
Ninja_args
Argumentos para passar ao executar o comando ninja .
Target_OS
Sistema operacional de destino, o valor será usado dentro do argumento --target_os do comando gn gen O valor deve ser um dos seguintes:
androidchromeosioslinuxmacnaclwinTarget_cpu
Arquitetura de destino, o valor será usado dentro do argumento --target_cpu do comando gn gen O valor deve ser um dos seguintes:
x86x64armarm64mipselWebrtc_branch_head
Defina a referência do chefe da filial para recuperar, ele está definido como o mais recente funcionando. Essa variável é ignorada se o webrtc_revision estiver definido.
Webrtc_revision
Defina um hash de comprometimento específico para check-out.
Sinta -se à vontade para abrir um problema se desejar ser corrigido um bug, para discutir um novo recurso ou fazer uma pergunta. Estou aberto a solicitações, desde que suas modificações estejam trabalhando no três principais sistemas operacionais (Windows, MacOS e Linux).
Não se esqueça de colocar seu nome e endereço de e-mail dentro do arquivo AUTHORS ! Você também pode entrar em contato comigo no Twitter para uma discussão mais aprofundada.
Muito obrigado ao Dr. Alex Gouaillard por ser um excelente mentor para este projeto.
Tudo começou a partir de seu artigo de blog "Automating LibWebrtc Build With Cmake", que foi uma ótima fonte de inspiração para eu criar a maneira mais fácil de vincular a biblioteca WebRTC em qualquer projeto nativo.
Apache License 2.0 © Axel Isouard