Repositori ini berisi kumpulan skrip cmake untuk membantu Anda menyematkan implementasi WEBRTC asli Google di dalam proyek Anda sesederhana ini:
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} ) Ini juga menghasilkan file pkg-config jika Anda lebih suka cara klasik:
$ g++ `pkg-config --cflags LibWebRTC` main.cpp -o main `pkg-config --libs LibWebRTC`
Tabel berikut menampilkan keadaan saat ini dari proyek ini, termasuk platform dan arsitektur yang didukung.
| x86 | x64 | lengan | 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 atau lebih baru
Visual Studio 2015 dengan Pembaruan - Unduh Penginstal
Pastikan Anda menginstal komponen berikut:
Windows 10 SDK dengan alat debugging untuk Windows atau Windows Driver Kit 10 diinstal di direktori instalasi Windows 10 SDK yang sama.
Kloning repositori, buat direktori output, telusuri di dalamnya, lalu jalankan cmake.
$ git clone https://github.com/aisouard/libwebrtc.git
$ cd libwebrtc
$ mkdir out
$ cd out
$ cmake ..
Pengguna Windows harus menambahkan akhiran Win64 ke nama generator studio visual mereka jika mereka ingin membangun perpustakaan untuk platform 64-bit, mereka akan menghilangkannya untuk bangunan 32-bit dan menentukan variabel TARGET_CPU yang sesuai.
> cmake -G "Visual Studio 14 2015" -DTARGET_CPU=x86
> cmake -G "Visual Studio 14 2015 Win64"
Maka mereka harus membuka libwebrtc.sln yang terletak di dalam direktori output saat ini dan membangun proyek ALL_BUILD .
Pengguna UNIX hanya perlu menjalankan perintah make berikut.
$ make
# make install
Perpustakaan akan terletak di dalam folder lib dari direktori output saat ini. Folder include akan berisi file header. Script CMake akan ditempatkan di dalam direktori lib/cmake/LibWebRTC .
Jika Anda menggunakan Xcode atau Visual Studio, Anda dapat dengan mudah beralih antara debug dan rilis konfigurasi dari IDE Anda. Bendera debugging akan ditambahkan ke parameter generator.
Jika tidak, Anda harus mendefinisikan variabel CMAKE_BUILD_TYPE untuk Debug .
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
Pada saat penulisan file readme ini, tidak ada cara yang tepat untuk mendeteksi instalasi perpustakaan WebRTC dan file header. Sementara itu, skrip CMake ini menghasilkan dan menyatakan paket LibWebRTC yang akan sangat mudah digunakan untuk proyek Anda.
Yang harus Anda lakukan adalah menyertakan paket, lalu menanamkan "file gunakan" yang secara otomatis akan menemukan pustaka yang diperlukan, menentukan bendera kompilasi yang tepat dan menyertakan direktori.
find_package (LibWebRTC REQUIRED)
include ( ${LIBWEBRTC_USE_FILE} )
target_link_libraries (my-app ${LIBWEBRTC_LIBRARIES} ) File PKG-Config juga disediakan, Anda dapat memperoleh bendera kompiler dan tautan yang diperlukan dengan menentukan LibWebRTC sebagai nama paket.
$ pkg-config --cflags --libs LibWebRTC
Rilis kerja terbaru akan diambil secara default, kecuali jika Anda memutuskan untuk mengambil komit tertentu dengan mengatur hash ke variabel cmake WebRTC_Revision , atau kepala cabang lain ke variabel WebRTC_BRANCH_HEAD .
$ cmake -DWEBRTC_REVISION=be22d51 ..
$ cmake -DWEBRTC_BRANCH_HEAD=refs/branch-heads/57 ..
Jika kedua variabel ditetapkan, itu akan fokus untuk mengambil komit yang didefinisikan di dalam webrtc_revision .
CMake akan mengambil revisi terbaru dari repositori depot_tools . Ini akan mendapatkan tanggal komit Repositori WebRTC, kemudian check-out depot_tools ke komit yang memiliki tanggal terdekat dengan WebRTC, untuk memastikan kompatibilitas tinggi dengan gclient dan alat lainnya.
Dimungkinkan untuk mencegah perilaku ini dengan menentukan lokasi ke repositori depot_tools Anda sendiri dengan mendefinisikan variabel depot_tools_path .
$ cmake -DDEPOT_TOOLS_PATH=/opt/depot_tools ..
Perpustakaan akan disusun dan dapat digunakan pada platform dan arsitektur host yang sama. Berikut adalah beberapa bendera CMake yang bisa berguna jika Anda perlu melakukan kompilasi silang.
Build_deb_package
Hasilkan Paket Debian, default untuk dimatikan, hanya tersedia di bawah Linux.
Build_rpm_package
Hasilkan Paket Red Hat, default untuk dimatikan, hanya tersedia di bawah Linux.
Build_tests
Bangun tes unit WebRTC dan kelas -kelas yang diejek seperti FakeAudioCaptureModule .
Build_sample
Bangun yang dapat dieksekusi yang terletak di dalam folder sample .
Depot_tools_path
Atur variabel ini ke direktori depot_tools Anda sendiri. Ini akan mencegah CMake mengambil satu yang cocok dengan revisi WebRTC yang diinginkan.
Gn_extra_args
Tambahkan argumen tambahan ke parameter gn gen --args .
Ninja_args
Argumen untuk lulus saat menjalankan perintah ninja .
Target_os
Sistem Operasi Target, nilainya akan digunakan di dalam argumen --target_os dari perintah gn gen Nilainya harus menjadi salah satu dari yang berikut:
androidchromeosioslinuxmacnaclwinTarget_cpu
Arsitektur target, nilainya akan digunakan di dalam argumen --target_cpu dari perintah gn gen Nilainya harus menjadi salah satu dari yang berikut:
x86x64armarm64mipselWebrtc_branch_head
Atur Ref Branch Head untuk Retrieve, diatur ke yang terbaru. Variabel ini diabaikan jika WEBRTC_REVISION diatur.
WEBRTC_REVISION
Tetapkan hash komit khusus untuk check-out.
Jangan ragu untuk membuka masalah jika Anda ingin bug diperbaiki, membahas fitur baru atau mengajukan pertanyaan. Saya terbuka untuk menarik permintaan, selama modifikasi Anda bekerja pada tiga OS utama (Windows, MacOS dan Linux).
Jangan lupa untuk meletakkan nama dan alamat email Anda di dalam file AUTHORS ! Anda juga dapat menghubungi saya di Twitter untuk diskusi lebih lanjut.
Terima kasih banyak kepada Dr. Alex Gouaillard karena telah menjadi mentor yang sangat baik untuk proyek ini.
Semuanya dimulai dari artikel blog «otomatisasi LibWebrtc Build dengan CMake», yang merupakan sumber inspirasi bagi saya untuk menciptakan cara termudah untuk menautkan perpustakaan WebRTC dalam proyek asli apa pun.
Lisensi Apache 2.0 © Axel Isouard