Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save anytizer/a674f2d24cd91dd2ffc510963e1a241c to your computer and use it in GitHub Desktop.

Select an option

Save anytizer/a674f2d24cd91dd2ffc510963e1a241c to your computer and use it in GitHub Desktop.
Compiling 64bit LMMS under Windows with Visual Studio

Summary

Build platform/hardware

  • Windows 11 Laptop, Intel Core i7, 16gb RAM
  • Visual Studio 2022, Community Edition
  • OS installed on SSD
  • Software installed on HDD

Original references

General Idea

  • Install GIT - https://git-scm.com/downloads
  • Install CMake - https://cmake.org
  • Install QT 5.12.12 - from qt.io, offline installers
  • Install Visual Studio C++ Developer Toolkit
  • Install WSL and / or linux commands - https://getgnuwin32.sourceforge.net and set them appear in system path.
  • Install doxygen - https://www.doxygen.nl, later: graphviz via vcpkg
  • Install vcpkg from GitHub - https://github.com/microsoft/vcpkg
  • Install vcpkg based packages required for LMMS
    • very long time taking process: > 1:00 hours
    • Uses a lot of bandwidth
  • Obtain the LMMS Source Code from GitHub
  • Obtain other LMMS Depedencies (git submodules)
  • Build project (solution files) with CMake
  • Manually copy data/, data/stk, plugins directories
  • Manually copy plugins/ladspa/*.dll - because they do not build
  • Unload 32bit projects from Visual Studio - requires 32 bit qt
  • Compile! Run!
  • Plugins with difficulties
  • Other notes

Step by Step Instructions

Preperation for the plugins that do not compile from the source code.

  • Install official/nighly build of LMMS.
  • Copy LMMS/ folder to a reference path. You will need plugins/ladspa folder from this reference.
  • Uninstall LMMS - so we can build our own copy.
cd d:\
git clone https://github.com/Microsoft/vcpkg
cd vcpkg
.\bootstrap-vcpkg.bat

Install vcpkg packages

.\vcpkg install --triplet=x64-windows fftw3 libsamplerate libsndfile lilv lv2 sdl2 fluidsynth fltk libstk portaudio graphviz glib

Getting the source code

Obtain LMMS Source Code. Obtain 3rd party depenencies for LMMS

git clone --recurse-submodules -b master https://github.com/lmms/lmms

cd lmms

git submodule update --progress --init --recursive --force --merge --rebase

mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -DCMAKE_PREFIX_PATH=C:\Qt\Qt5.12.12\5.12.12\msvc2017_64 -DQT_32_PREFIX=C:\Qt\Qt5.12.12\5.12.12\msvc2019 -DCMAKE_TOOLCHAIN_FILE=d:/vcpkg/scripts/buildsystems/vcpkg.cmake

mkdir Debug
mkdir Release
mkdir plugins\Debug
mkdir plugins\Release

cmake --build . --config Debug
cmake --build . --config Release

Replace the data folder.

Manually copy parent data folder inside compiled output: "build/Debug/"

copy ..\..\data .\Debug\

It should also consist: data\stk\rawwaves

  • directory where plugins will compile (reference only, auto created during the compilation)
mkdir plugins\Debug
  • Reuse compiled plugins for main binaries.
cd Debug
mklink /d plugins ..\plugins\Debug


REM Reuse release version plugins for lmms.exe release version
cd ..
cd Release
mklink /d plugins ..\plugins\Release
  • open lmms.sln in Visual Studio
  • Unload 32bit projects from Visual Studio
    • RemoteVstPlugin32 project
  • Compile!
  • Run :-)

You will get lmms.exe at: build/Debug/ folder. I have not tested with Release build option.

Plugins that are difficult

None of the ladspa plugins compile natively. So, please copy them directly into plugins/ladspa folder from outside. You should first install with an official copy of LMMS installer to get this folder.

  • ladspa/*.dll copied directly into (imp_1199.dll, mbeq_1197.dll, pitch_scale_1193.dll, pitch_scale_1194.dll)
  • sf2player.dll - compiled/built but does not run well

Other notes

  • Uses Microphone during the LMMS
  • Gigabytes of overall downloads
  • Gigabytes of total hard disk usage
  • Taking a lot of time to complete the proces
  • All projects are listed in same hierarchy.
    • For example, one language translation becomes a project on the top hierarchy of the lmms.sln file.
    • Translation projects, and application projects are mixed together.
  • Packaging, Installation, Uninstallation not considered.
  • Release mode build not considered.

Hope, you builds were successful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment