-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Compiling
The following packages are required for building. Since most desktops offer these libraries through package repositories, we recommend using the Dependency Quickstart for most purposes.
If you get stuck, please ask in the #support
channel on Discord.
If a package is not available for your platform, you may need to manually install.
Recommended. Each platform requires a compiler and several libraries. We've selected the most common settings for you.
Qt 5.6+ is required on the master
branch. If you're using Linux and your distribution only ships older Qt versions, install Qt using the official installer at https://www.qt.io/download-open-source.
- Ubuntu | Mint
- Debian
- Fedora
- openSUSE
- Arch | Manjaro
- macOS
-
Windows
- Cross-compile using mingw
... platform missing? Add it here.
Alternately, you may download and compile each dependency manually. This is recommended for advanced users only.
Supported | Toolchain | Version | Branch |
---|---|---|---|
✔️ | cmake |
3.3.0 |
master |
✔️ | cmake |
2.8.7 |
stable-1.2 |
✔️ | cmake |
2.4.5 |
stable-1.1 |
Supported | Compiler | Version |
---|---|---|
✔️ | gcc/g++ |
c++11 |
✔️ | clang |
|
✔️ | mingw-w64 |
|
msvc++ |
Experimental, some plugins not supported yet |
Required | Library | Version | Description |
---|---|---|---|
✔️ | Qt5 |
>=5.6 on master , >=5.0 on stable-1.2
|
Widget toolkit for creating cross-platform graphical user interfaces |
✔️ | libsndfile |
>=1.0.11 |
Reading and writing sound files, >=1.0.18 for lmms>=master (>=1.0.26 for FLAC compression level setting for lmms>=master ) |
✔️ | fftw3 |
Fast fourier transform computing library | |
✔️ | libsamplerate |
>=0.1.7 |
Audio sample rate converter |
libvorbis |
Audio encoding library | ||
libogg |
Multimedia container format | ||
wine |
Windows-on-Unix (needed for VST support) | ||
libstk |
Signal processing and algorithmic synthesis library | ||
libfluidsynth |
SoundFont synthesis library | ||
fltk |
Lightweight GUI library (needed by ZynAddSubFX) | ||
jack |
Software and hardware audio routing | ||
sdl |
Audio interface library* | ||
alsa |
Audio interface library* | ||
libportaudio |
Audio interface library* | ||
libsoundio |
Audio interface library* |
*One or more required for audio playback
Before preparing the build environment, you must have a branch
copy of the source code*.
# clone the "master" branch (e.g. "stable-1.2", etc)
git clone --recurse-submodules -b master https://github.com/lmms/lmms
* Advanced users may prefer to download a tarball instead: zip | tarball
For most users, this will create a folder ~/lmms
which can be used for building. If you're already using ~/lmms
for samples you'll see path 'lmms' already exists
, use an alternate location e.g. ~/Desktop
and try again.
... want to switch branches or fast-forward? See Accessing git repository.
The cmake
toolchain offers several built-in configuration options. In addition, LMMS adds several options useful for building. Below are a list of the most standard options. We recommend using the CMake Quickstart for most purposes.
Assumes you've already installed dependencies and cloned the source code
-
Prepare
build
and, optionally, thetarget
directoriescd lmms mkdir build cd build
-
And then choose one of the following...
# from "lmms/build" directory cmake .. -DCMAKE_INSTALL_PREFIX=../target/
-- OR --
Running CMake for Windows*
# from "lmms/build" directory ../cmake/build_mingw64.sh
* For 32-bit, use
build_mingw32.sh
instead. Onmaster
, usebuild_win64.sh
orbuild_win32.sh
respectively.Notes: In case you want to build LMMS with Qt5, see Using Qt5. On MacOS Mojave (10.14+), adding
-DCMAKE_PREFIX_PATH="$(brew --prefix qt5)"
to the end of the cmake command will point cmake to Qt5.
Option* | Description | Common Values |
---|---|---|
CMAKE_INSTALL_PREFIX |
Install to non-standard (non-root) location. This is generally preferred, especially for coding, testing and packaging. | ../target |
CMAKE_PREFIX_PATH |
Set your Qt5 (probably other library too) installation path if it does not reside in standard installation paths | /path/to/qt5 |
CMAKE_BUILD_TYPE |
Force build to include debugging or optimization symbols |
Release , Debug , RelWithDebInfo
|
FORCE_VERSION |
Force version within software, useful for distributing one-off packages |
internal , 1.2.3-myfix
|
PLUGIN_LIST |
Limit build only to the specified /plugins/ , used to reduce compile time, such as when bisecting
|
"audio_file_processor kicker triple_oscillator" |
LMMS_MINIMAL |
Same effect as PLUGIN_LIST , but auto-selects the core plugins required for most basic testing. |
True |
WANT_QT5 , WANT_SDL , WANT_SWH , WANT_VST ... |
Toggle on/off a library, dependency or feature |
ON , OFF
|
* When provided on command line, all options must be prefixed with
-D
, e.g
cmake -DCMAKE_BUILD_TYPE=Debug
Note: These flags are only required for stable-1.2
branch. Newer branches (e.g. master
) use Qt5 by default and Qt4 support has been removed. Skip this section if you're compiling master
.
In order to build LMMS with Qt5, add the following flag when invoking cmake:
-DWANT_QT5=ON
... or if you're using mingw
and configuring via script, you will provide -qt5
as a parameter to the shell script.
../cmake/build_mingw64.sh -qt5
If your Qt5 installation does not reside in standard installation paths, additionally pass e.g.
-DCMAKE_PREFIX_PATH=/path/to/qt5
# e.g. on Mac, -DCMAKE_PREFIX_PATH="$(brew --prefix qt5)"
... still need help? Ask on our Discord chat server
Assumes you've already installed dependencies and cloned the source code and configured the build environment.
# from "lmms/build" directory
make -j4
... and then run by calling:
./lmms
Compilation errors are usually attributed to missing packages, misconfigured system or specific compatibility problems. Please jump to the appropriate troubleshooting guide:
Troubleshooting: Ubuntu, Debian, Fedora, openSUSE, Arch, macOS, Windows
Debugging LMMS requires a re-run of the cmake
command, but with the debug symbols turned on.
For a comprehensive tutorial, see also Debugging LMMS
# from "lmms/build" directory
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../target/
# -- OR for better performance --
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=../target/
# re-run the build
make -j4
Assuming you have gcc
(most common), you'll need gdb
installed via apt-get
, dnf
, pacman
, etc.
gdb lmms
# or alternately gdb ../target/bin/lmms
(gdb) run
# once you hit the crash, CTRL + C
backtrace full
Assuming you have clang
(macOS, FreeBSD), you'll need lldb
installed via brew
, pkg_add
, etc.
lldb lmms
# or alternately lldb ../target/bin/lmms
# macOS, use `make -j4 install` then `lldb LMMS.app/Contents/MacOS/lmms`
(lldb) run
# once you hit the crash, CTRL + C
thread backtrace full
Supported | Format | Platform | Notes |
---|---|---|---|
✔️ | .exe |
Windows | lmms>=0.4.0 |
✔️ | .dmg |
macOS | lmms>=1.0.0 |
✔️ | .AppImage |
Linux Universal | Work in progress, see #3688 |
✖️ | .run |
Linux Universal | Work in progress, see #2932 |
❌ | .deb |
Debian, Ubuntu | See #1620. Please contact package maintainers. |
❌ | .rpm |
Fedora, openSUSE | Related to #1620. Please contact package maintainers. |
This is the most common type for getting features and fixes out to a large number of testers. Assumes you've already installed dependencies and cloned the source code and configured the build environment. Once completed, the release should be published for others to download.
# from "lmms/build" directory
make package # package using nsis
Try
explorer .
to see it in Explorer. Produceslmms-1.2.0.123-win64.exe
, where123
is the number of commits since stable release.
Assumes you've already installed dependencies and cloned the source code and configured the build environment. Once completed, the release should be published for others to download.
Warning: Must set CMAKE_INSTALL_PREFIX
or it will attempt to bundle all of /usr/local/
.
# from "lmms/build" directory
make install # builds the app bundle
make dmg # creates the disk image using appdmg
open . # optional: view in Finder
Produces
lmms-1.2.0.123-mac10.11.dmg
, where123
is the number of commits since stable release andmac10.11
is the macOS version which the package was built on.
Assumes you've already installed dependencies and configured the build environment. Once completed, the release should be published for others to download. This command will fail if CMAKE_INSTALL_PREFIX
was not provided.
# from "lmms/build" directory
make install # installs to target
make appimage # creates a Linux AppImage
Produces
lmms-1.2.0-123-linux-x86_64.AppImage
, where123
is the number of commits since stable release.
Using GitHub releases, Project administrators may wish to package a release to their personal github account or to the entire project.
-
Personal Release: Used for distributing early feature or test packages.
- URL:
https://github.com/tresf/lmms/releases
(replacetresf
with your@github
id)
- URL:
-
Project Release: Used for distributing official stable and release candidate packages.
- URL:
https://github.com/lmms/lmms/releases
- URL:
Download statistics are available here
... example release notes available here.