0 Compiling from source (Linux)
Lukasz Kryger edited this page 2022-01-14 14:06:41 +01:00

Introduction

You probably don't need to compile Clementine yourself. We already provide downloads for Debian, Ubuntu, Fedora, Windows and macOS. If you don't want to use one of the above packages, or you want to compile the latest version of Clementine from git, then read on.

The instructions below are for Linux. Compiling for Windows or macOS is a little more complicated.

Prerequisites

You need CMake and the development packages for these libraries:

  • boost
  • gettext
  • libgstreamer
  • libgstreamer-plugins-base
  • liblastfm-qt5
  • libglib2.0
  • Qt 5
  • taglib
  • libfftw3
  • libchromaprint
  • GLEW
  • libsqlite3
  • libprotobuf and protobuf-compiler
  • libgpod (optional, for iPod support)
  • libplist (optional, for iPod support)
  • libusbmuxd (optional, for iPod support)
  • libmtp (optional, for MTP support)
  • libgio (optional, for various device support)
  • libcdio (optional, for CD support)
  • libspotify (optional, for Spotify support)
  • libcrypto++ (optional, for Spotify support)
  • libsparsehash (optional, for Google Drive/Dropbox/Box/Skydrive support)
  • libpulse (optional, for choosing output devices)

On Ubuntu (and probably Debian) you can install everything you need with:

sudo apt-get install -y cmake g++ git gettext \
                libglib2.0-dev libdbus-1-dev \
                libboost-dev libprotobuf-dev protobuf-compiler libsqlite3-dev sqlite3 libcrypto++-dev \
                libasound2-dev libpulse-dev libtag1-dev \
                qtbase5-dev qtbase5-dev-tools qtbase5-private-dev \
                libqt5core5a libqt5gui5 libqt5widgets5 libqt5concurrent5 libqt5network5 libqt5sql5 \
                libqt5x11extras5-dev libqt5dbus5 qttools5-dev \
                libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
                gstreamer1.0-alsa gstreamer1.0-pulseaudio \
                libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgstreamer-plugins-bad1.0-0 \
                libchromaprint-dev libfftw3-dev libsparsehash-dev libglew-dev \
                libcdio-dev libmtp-dev libgpod-dev libplist-dev libusbmuxd-dev \
                liblastfm5-dev

On Ubuntu / Mint, you may also need:

sudo apt-get install -y libqt5opengl5-dev

On Fedora:

sudo dnf install --assumeyes \
  @development-tools git cmake glib glibc gcc-c++ gettext \
  dbus-devel boost-devel protobuf-devel protobuf-compiler sqlite-devel \
  alsa-lib-devel pulseaudio-libs-devel libnotify-devel \
  qt5-devel qt5-qtbase-devel qt5-qtx11extras-devel qt5-qttools-devel \
  gstreamer1-devel gstreamer1-plugins-base-devel \
  libcdio-devel libgpod-devel libplist-devel libusbmuxd-devel libmtp-devel \
  taglib-devel libchromaprint-devel fftw-devel liblastfm-qt5-devel glew-devel cryptopp-devel sparsehash-devel

On Arch:

sudo pacman -S crypto++  desktop-file-utils glew gst-plugins-base-libs libmygpo-qt5 protobuf \
  qt5-x11extras boost cmake git

You can also optionally install ccache, to speed up compilation in some cases. On Ubuntu:

sudo apt-get install ccache

Compiling

This is the easy bit! If bin directory doesn't exist you might want to create it.

cd bin
cmake ../
make -j8
sudo make install

If you wish to have debug symbols, use

cmake  -DCMAKE_BUILD_TYPE=Debug ../

instead of

cmake ../

It's a good idea to run cmake from a separate build directory like demonstrated above because it avoids cluttering the source directories with generated files, and it lets you completely wipe the build files with rm -rf bin/*. There's an empty bin directory provided for you already for this purpose.