Freundlich's C++ toolkit
Requirements, Download and Installation



fcppt needs the following at build time:

To build fcppt.filesystem, fcppt.system or the fcppt tests you need >=boost-1.47 and to build the documentation you need >=doxygen-1.7.5.

Tested Platforms

The following platforms are tested by us:

fcppt needs a C++14-conforming compiler which probably excludes everything older than gcc-5.1 and clang-3.4.


fcppt is on Github.

For releases, head over to Github's download page.

Gentoo ebuilds are available in Freundlich's overlay.

Building and Installation

fcppt uses CMake as its build system, so the standard CMake procedure to build a project applies: First, download and extract the tarball or clone the git repository. Create a new directory that will be used as build directory, which we refer to as $build. Change directory into $build. Assuming fcppt is in $fcpptpath, call

cmake $fcpptpath

and pass all relevant arguments, e.g. -G Ninja, to CMake.

To specify where to find Brigand, use -DBRIGAND_INCLUDEDIR=$path where $path points to Brigand's include directory.

Several CMake options are available:

You need at least one of ENABLE_SHARED or ENABLE_STATIC.

fcppt does not need to be installed in order to be used. After fcppt has been built you can directly use it from its source directory. If you want to install don't forget to set CMAKE_INSTALL_PREFIX.

Using fcppt

Modify your CMakeLists.txt

fcppt comes with an exported CMake file that defines all of fcppt's targets, which currently are boost, core, filesystem, log and options. The following code provides a small example in which the target mytarget links to core and log:


Linking to a specific target, e.g. ${fcppt_core_TARGET}, directly inherits all includes directories and build flags as needed. If you only use headers from a specific target, e.g. fcppt core, you can link to its interface library instead:


The boost support library only provides an interface target.

Interfaces are CMake targets that do not include a library to link to but, as with regular targets, provide include directories and build flags.

If fcppt has not been installed in a location already recognized by CMake, you will have to specify additional parameters depending on where fcppt is located:

Using fcppt from the build directory

If you don't install fcppt, you should specify fcppt's build config directory using -D fcppt_DIR=${fcppt_build_dir}/config, where fcppt_build_dir points to fcppt's build directory.

Using fcppt from an installation

If fcppt is installed, fcppt's config is installed to INSTALL_CMAKECONFIG_DIR (which is usually /usr/lib/cmake), where CMake should be able to find it when find_package(fcppt) is used. Otherwise, you have to specify fcppt_DIR manually.

Static and shared builds

fcppt can be built as a static or shared library, which is controlled by ENABLE_STATIC and ENABLE_SHARED, respectively. If you intend to use fcppt as a static library you need to set fcppt_USE_STATIC_LIBS=ON before you call find_package(fcppt). For example, fcppt_core_TARGET will then point to fcppt_core_static instead of fcppt_core.