|
|
|
|
@ -446,49 +446,6 @@ Installation to given prefix can be done from within QtCreator by adding a new
|
|
|
|
|
|
|
|
|
|
@subsection building-features Enabling or disabling features |
|
|
|
|
|
|
|
|
|
The libraries are build as shared by default. If you are developing for a |
|
|
|
|
platform which doesn't support shared libraries or if you just want to link |
|
|
|
|
them statically, enable `BUILD_STATIC` to build the libraries as static. |
|
|
|
|
Building of static plugins is controlled with a separate `BUILD_PLUGINS_STATIC` |
|
|
|
|
variable. If you plan to use the static libraries and plugins with shared |
|
|
|
|
libraries later, enable also position-independent code with `BUILD_STATIC_PIC`. |
|
|
|
|
If you want to build with another compiler (e.g. Clang), pass |
|
|
|
|
`-DCMAKE_CXX_COMPILER=clang++` to CMake. |
|
|
|
|
|
|
|
|
|
Libraries and static plugins built in `Debug` configuration (e.g. with |
|
|
|
|
`CMAKE_BUILD_TYPE` set to `Debug`) have a `-d` suffix to make it possible to |
|
|
|
|
have both debug and release libraries installed alongside each other. *Dynamic* |
|
|
|
|
plugins in `Debug` configuration are installed to `magnum-d` subdirectory |
|
|
|
|
instead of `magnum`. Headers and other files are the same for both debug and |
|
|
|
|
release configurations. The library and plugin distinction is handled |
|
|
|
|
semi-automatically when using Magnum in depending projects, see @ref cmake for |
|
|
|
|
more information. |
|
|
|
|
|
|
|
|
|
Particular platforms have additional requirements when it comes to location of |
|
|
|
|
installed files. The following variables are supported: |
|
|
|
|
|
|
|
|
|
- `LIB_SUFFIX` --- Setting this variable to `64` can be used to tell CMake to |
|
|
|
|
install to `lib64/` instead of `lib/`. In most cases this variable is |
|
|
|
|
autodetected, so you don't need to set it yourself. |
|
|
|
|
- `MAGNUM_DEPLOY_PREFIX` --- Used on @ref CORRADE_TARGET_EMSCRIPTEN "Emscripten" |
|
|
|
|
to override location where web demos and utilities (such as @ref magnum-gl-info) |
|
|
|
|
are installed, so you can have libraries installed to a system location and |
|
|
|
|
utilities to your webserver, for example. Defaults to ``.``. If a relative |
|
|
|
|
path is used, it's relative to `CMAKE_INSTALL_PREFIX`. |
|
|
|
|
- `MAGNUM_INCLUDE_INSTALL_PREFIX` --- Used on @ref CORRADE_TARGET_ANDROID "Android" |
|
|
|
|
to override location where platform-independent include files, CMake |
|
|
|
|
scripts and other files are installed. CMake on Android by default searches |
|
|
|
|
for binaries in <tt><ndk>/platforms/android-<api>/arch-<arch>/usr</tt> |
|
|
|
|
based on target API and platform, but looks for headers in a central |
|
|
|
|
location at <tt><ndk>/sysroot/usr</tt>. Defaults to ``.``. If a |
|
|
|
|
relative path is used, it's relative to `CMAKE_INSTALL_PREFIX`. |
|
|
|
|
|
|
|
|
|
The library is constantly evolving and thus some APIs are deprecated and then |
|
|
|
|
later removed in favor of better ones. To preserve backwards compatibility, |
|
|
|
|
Magnum is by default built with all deprecated APIs included. However, to make |
|
|
|
|
your code more robust and future-proof, it's recommended to build the library |
|
|
|
|
with `BUILD_DEPRECATED` disabled. |
|
|
|
|
|
|
|
|
|
By default the engine is built for desktop OpenGL. Using the `TARGET_*` CMake |
|
|
|
|
options you can target other platforms. Note that some features are |
|
|
|
|
available for desktop OpenGL only, see @ref requires-gl. |
|
|
|
|
@ -516,30 +473,6 @@ available for desktop OpenGL only, see @ref requires-gl.
|
|
|
|
|
libraries to not depend on the @ref Vk library, but doesn't affect the |
|
|
|
|
@ref Vk library itself. |
|
|
|
|
|
|
|
|
|
By default the engine is built in a way that allows having multiple independent |
|
|
|
|
thread-local Magnum contents. This is inherited from the |
|
|
|
|
@ref CORRADE_BUILD_MULTITHREADED option --- if you are sure that you will never |
|
|
|
|
need such feature, disable it when building Corrade itself. |
|
|
|
|
|
|
|
|
|
Various plugin interfaces search for plugins in locations and order documented |
|
|
|
|
in @ref Corrade::PluginManager::implicitPluginSearchPaths(), |
|
|
|
|
@ref Trade::AbstractImporter::pluginSearchPaths() and equivalent functions in |
|
|
|
|
other plugin interfaces. In most cases the implicit behavior does the right |
|
|
|
|
thing, but if you need to override those, use the `MAGNUM_PLUGINS_DIR`, |
|
|
|
|
`MAGNUM_PLUGINS_DEBUG_DIR` and `MAGNUM_PLUGINS_RELEASE_DIR` CMake variables. |
|
|
|
|
Those are empty by default, which means no hardcoded path is used. Another |
|
|
|
|
option is supplying the plugin search path to the |
|
|
|
|
@ref Corrade::PluginManager::Manager constructor either using the same CMake |
|
|
|
|
variables (passed through to preprocessor, see @ref cmake) or via any other |
|
|
|
|
means. All builtin Magnum utilities such as @ref magnum-imageconverter also |
|
|
|
|
provide a way to override the plugin directory via the `--plugin-dir` |
|
|
|
|
command-line option. |
|
|
|
|
|
|
|
|
|
The features used can be conveniently detected in depending projects both in |
|
|
|
|
CMake and C++ sources, see @ref cmake and @ref Magnum/Magnum.h for more |
|
|
|
|
information. See also @ref corrade-cmake and @ref Corrade/Corrade.h for |
|
|
|
|
related info for the Corrade library. |
|
|
|
|
|
|
|
|
|
By default the engine is built with nearly everything except the @ref Audio |
|
|
|
|
and @ref Vk libraries, plugins, command-line utilities and application |
|
|
|
|
libraries (see below). Using the following `WITH_*` CMake options you can |
|
|
|
|
@ -565,12 +498,6 @@ specify which parts will be built and which not:
|
|
|
|
|
- `WITH_VK` --- Build the @ref Vk library. Depends on Vulkan, not enabled by |
|
|
|
|
default. |
|
|
|
|
|
|
|
|
|
There are more involved component dependencies that are not described here (for |
|
|
|
|
example the @ref DebugTools has some functionality that gets built only when |
|
|
|
|
@ref SceneGraph is enabled, which then makes it dependent on @ref Shaders and |
|
|
|
|
other things), but the CMake buildsystem takes care of these and only the |
|
|
|
|
relevant toggleable options are shown in CMake GUI or `ccmake`. |
|
|
|
|
|
|
|
|
|
None of the @ref Platform "application libraries" is built by default (and *you |
|
|
|
|
need at least one*, unless you are handling platform integration yourself --- |
|
|
|
|
see @ref platform-custom for more information). As they are rather tiny, they |
|
|
|
|
@ -693,11 +620,36 @@ There are also a few command-line utilities, also all disabled by default:
|
|
|
|
|
- `WITH_IMAGECONVERTER` --- Build the @ref magnum-imageconverter "magnum-imageconverter" |
|
|
|
|
executable for converting images of different formats. |
|
|
|
|
|
|
|
|
|
Note that each [namespace](namespaces.html) documentation, all @ref Platform |
|
|
|
|
library documentation and the @ref GL::OpenGLTester class documentation contain |
|
|
|
|
more detailed information about dependencies, availability on particular |
|
|
|
|
platform and also guide how to enable given library for building and how to use |
|
|
|
|
it with CMake. |
|
|
|
|
Options controlling the build: |
|
|
|
|
|
|
|
|
|
- `BUILD_STATIC` --- Build all libraries as static. Default is shared, except |
|
|
|
|
on platforms such as @ref CORRADE_TARGET_ANDROID "Android" or |
|
|
|
|
@ref CORRADE_TARGET_EMSCRIPTEN "Emscripten" that don't support dynamic |
|
|
|
|
linking. |
|
|
|
|
- `BUILD_STATIC_PIC` --- Build static libraries with position-independent |
|
|
|
|
code. Enabled by default when building static libraries, disable if you |
|
|
|
|
don't need this feature. On @ref CORRADE_TARGET_EMSCRIPTEN "Emscripten" |
|
|
|
|
this option is always off. |
|
|
|
|
- `BUILD_PLUGINS_STATIC` --- Build plugins as static. By default, plugins are |
|
|
|
|
built as dynamic. Independent of the `BUILD_STATIC` option to allow having |
|
|
|
|
static libraries with dynamic plugins and vice versa. |
|
|
|
|
- `BUILD_DEPRECATED` --- Include deprecated APIs in the build. Enabled by |
|
|
|
|
default to preserve backwards compatibility, disabling it forces you to |
|
|
|
|
update your code whenever there's a breaking API change. It's however |
|
|
|
|
recommended to have this option disabled when deploying a final application |
|
|
|
|
as it can result in smaller binaries. |
|
|
|
|
- Additional options are inherited from the @ref CORRADE_BUILD_MULTITHREADED |
|
|
|
|
options specified when building Corrade. |
|
|
|
|
|
|
|
|
|
The features used can be conveniently detected in depending projects both in |
|
|
|
|
CMake and C++ sources, see @ref cmake and @ref Magnum/Magnum.h for more |
|
|
|
|
information. See also @ref corrade-cmake and @ref Corrade/Corrade.h for |
|
|
|
|
related info for the Corrade library. Note that each |
|
|
|
|
[namespace](namespaces.html) documentation, all @ref Platform library |
|
|
|
|
documentation and the @ref GL::OpenGLTester class documentation contain more |
|
|
|
|
detailed information about dependencies, availability on particular platform |
|
|
|
|
and also guide how to enable given library for building and how to use it with |
|
|
|
|
CMake. |
|
|
|
|
|
|
|
|
|
This list covers only the core Magnum features, see also features offered by |
|
|
|
|
@ref building-corrade-features "Corrade", |
|
|
|
|
@ -706,6 +658,48 @@ This list covers only the core Magnum features, see also features offered by
|
|
|
|
|
@ref building-extras-features "Magnum Extras" and |
|
|
|
|
@ref building-examples-features "Magnum Examples". |
|
|
|
|
|
|
|
|
|
Libraries and static plugins built in `Debug` configuration (e.g. with |
|
|
|
|
`CMAKE_BUILD_TYPE` set to `Debug`) have a `-d` suffix to make it possible to |
|
|
|
|
have both debug and release libraries installed alongside each other. *Dynamic* |
|
|
|
|
plugins in `Debug` configuration are installed to `magnum-d` subdirectory |
|
|
|
|
instead of `magnum`. Headers and other files are the same for both debug and |
|
|
|
|
release configurations. The library and plugin distinction is handled |
|
|
|
|
semi-automatically when using Magnum in depending projects, see @ref cmake for |
|
|
|
|
more information. |
|
|
|
|
|
|
|
|
|
Particular platforms have additional requirements when it comes to location of |
|
|
|
|
installed files. The following variables are supported: |
|
|
|
|
|
|
|
|
|
- `LIB_SUFFIX` --- Setting this variable to `64` can be used to tell CMake to |
|
|
|
|
install to `lib64/` instead of `lib/`. In most cases this variable is |
|
|
|
|
autodetected, so you don't need to set it yourself. |
|
|
|
|
- `MAGNUM_DEPLOY_PREFIX` --- Used on @ref CORRADE_TARGET_EMSCRIPTEN "Emscripten" |
|
|
|
|
to override location where web demos and utilities (such as @ref magnum-gl-info) |
|
|
|
|
are installed, so you can have libraries installed to a system location and |
|
|
|
|
utilities to your webserver, for example. Defaults to ``.``. If a relative |
|
|
|
|
path is used, it's relative to `CMAKE_INSTALL_PREFIX`. |
|
|
|
|
- `MAGNUM_INCLUDE_INSTALL_PREFIX` --- Used on @ref CORRADE_TARGET_ANDROID "Android" |
|
|
|
|
to override location where platform-independent include files, CMake |
|
|
|
|
scripts and other files are installed. CMake on Android by default searches |
|
|
|
|
for binaries in <tt><ndk>/platforms/android-<api>/arch-<arch>/usr</tt> |
|
|
|
|
based on target API and platform, but looks for headers in a central |
|
|
|
|
location at <tt><ndk>/sysroot/usr</tt>. Defaults to ``.``. If a |
|
|
|
|
relative path is used, it's relative to `CMAKE_INSTALL_PREFIX`. |
|
|
|
|
|
|
|
|
|
Various plugin interfaces search for plugins in locations and order documented |
|
|
|
|
in @ref Corrade::PluginManager::implicitPluginSearchPaths(), |
|
|
|
|
@ref Trade::AbstractImporter::pluginSearchPaths() and equivalent functions in |
|
|
|
|
other plugin interfaces. In most cases the implicit behavior does the right |
|
|
|
|
thing, but if you need to override those, use the `MAGNUM_PLUGINS_DIR`, |
|
|
|
|
`MAGNUM_PLUGINS_DEBUG_DIR` and `MAGNUM_PLUGINS_RELEASE_DIR` CMake variables. |
|
|
|
|
Those are empty by default, which means no hardcoded path is used. Another |
|
|
|
|
option is supplying the plugin search path to the |
|
|
|
|
@ref Corrade::PluginManager::Manager constructor either using the same CMake |
|
|
|
|
variables (passed through to preprocessor, see @ref cmake) or via any other |
|
|
|
|
means. All builtin Magnum utilities such as @ref magnum-imageconverter also |
|
|
|
|
provide a way to override the plugin directory via the `--plugin-dir` |
|
|
|
|
command-line option. |
|
|
|
|
|
|
|
|
|
@subsection building-tests Building and running tests |
|
|
|
|
|
|
|
|
|
If you want to build also the tests (which are not built by default), enable |
|
|
|
|
|