Skip to content

Compiling with cmake

myMPD uses cmake as build system.

Example: run cmake, build myMPD in the directory build and install the binaries in /usr/bin.

# Build as user
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr .
# binaries are placed in build/bin
make -C build
# Run install as root
sudo make -C build install

myMPD specific cmake options

OPTION DEFAULT DESCRIPTION
MYMPD_BUILD_TESTING OFF Enables building of unit tests
MYMPD_DOC ON Installs documentation
MYMPD_DOC_HTML OFF Creates and installs the html documentation
MYMPD_EMBEDDED_ASSETS ON Embed assets in binary, default ON, OFF for Debug
MYMPD_ENABLE_EXPERIMENTAL OFF Enable experimental features
MYMPD_ENABLE_FLAC ON Enables flac support
MYMPD_ENABLE_IPV6 ON Enables IPv6
MYMPD_ENABLE_ASAN OFF Enables build with address sanitizer
MYMPD_ENABLE_LIBID3TAG ON Enables libid3tag support
MYMPD_ENABLE_MYGPIOD ON Enables myGPIOd support
MYMPD_ENABLE_LUA ON Enables lua support
MYMPD_ENABLE_TSAN OFF Enables build with thread san
MYMPD_ENABLE_UBSAN OFF Enables build with undefined behavior sanitizer
MYMPD_MANPAGES ON Creates and installs manpages
MYMPD_MINIMAL OFF Enables minimal myMPD build, disables all MYMPD_ENABLE_* flags
MYMPD_STARTUP_SCRIPT ON Installs the startup script, valid values: ON, OFF, SYSTEMD, OPENRC, SYSVINIT, FREEBSD

cmake build types

  • Release, MinSizeRel
    • Uses predefined compile and link options for a release build
    • Embed assets in binary
    • No debug output
    • Strips binary
  • RelWithDebInfo
    • Uses predefined compile and link options for a release build
    • Embed assets in binary
    • No debug output
    • Included Debug info
  • Debug
    • Uses predefined compile and link options for a debug build
    • Assets are served from the htdocs folder in the source directory
    • Debug output
    • Included Debug info
  • None
    • Use this option to set your own compile and link options

Unit tests

  • Set MYMPD_BUILD_TESTING=ON
  • Build as normal
  • Run make test