Building the Library

Prerequisites

The library currently supports Linux hosts only; macOS and Windows support is still under development. The “experimental” sections below for macOS and Windows document our development build settings, but they are not yet supported, and neither macOS nor Windows hosts are currently usable. When the library builds correctly and passes testing with VXSDR devices on a new host OS, we will update the build settings below and remove the “experimental” notation.

A C++ compiler and standard library supporting C++20, and the CMake cross-platform build system version 3.16 or higher are required to build the VXSDR host library. (The C++20 requirement can currently be satisfied by gcc 9.4 or later, or by clang 10.0 or later; we do not now require all of the features introduced in C++20.)

The library itself depends on Boost 1.67 or higher; this is because it uses boost::lockfree queues and the boost::asio networking interface.

When logging from within the library is enabled (the default) the library also depends on spdlog version 1.5 or higher. Logging from within the library may be disabled by running CMake with -DVXSDR_ENABLE_LOGGING=OFF, which removes the dependency on spdlog.

To build the Python interface, a Python 3 installation, including the Python include files, and PyBind11 are required. If these are not present, the Python interface will not be built. The Python interface is built by default; to disable it, run CMake with -DVXSDR_PYTHON_BINDINGS=OFF, which removes the dependencies on Python and its development files.

Installing prerequisites on Ubuntu 20.04 or later

sudo apt install g++ make git cmake libboost-all-dev libspdlog-dev
sudo apt install python3-dev pybind11-dev

Installing prerequisites on Fedora 35 or later

sudo dnf install gcc-c++ make git cmake boost-devel spdlog-devel
sudo dnf install python3-devel pybind11-devel

Installing prerequisites on macOS (experimental)

Install development tools

xcode-select --install

Install Brew from https://brew.sh

brew install cmake boost spdlog
brew install pybind11

Installing prerequisites on Windows (experimental)

Install Visual Studio from https://visualstudio.microsoft.com/downloads

Install Git for Windows from https://git-scm.com/download/win

Run the Visual Studio installer, selecting “Desktop development with C++” as the option (you do not need any .NET or Azure components to build the VXSDR library).

The latest versions of Visual Studio include git and vcpkg, but they are configured for use from inside the Visual Studio GUI. For a simple build, we recommend using the command-line procedure shown below.

git clone https://github.com/microsoft/vcpkg
vcpkg\bootstrap-vcpkg.bat
vcpkg\vcpkg install vcpkg-cmake:x64-windows
vcpkg\vcpkg install boost-program-options:x64-windows boost-asio:x64-windows boost-lockfree:x64-windows
vcpkg\vcpkg install spdlog:x64-windows pybind11:x64-windows

Downloading, building, and installing the library

git clone [email protected]:vesperix/vxsdr_lib.git
cd vxsdr_lib
cmake -B build
cmake --build build
sudo cmake --install build

Linking your program to the host library

The host library will be installed in the default location for your system by CMake. It is named libvxsdr.(suffix), where (suffix) depends on the operating system and the file type.

For example, on a Linux system, the dynamic library libvxsdr.so is installed by default. You can use the normal command to add a link library (for example, -lvxsdr for gcc and clang) to link with the VXSDR host library.