Having Python 3 isn't an absolute requirement but it makes the subsequent steps to install the dependencies easier.
Linux
Use the system package manager to install Python 3 and the venv module (on Debian and Ubuntu the package is python3-venv). A system-wide python3-pip install is optional if you follow the recommended virtual environment below: the virtual environment gets its own pip, which avoids touching the distribution's managed environment (PEP 668).
💬 Note: The
-yoption allowsapt installto run non-interactively.
Windows
Download the Python 3 installer from python.org and run it manually, or use the following PowerShell commands. Python 3.14.4 (64-bit Windows, latest stable release at the time) has been tested.
💬 Note: The
`is the PowerShell line continuation character.
Confirm this Python is available on the PATH. Try closing and reopening the terminal if not.
For manual builds, a virtual environment in the repository root (for example, .venv) is recommended. It isolates the Python environment used for Conan and other pip-installed build tools from the system interpreter, pins compatible tool versions on PATH, and on Linux avoids PEP 668 "externally managed" errors when using the system Python.
Linux
Windows
From PowerShell, use the following commands.
Or use Command Prompt instead.
To exit the virtual environment later, run deactivate (same on Linux and Windows).
The project requires CMake 3.17 or higher; dependencies may require a higher version.
There are x86_64 and arm64 packages for CMake 3.30.0 on the Python Package Index (PyPI) which have been tested.
Linux
Windows
Using Conan simplifies fetching, building, and installing the required C++ dependencies from Conan Center.
The project requires Conan 2.2 or higher; dependencies may require a higher version. Conan 2.28.0 (latest release at the time) has been tested.
Linux
The detected profile is displayed, along with some WARN messages. For example, the following profile has been tested.
Windows
You may wish to edit the detected profile. Conan Center prebuilt binaries target MSVC 193/194, not 195 (Visual Studio 2026). Pin MSVC 194 so conan install downloads packages instead of building from source, with compiler.version=194 and compiler.cppstd=17.
The following settings have been tested.
Linux
Prepare a build directory adjacent to the src directory.
To install the dependencies using Conan, use the following command.
💬 Note: Replace
<Release-or-Debug>with the necessary value. Passing--lockfile=src/conan.lockpins dependency versions persrc/conan.lock(Conan Centernmos-cpppackage graph). Do not pass-g CMakeToolchainor-g CMakeDeps;src/conanfile.pyalready generates them, and Conan fails if they are duplicated (for example when copying older command lines).
Use the following CMake command to configure the build.
💬 Note: Replace
<Release-or-Debug>with the necessary value. TheCMAKE_TOOLCHAIN_FILEpath is resolved relative to the top-levelsrcdirectory passed as the last argument.
Build the library and example application.
Windows
Prepare a build directory adjacent to the src directory.
To install the dependencies using Conan, use the following command.
💬 Note: The
`is the PowerShell line continuation character. In the Windows command prompt, use^instead. Replace<Release-or-Debug>with the necessary value. Passing--lockfile=src/conan.lockpins dependency versions persrc/conan.lock(Conan Centernmos-cpppackage graph). Do not pass-g CMakeToolchainor-g CMakeDeps;src/conanfile.pyalready generates them, and Conan fails if they are duplicated (for example when copying older command lines).
Repeat the command for both Debug and Release if required.
Use the following CMake command to configure the build.
Build the library and application with the following command or manually using the generated Visual Studio solution.
💬 Note: Replace
<Release-or-Debug>with the necessary value.
To build against a clone of nmos-cpp while using Conan to resolve Boost, cpprestsdk, Avahi or mDNSResponder, and other dependencies:
nmos-cpp in the same parent directory as nvnmos.Install Conan dependencies with the consumer option nmos_cpp_from_source=True and without the default lockfile, which is for the packaged nmos-cpp graph:
Linux
Windows
💬 Note: With
--lockfile="", versions of dependencies such as Boost and OpenSSL are not pinned. You may choose to create a lockfile fornmos_cpp_from_source=Trueinstalls (conan lock createper profile, thenconan lock merge), then pass--lockfile=<path>onconan install.
-DUSE_ADD_SUBDIRECTORY=ON to the cmake configure step. (If you followed step 1, you do not need -DNMOS_CPP_DIRECTORY=<path-to-nmos-cpp/Development>.)Linux
Install and run the Avahi Daemon.
💬 Note: Since Ubuntu 24.04, an init script is not provided for the Avahi daemon; run
avahi-daemon --daemonizeinstead.
Windows
Install and start the Bonjour Service.