docs/Building-Transmission.md
The source code for both official and nightly releases can be found on our download page.
While the prerequisites for running the app are:
The actual software prerequisites for building the app are based on GitHub Actions macos-14:
Building the project on Mac requires the source to be retrieved from GitHub. Pre-packaged source code will not compile.
git clone --recurse-submodules https://github.com/transmission/transmission Transmission
If building from source is too daunting for you, check out the nightly builds. (Note: These are untested snapshots. Use them with care.)
Transmission has an Xcode project file for building in Xcode.
Build the app:
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -t transmission-mac
open ./build/macosx/Transmission.app
Install GTK and build the app:
brew install gtk4 gtkmm4
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_GTK=ON -DENABLE_MAC=OFF
cmake --build build -t transmission-gtk
./build/gtk/transmission-gtk
Install QT and build the app:
brew install qt
brew services start dbus
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_QT=ON -DENABLE_MAC=OFF
cmake --build build -t transmission-qt
./build/qt/transmission-qt
On Debian, you can build transmission with a few dependencies on top of a base installation.
For building transmission-daemon you will need basic dependencies:
$ sudo apt install build-essential cmake git libcurl4-openssl-dev
These packages are not mandatory for a working binary. Transmission brings its own libraries if they aren't installed, except for libsystemd-dev.
$ sudo apt install libb64-dev libdeflate-dev libevent-dev libminiupnpc-dev libnatpmp-dev libsystemd-dev
You likely want to install transmission as a native GUI application. There are two options, GTK and Qt.
GTK 3 client:
$ sudo apt install gettext libgtkmm-3.0-dev
GTK 4 client:
$ sudo apt install gettext libgtkmm-4.0-dev
Qt5 client:
$ sudo apt install libqt5svg5-dev qttools5-dev
Qt6 client:
$ sudo apt install qt6-svg-dev qt6-tools-dev
Then you can begin building.
On Debian, you can build transmission with a few dependencies on top of a base installation.
For building transmission-daemon you will need basic dependencies:
$ sudo apt install build-essential cmake git libcurl4-openssl-dev libssl-dev
These packages are not mandatory for a working binary. Transmission brings its own libraries if they aren't installed, except for libsystemd-dev.
$ sudo apt install libb64-dev libdeflate-dev libevent-dev libminiupnpc-dev libnatpmp-dev libpsl-dev libsystemd-dev
You likely want to install transmission as a native GUI application. There are two options, GTK and Qt.
GTK 3 client:
$ sudo apt install gettext libgtkmm-3.0-dev
Qt5 client:
$ sudo apt install libqt5svg5-dev qttools5-dev
Qt6 client:
$ sudo apt install qt6-svg-dev qt6-tools-dev
Then you can begin building.
On Ubuntu, you can install the required development tools for GTK with this command:
$ sudo apt-get install build-essential automake autoconf libtool pkg-config intltool libcurl4-openssl-dev libglib2.0-dev libevent-dev libminiupnpc-dev libgtk-3-dev libappindicator3-dev libssl-dev
Then you can begin building.
The packages you need are:
Or simply run the following command:
$ yum install gcc gcc-c++ m4 make automake libtool gettext openssl-devel
However, Transmission needs other packages unavailable in yum:
Before building Transmission, you need to set the pkgconfig environment setting:
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
$ git clone --recurse-submodules https://github.com/transmission/transmission Transmission
$ cd Transmission
# Use -DCMAKE_BUILD_TYPE=RelWithDebInfo to build optimized binary with debug information. (preferred)
# Use -DCMAKE_BUILD_TYPE=Release to build full optimized binary.
$ cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
$ cd build
$ cmake --build .
$ sudo cmake --install .
$ cd Transmission/build
$ cmake --build . -t clean
$ git submodule foreach --recursive git clean -xfd
$ git pull --rebase --prune
$ git submodule update --init --recursive
$ cmake --build .
$ sudo cmake --install .
You need the following installed:
Vcpkg will install x86 libraries by default. To install x64 add the --triplet=x64-windows flag at the end of the commands below.
Common dependencies:
vcpkg install curl zlib openssl
Additional dependencies for the Qt client:
vcpkg install qtactiveqt qtsvg qttools
git clone https://github.com/transmission/transmission
cd transmission
git submodule update --init --recursive
To configure which components are built use the flags below.
Each option can be set to ON/OFF/AUTO, values shown below are the defaults.
-DENABLE_DAEMON=ON - build transmission daemon-DENABLE_QT=AUTO - build the Qt client-DENABLE_UTILS=ON - build transmission-remote, transmission-create, transmission-edit and transmission-show cli tools-DENABLE_CLI=OFF - build the cli clientOther options:
-DUSE_QT_VERSION=6 - 5/6/AUTO choose Qt version to build withcmake -B build -DCMAKE_TOOLCHAIN_FILE="<path-to-vcpkg>\scripts\buildsystems\vcpkg.cmake" <flags-from-above> <other-cmake-configurations>
To build the project run:
cmake --build build