overview
this document describes to how compile musikcube on all supported platforms
windows
- grab the Visual Studio 2019 Community Edition and install the c++ compiler; you can select 32-bit, 64-bit, or both.
- clone the musikcube sources:
git clone https://github.com/clangen/musikcube.git --recursive
- open
musikcube.sln
and build/run.
mac
you'll need homebrew to install the required dependencies.
brew install cmake openssl libogg libvorbis ffmpeg libmicrohttpd lame libev taglib
git clone https://github.com/clangen/musikcube.git --recursive
cd musikcube
cmake .
make
cd bin
./musikcube
linux and bsd
install dependencies
- install the following libraries and their development packages:
cmake libogg vorbis ffmpeg ncurses zlib asound pulse libcurl libmicrohttpd libmp3lame libev4 taglib libopenmpt
.
note, debian-based distributions use
libtag1-dev
instead oftaglib
.
- ubuntu
- cosmic, disco and eoan:
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libopenmpt-dev
- bionic:
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libopenmpt-dev
- artful:
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libopenmpt-dev
- zesty:
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libopenmpt-dev
- cosmic, disco and eoan:
- opensuse:
sudo zypper install libcurl-devel libmicrohttpd-devel cmake ncurses5-devel libogg-devel libvorbis-devel ffmpeg-3-libavcodec-devel ffmpeg-3-libswresample-devel ffmpeg-3-libavformat-devel ffmpeg-3-libavutil-devel libmp3lame-devel pulseaudio libpulse-devel alsa-devel zlib-devel libressl-devel libev-devel libtag-devel libopenmpt-devel
- fedora:
sudo dnf install gcc-c++ make cmake libogg-devel libvorbis-devel ffmpeg-devel ncurses-devel zlib-devel alsa-lib-devel pulseaudio-libs-devel libcurl-devel libmicrohttpd-devel lame-devel libev-devel taglib-devel openssl-devel libopenmpt-devel
- arch:
sudo pacman -S libogg libvorbis libmicrohttpd ffmpeg lame cmake ncurses pulseaudio libpulse alsa-lib curl libev taglib libopenmpt pkg-config
- freebsd
pkg install ncurses curl libvorbis libogg libmicrohttpd ffmpeg alsa-lib cmake sndio libev taglib libopenmpt bash pkgconf
portsnap fetch
portsnap extract
(if first time using ports)cd /usr/ports/audio/lame
make reinstall
- openbsd
pkg_add git cmake ffmpeg sndio libev libmicrohttpd taglib libopenmpt
obtain musikcube sources
you can either get the latest version from git, as follows...
git clone https://github.com/clangen/musikcube.git --recursive
...or you can download a pre-packaged source release:
- navigate to the appropriate release page and download the source
tar.gz
file tar xvfz musikcube-0.96.10.tar.gz
build musikcube
cd musikcube
cmake -G "Unix Makefiles" .
make
sudo make install
musikcube
troubleshooting
compiler cannot find <ncursesw/curses.h>
there are two versions of the ncurses headers, one which has "wide character" support, and one that doesn't. musikcube requires the wide version. in many cases (Debian/Ubuntu), Linux distributions have both. The non-wide version is usually in /usr/include
, and the wide-version is is /usr/include/ncursesw
.
ArchLinux (and variants like Manjaro) seem to only ship the "wide" version. But it exists in in /usr/include
, and not /usr/include/ncursesw
as it does it other distros. see comments here: https://bugs.archlinux.org/task/17590
the CMake build script explicitly detects a few distributions where this is the case. However, it generally assumes that the curses.h
lives in /usr/include/ncursesw
. implicitly falling back to /usr/include
is dangerous -- it may allow compiles to succeed, but there will almost certainly crash at runtime.
if you are using a distribution that only supplies the "wide-character" variant of ncurses, and you know those headers are in /usr/include
and not /usr/include/ncursesw
, you should invoke CMake with the -DNO_NCURSESW
flag as follows:
cmake -DNO_NCURSESW .
instead of the more standard cmake .