Build Instructions
The following are instructions for compiling Jacktrip from source. Compiling from source is the best way to keep up with the latest changes, both stable and experimental. For quicker ways to install Jacktrip, go to README.md in the root directory of the project.
Dependencies
- C++ compiler
- Meson
- Qt5, or Qt6 (required for Virtual Studio)
Optional:
- JACK (preferred) or RtAudio (for clients only)
- help2man for generating the manpage
Fedora (Qt5)
dnf install qt5-qtbase-devel qt5-qtnetworkauth-devel qt5-qtwebsockets-devel qt5-qtquickcontrols2-devel qt5-qtsvg-devel
dnf groupinstall "C Development Tools and Libraries"
dnf groupinstall "Development Tools"
dnf install "pkgconfig(jack)" rtaudio-devel git help2man python3-jinja2
Fedora (Qt6)
dnf install qt6-qtbase-devel qt5-qtnetworkauth-devel qt5-qtwebsockets-devel qt5-qtquickcontrols2-devel qt5-qtsvg-devel qt6-qtwebengine-devel qt6-qtwebchannel-devel qt6-qt5compat-devel qt6-qtshadertools-devel
dnf groupinstall "C Development Tools and Libraries"
dnf groupinstall "Development Tools"
dnf install "pkgconfig(jack)" rtaudio-devel git help2man python3-jinja2
Clone the git repo with submodules and run ./build install
in the project
directory or use QtCreator to compile.
Ubuntu and Debian/Raspbian (Qt5)
apt install --no-install-recommends build-essential autoconf automake libtool make libjack-jackd2-dev git help2man python3-jinja2
apt install qtbase5-dev qtbase5-dev-tools qtchooser qt5-qmake qttools5-dev libqt5svg5-dev libqt5websockets5-dev qtdeclarative5-dev qtquickcontrols2-5-dev
Ubuntu and Debian/Raspbian (Qt6)
apt install --no-install-recommends build-essential autoconf automake libtool make libjack-jackd2-dev git help2man libclang-dev libdbus-1-dev libdbus-1-dev python3-jinja2
apt install -y libqt6core6 libqt6gui6 libqt6network6 libqt6widgets6 libqt6qml6 libqt6qmlcore6 libqt6quick6 libqt6quickcontrols2-6 libqt6svg6 libqt6webchannel6 libqt6webengine6-data libqt6webenginecore6 libqt6webenginecore6-bin libqt6webenginequick6 libqt6websockets6 libqt6shadertools6 qt6-qpa-plugins qml6-module-qtquick-controls qml6-module-qtqml-workerscript qml6-module-qtquick-templates qml6-module-qtquick-layouts qml6-module-qt5compat-graphicaleffects qml6-module-qtwebchannel qml6-module-qtwebengine qml6-module-qtquick-window
apt install qt6-base-dev qt6-base-dev-tools qmake6 qt6-tools-dev qt6-declarative-dev qt6-webengine-dev qt6-webview-dev qt6-webview-plugins libqt6svg6-dev libqt6websockets6-dev libqt6core5compat6-dev libqt6shadertools6-dev libgl1-mesa-dev
# for GUI builds
apt install libfreetype6-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libx11-xcb-dev libdrm-dev libglu1-mesa-dev libwayland-dev libwayland-egl1-mesa libgles2-mesa-dev libwayland-server0 libwayland-egl-backend-dev libxcb1-dev libxext-dev libfontconfig1-dev libxrender-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev '^libxcb.*-dev' libxcb-render-util0-dev libxcomposite-dev libgtk-3-dev
apt install librtaudio-dev # if building with RtAudio
Clone the git repo with submodules and run ./build install
in the project
directory or use QtCreator to compile.
Building and Installation instructions
For other Linux distributions, install the dependencies listed above.
To clone the repo in the Terminal:
$ git clone --recurse-submodules https://github.com/jacktrip/jacktrip.git
--recurse-submodules
to also get the submodules!
Next, navigate to the cloned repository:
$ cd jacktrip
JackTrip uses meson. To configure a build directory, use meson setup
with
the following parameters:
-
rtaudio
: Enabled this to build with support for the RtAudio backend. If an existing installation is found, it will be used. Otherwise, meson uses a subproject to download and install the latest supported release. JackTrip supports both RtAudio v5 and v6. -
jack
: Enable this to link directly with libraries for the Jack Audio Toolkit. JackTrip will fail if these cannot be found at runtime. -
weakjack
: Enable this to build with support for the Jack Audio Toolkit, with support for dynamically loading the libraries at runtime. JackTrip will still work if they cannot be found. This requiresrtaudio
and uses a git submodule. -
nogui
: Build without support for a graphical user interface (this also disables support for Virtual Studio). Only basic command line features will be included. This requires fewer dependencies, and supports static builds. -
novs
: Build without support for Virtual Studio. Virtual Studio requires Qt6 with the WebEngine and WebChannel libraries installed. -
vsftux
: Skip the "Yes" / "No" first time run screen asking users if they would like to use the Virtual Studio interface. Classic mode can still be selected at startup, and can be used at any time. -
noupdater
: Build without support for automatic updates. This is implied and has no effect when building for Linux. -
nofeedback
: Build without support for feedback detection. This feature is optional, and uses the SimpleFFT third party library. -
profile
: Choose build profile / Sets desktop id accordingly -
qtversion
: Choose to build with either Qt5 or Qt6 -
buildinfo
: Additional info used to describe the build
For example:
$ meson setup -Drtaudio=enabled builddir
To build JackTrip, run:
$ meson compile -C builddir
To install JackTrip, run:
$ meson install -C builddir
# enter your password when prompted
Building with Docker
You can also build JackTrip using Docker, which especially makes it easier to build for alternative architectures. The following build arguments are available:
- BUILD_CONTAINER - Debian based container image to build with
- MESON_ARGS - arguments to build using meson
- QT_DOWNLOAD_URL - path to qt6 download (optional)
For example:
amd64 dynamic
docker buildx build --target=artifact -f linux/Dockerfile.build --output type=local,dest=./ \
--platform linux/amd64 --build-arg BUILD_CONTAINER=ubuntu:22.04 \
--build-arg MESON_ARGS="-Ddefault_library=shared -Drtaudio=enabled -Drtaudio:jack=disabled -Drtaudio:default_library=static -Drtaudio:alsa=enabled -Drtaudio:pulse=enabled -Drtaudio:werror=false" .
amd64 static
docker buildx build --target=artifact -f linux/Dockerfile.build --output type=local,dest=./ \
--platform linux/amd64 --build-arg BUILD_CONTAINER=ubuntu:20.04 \
--build-arg MESON_ARGS="-Ddefault_library=static -Drtaudio=enabled -Drtaudio:jack=disabled -Drtaudio:default_library=static -Drtaudio:alsa=enabled -Drtaudio:pulse=disabled -Drtaudio:werror=false -Dnogui=true" \
--build-arg QT_DOWNLOAD_URL=https://files.jacktrip.org/contrib/qt/qt-6.5.3-static-linux-amd64.tar.gz .
arm64 dynamic
docker buildx build --target=artifact -f linux/Dockerfile.build --output type=local,dest=./ \
--platform linux/arm64 --build-arg BUILD_CONTAINER=ubuntu:22.04 \
--build-arg MESON_ARGS="-Ddefault_library=shared -Drtaudio=enabled -Drtaudio:jack=disabled -Drtaudio:default_library=static -Drtaudio:alsa=enabled -Drtaudio:pulse=enabled -Drtaudio:werror=false" .
arm64 static
docker buildx build --target=artifact -f linux/Dockerfile.build --output type=local,dest=./ \
--platform linux/arm64 --build-arg BUILD_CONTAINER=ubuntu:20.04 \
--build-arg MESON_ARGS="-Ddefault_library=static -Drtaudio=enabled -Drtaudio:jack=disabled -Drtaudio:default_library=static -Drtaudio:alsa=enabled -Drtaudio:pulse=disabled -Drtaudio:werror=false -Dnogui=true" \
--build-arg QT_DOWNLOAD_URL=https://files.jacktrip.org/contrib/qt/qt-6.5.3-static-linux-arm64.tar.gz .
arm32 static
docker buildx build --target=artifact -f linux/Dockerfile.build --output type=local,dest=./ \
--platform linux/arm/v7 --build-arg BUILD_CONTAINER=debian:buster \
--build-arg MESON_ARGS="-Ddefault_library=static -Drtaudio=enabled -Drtaudio:jack=disabled -Drtaudio:default_library=static -Drtaudio:alsa=enabled -Drtaudio:pulse=disabled -Drtaudio:werror=false -Dnogui=true -Dcpp_link_args='-no-pie'" \
--build-arg QT_DOWNLOAD_URL=https://files.jacktrip.org/contrib/qt/qt-5.15.13-static-linux-arm32.tar.gz .
Verification
If you have installed jacktrip, from anywhere in the Terminal, type:
$ jacktrip -v
If you have compiled from source without installing, in the /builddir
directory type:
$ ./jacktrip -v
If you see something like this, you have successfully installed JackTrip:
JackTrip VERSION: 2.x.x
Copyright (c) 2008-2020 Juan-Pablo Caceres, Chris Chafe.
SoundWIRE group at CCRMA, Stanford University
Running Two Versions of JackTrip in Parallel
One level above the project directory of your current JackTrip installation, clone the JackTrip repository again in another directory (e.g. jacktrip-1.x.x
):
$ git clone --recurse-submodules https://github.com/jacktrip/jacktrip.git jacktrip-1.x.x
You now have two separate folders side by side: the new version in the jacktrip-1.x.x folder and the original one in the jacktrip folder. To build the new version without installing it:
$ cd jacktrip-1.x.x
$ ./build
To experiment with the new version of JackTrip, enter builddir/build directory and check the JackTrip version:
$ cd builddir
$ ./jacktrip -v
You can use JackTrip from this directory, e.g.:
$ ./jacktrip -C serveraddress
You can switch back and forth between different JackTrip versions by running them in their respective build directories.
Hint: If you lose track of where you are, this command will show your present working directory:
$ pwd
The new version's directory structure might look like this: jacktrip-1.x.x/builddir
and the old version jacktrip/builddir
.