1.1. Building with the Proximie SDK
1.1.1. Build prerequisites
Ubuntu
Requires Ubuntu 22.04+
Tooling
This SDK has been developed using:
CMake |
3.26.4 |
g++ |
11.4.0 |
clang-tidy |
LLVM version 14.0.0 |
Basic installation
Package |
Purpose |
Installation |
---|---|---|
OpenSSL |
Required for HTTPS/wss |
|
GStreamer |
Audio & video streaming |
GStreamer installation on Ubuntu (will require sudo) |
Other GStreamer dependencies |
|
Boost
The project uses a recent version of Boost (1.86). For Ubuntu at least we need to build the version we need, but the process is well documented for the various platforms.
Briefly:
Don’t use apt install, this will give you a version that is too old.
Install the required build tools (some or all of these may already be present):
sudo apt install build-essential g++ python3-dev autotools-dev libicu-dev libbz2-dev
You can download the latest Boost library from https://www.boost.org/users/download/ or choose an older/specific version from https://www.boost.org/users/history/.
Extract the Unix tar archive, which creates a folder you can build from (e.g. boost_1_86_0)
cd into this new folder, then bootstrap the B2 (Boost Build) engine:
./bootstrap.sh --prefix=/usr/ gcc
Next, execute b2 to perform build checks and to build the Boost library:
./b2
Now you can install the Boost library using the following command:
sudo ./b2 install
1.1.2. Integrating Proximie SDK
C++
The SDK is compiled with C++ 14 to maximise compatibility balanced with modern C++ features. Future releases of the SDK should support richer C++ features such as C++ 20 coroutines and concepts.
CMake configuration
This section outlines the CMake commands used to build the SDK library, which will be required to link with it.
Packages
find_package(Boost 1.86 REQUIRED COMPONENTS filesystem url)
find_package(OpenSSL REQUIRED)
find_package(PkgConfig)
pkg_search_module(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
pkg_check_modules(GSTREAMER REQUIRED IMPORTED_TARGET gstreamer-1.0)
pkg_check_modules(GST_APP REQUIRED IMPORTED_TARGET gstreamer-app-1.0)
pkg_check_modules(GST_SDP REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0)
pkg_check_modules(GST_VIDEO REQUIRED IMPORTED_TARGET gstreamer-video-1.0)
pkg_check_modules(GST_WEBRTC REQUIRED IMPORTED_TARGET gstreamer-webrtc-1.0)
target_include_directories
Add the SDK include folder to the target_include_directories
command.
target_compile_definitions
No additional compile definitions are required.
target_link_libraries
Add the following to target_link_libraries
to link the packages added earlier:
${Boost_LIBRARIES}
OpenSSL::SSL OpenSSL::Crypto OpenSSL::applink
PkgConfig::GLIB
PkgConfig::GSTREAMER
PkgConfig::GST_APP
PkgConfig::GST_SDP
PkgConfig::GST_VIDEO
PkgConfig::GST_WEBRTC