/**
\page installation_usage Installation and Usage

\section installation_usage_contents Contents

<table id="toc">
<tr>
<td>

<ul>
	<li>\ref installation_usage_requirements</li>
	<li>\ref installation_usage_tested_platforms</li>
	<li>\ref installation_usage_download</li>
	<li>\ref installation_usage_building_and_installation</li>
	<li>
	\ref installation_usage_using_fcppt
		<ul>
			<li>\ref installation_usage_using_from_build_directory</li>
			<li>\ref installation_usage_using_from_installation</li>
			<li>\ref installation_usage_modify_cmakelists</li>
			<li>\ref installation_usage_static_and_shared_builds</li>
		</ul>
	</li>
	<li>\ref installation_nix_build</li>
</ul>

</td>
</tr>
</table>

\section installation_usage_requirements Requirements

You need the following dependencies to build fcppt:
<ul>
	<li><a href="https://www.cmake.org">>=cmake-3.27.0</a></li>
</ul>

The following dependencies are optional:
<ul>
<li>
To build \ref fcpptboost you need
<a href="https://boost.org">>=boost-1.47</a>.
</li>
<li>
To build the documentation you need
<a href="http://www.doxygen.org/">>=doxygen-1.7.5</a>.
</li>
<li>
To build and run the tests you need
<a href="https://github.com/catchorg/Catch2">Catch-3</a>.
This is also needed to build \ref fcpptcatch.
</li>
</ul>

\section installation_usage_tested_platforms Tested Platforms

The following platforms are tested by us:

<ul>
	<li>gcc-16.1 (Gentoo Linux and MinGW)</li>
	<li>gcc-15.2 (NixOS)</li>
	<li>clang-22.1.5 (Gentoo Linux)</li>
	<li>clang-21.1.8 (NixOS)</li>
	<li>VC++-14.50</li>
</ul>

fcppt needs a C++23-conforming compiler.

\section installation_usage_download Download

The source code and releases are available on <a href="https://github.com/freundlich/fcppt">Github</a>.

Gentoo ebuilds are available in <a href="https://github.com/freundlich/freundlich-gentoo">Freundlich's overlay</a>.

\section installation_usage_building_and_installation 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 <code>$build</code>. Change directory into
<code>$build</code>. Assuming fcppt is in <code>$fcpptpath</code>, call
<pre>cmake <code>$fcpptpath</code></pre> and pass all relevant arguments, e.g.
<code>-G Ninja</code>, to CMake.

Several CMake options are available:
<ul>
<li><code>ENABLE_BOOST</code>: Whether to build \ref fcpptboost. Boost is required for this.
Take a look at CMake's <code>FindBoost.cmake</code> to see how to specify
where to find Boost.</li>
<li><code>ENABLE_CATCH</code>: Whether to build \ref fcpptcatch. Catch-3 is required for this.</li>
<li><code>ENABLE_EXAMPLES</code>: Whether to build fcppt's examples.
This is probably something you want to turn off when you install fcppt only.</li>
<li><code>ENABLE_TEST</code>: Whether to build fcppt's tests.
Catch-3 and <code>ENABLE_CATCH</code> are required for this.</li>
<li><code>ENABLE_DOC</code>: Whether to build fcppt's documentation.
<code>Doxygen</code> is required for this. Take a look at CMake's <code>FindDoxygen.cmake</code>
on how to specify which Doxygen installation to use.</li>
<li><code>ENABLE_SHARED</code>: Build shared libraries. This defaults to on.</li>
<li><code>ENABLE_STATIC</code>: Build static libraries. This defaults to off.</li>
<li><code>ENABLE_THREADS</code>: Enables thread-support in \ref fcpptlog. This defaults to on.</li>
</ul>
You need at least one of <code>ENABLE_SHARED</code> or <code>ENABLE_STATIC</code>.

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 <code>CMAKE_INSTALL_PREFIX</code>.

\section installation_usage_using_fcppt Using fcppt

\subsection installation_usage_modify_cmakelists Modify your CMakeLists.txt

fcppt comes with an exported CMake file that defines all of fcppt's targets, which currently
are <code>boost</code>, <code>catch</code>, <code>core</code>, <code>filesystem</code>,
<code>log</code>, <code>options</code> and <code>parse</code>.
The following code provides a small example in which the target <code>mytarget</code>
links to core and log:
<pre>
find_package(fcppt REQUIRED)
add_executable(mytarget main.cpp)

target_link_libraries(
	mytarget
	PRIVATE
	${fcppt_core_TARGET}
	${fcppt_log_TARGET}
)
</pre>
Linking to a specific target, e.g. <code>${fcppt_core_TARGET}</code>, 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:
<pre>
target_link_libraries(
	mytarget
	PRIVATE
	fcppt_core_interface
)
</pre>
\ref fcpptboost, \ref fcpptcatch and \ref fcpptparse only provide interface targets.

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:

\subsection installation_usage_using_from_build_directory Using fcppt from the build directory

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

\subsection installation_usage_using_from_installation Using fcppt from an installation

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

\subsection installation_usage_static_and_shared_builds Static and shared builds

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

\section installation_nix_build Nix builds

The <code>flake.nix</code> currently has two packages for <code>x86_64-linux</code>:
<ul>
<li><code>fcppt-gcc15</code> and</li>
<li><code>fcppt-clang21</code>.</li>
</ul>
*/
