4.5 KiB
Building and installation
You are generally recommended to use your distro's package manager to install Notcurses; it is available prepackaged on many distributions. Otherwise, acquire the current source via
git clone https://github.com/dankamongmen/notcurses.git
Prerequisites
APT
Install build dependencies:
apt-get install build-essential cmake doctest-dev zlib1g-dev libavformat-dev libavutil-dev libncurses-dev libreadline-dev libqrcodegen-dev libswscale-dev libunistring-dev pandoc pkg-config
If you only intend to build core Notcurses (without multimedia support), you
can omit libavformat-dev
, libavutil-dev
, and libswscale-dev
from this
list.
If you want to build the Python wrappers, you'll also need:
apt-get install python3-cffi python3-dev python3-pypandoc python3-setuptools
If you want to build the Rust wrappers, you'll also need:
apt-get install cargo bindgen
RPM
Install build dependencies:
dnf install cmake doctest-devel zlib-devel ncurses-devel readline-devel libqrcodegen-devel libunistring-devel OpenImageIO-devel pandoc
If you only intend to build core Notcurses (without multimedia support), you
can omit OpenImageIO-devel
. If you're building outside Fedora Core (e.g. with
RPM Fusion), you might want to use FFmpeg rather than OpenImageIO.
Microsoft Windows
Currently, building on Windows requires MSYS2 in its 64-bit Universal C Runtime (UCRT) incarnation. This builds native Windows DLLs and EXEs, though it does not use Visual Studio. Install build dependencies:
pacman -S mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-doctest mingw-w64-ucrt-x86_64-ffmpeg mingw-w64-ucrt-x86_64-libunistring mingw-w64-ucrt-x86_64-ncurses mingw-w64-ucrt-x86_64-rust mingw-w64-ucrt-x86_64-toolchain
If you only intend to build core Notcurses (without multimedia support), you
can omit mingw-w64-ucrt-x86_64-ffmpeg
. The Windows build never uses GNU
Readline, so don't worry about that.
Building
- Create a subdirectory, traditionally
build
(this is not strictly necessary, but it keeps your source tree clean). Enter the directory. cmake ..
** You might want to set e.g.CMAKE_BUILD_TYPE
. Use-DVAR=val
. ** To build without multimedia support, use-DUSE_MULTIMEDIA=none
.make
make test
make install
sudo ldconfig
The default multimedia engine is FFmpeg. You can select a different engine
using USE_MULTIMEDIA
. Valid values are ffmpeg
, oiio
(for OpenImageIO),
or none
. Without a multimedia engine, Notcurses will be unable to decode
images and videos.
Run unit tests with make test
following a successful build. If you have unit
test failures, please file a bug including the output of
./notcurses-tester -p ../data
(make test
also runs notcurses-tester
, but hides important output).
To watch the bitchin' demo, run make demo
. More details can
be found on the notcurses-demo(1)
man page.
Install with make install
following a successful build. This installs the C
core library, the C headers, the C++ library, and the C++ headers (note that
the C headers are C++-safe). It does not install the Python or Rust wrappers.
To install the Python wrappers (after installing the core library), run:
cd cffi
python setup.py build
python setup.py install
The Python wrappers are also available from PyPi. To install the low-level Rust
wrappers (libnotcurses-sys
), run:
cd rust
cargo build
cargo install
The Rust wrappers are also available from crates.io.
Build options
To set the C compiler, export CC
. To set the C++ compiler, export CXX
. The
CMAKE_BUILD_TYPE
CMake variable can be defined to any of its standard values,
but must be Debug
for use of USE_COVERAGE
.
DFSG_BUILD
: leave out all content considered non-free under the Debian Free Software GuidelinesBUILD_TESTING
: build test targetsUSE_COVERAGE
: build coverage support (for developers, requires use of Clang)USE_DOCTEST
: buildnotcurses-tester
with Doctest, requiresBUILD_TESTING
USE_DOXYGEN
: build interlinked HTML documentation with DoxygenUSE_MULTIMEDIA
:ffmpeg
for FFmpeg,oiio
for OpenImageIO,none
for noneUSE_PANDOC
: build man pages with pandocUSE_POC
: build small, uninstalled proof-of-concept binariesUSE_QRCODEGEN
: build qrcode support via libqrcodegenUSE_READLINE
: build readline support for Direct ModeUSE_STATIC
: build static libraries (in addition to shared ones)