/*! \page page_buildinstructions Build Instructions This page explains how to use JKQTPlotter in your own Projects \tableofcontents \section page_buildinstructions_CMAKE Build using CMake \subsection page_buildinstructions_CMAKE_RUN Running a Build with CMake The preferred way to build JKQTPlotter is using CMake. The CMake-build is defined in `CMakeLists.txt` files, found in many of the directories of the code repository. You can build JKQTPlotter (and also the examples) by either opening the file CMakeLists.txt in QTCreator (which has CMake integration), or by calling \c CMake by hand. How to do this depends on your local system und build environment. \subsubsection page_buildinstructions_CMAKE_MAKEFILE Building with MinGW/GNU/... Makefiles You can use (MinGW) Makefiles by calling: \code{.sh} $ mkdir build $ cd build $ cmake .. -G "MinGW Makefiles" "-DCMAKE_PREFIX_PATH=" $ cmake --build . --config "Debug" \endcode \subsubsection page_buildinstructions_CMAKE_VSTUDIO Building with Visual Studio For Visual Studio it could look like this: \code{.sh} $ mkdir build $ cd build $ cmake .. -G "Visual Studio 15 2017 Win64" "-DCMAKE_PREFIX_PATH=" \endcode Where \c could be e.g. \c C:/development/Qt5/5.12.0/msvc2017_64 . This call results in a Visual Studio solution \c build/JKQTPlotter.sln that you can load and compile from the Visual Studio IDE. Alternatively you can also build the solution directly calling: \code{.sh} $ cmake --build . --config "Debug" \endcode \subsection page_buildinstructions_CMAKE_CONFIG Configuring a Build with CMake The CMake build system offers several configuration variables that you may set/change to modify the outcome of the build: - \c CMAKE_PREFIX_PATH : add the path to your Qt installatrion to this variable, so the \c find_package(Qt5...) commands find the libraries you want to use - \c BUILD_SHARED_LIBS : Build as shared library (default: \c ON ) - \c BUILD_STATIC_LIBS : Build as static library (default: \c ON ) - \c BUILD_INCLUDE_XITS_FONTS : Include XITS fonts as resources in library (default: \c ON ) - \c BUILD_DECORATE_LIBNAMES_WITH_BUILDTYPE : If set, the build-type is appended to the library name (default: \c ON ) - \c BUILD_HIGH_COMPILE_WARNING_LEVEL : Set Compiler Warning level to high (default: \c OFF ) - \c BUILD_EXAMPLES : Build examples (default: \c ON ) - \c BUILD_HAS_OPENCV : OpenCV available? If yes, OpenCV examples are built when BUILD_EXAMPLES=ON (default: \c OFF ) - \c LIB_INSTALL : Install library (default: \c ON ) - \c CMAKE_INSTALL_PREFIX : Install directory (default: \c${CMAKE_CURRENT_SOURCE_DIR}/install ) . \section page_buildinstructions_QMAKE Build using QMake \subsection page_buildinstructions_QMAKEINCLUDE QMake Include Project If you want to simply include the JKQTPlotter Source code into your projects, without build a shared or static library and linking against it, you can use one of these QMake-Include files: - lib/jkqtplotter.pri includes the complete library (JKQTPlotter, JKQTFastPlotter, JKQTMathText) - lib/jkqtmathtext.pri includes only JKQTMathText - lib/jkqtfastplotter.pri includes only JKQTFastPlotter . In your QMake-projects it is then sufficient to add a line like: \code{.qmake} include(/lib/jkqtplotter.pri) \endcode \subsection page_buildinstructions_QMAKESTATIC QMake Static Library There are several `.PRO`-files, that can be used to build the full library, or a limited subsets of it as static link library: - qmake/staticlib/jkqtplotterlib/jkqtplotterlib.pro builds the complete library (JKQTPlotter, JKQTFastPlotter, JKQTMathText) as static link library - qmake/staticlib/jkqtmathtextlib/jkqtmathtextlib.pro builds only JKQTMathText as static link library - qmake/staticlib/jkqtfastplotterlib/jkqtfastplotterlib.pro builds only JKQTFastPlotter as static link library . They will produce a static link library that you can include into your projects, e.g. with the following QMake-snippet: \code{.qmake} # include JKQTPlotter library DEPENDPATH += \ /lib \ /qmake/staticlib/jkqtplotterlib INCLUDEPATH += /lib CONFIG (debug, debug|release) { DEPENDPATH += /qmake/staticlib/jkqtplotterlib/debug LIBS += -L/qmake/staticlib/jkqtplotterlib/debug -ljkqtplotterlib_debug } else { DEPENDPATH += /qmake/staticlib/jkqtplotterlib/release LIBS += -L/qmake/staticlib/jkqtplotterlib/release -ljkqtplotterlib } \endcode This snippet assumes that you built the libraries with the provided `.PRO`-files. You can also add a second `.pro`-file to your projects, which integrates both as subdirs. Such files are used for all examples in this project. Here is an example: \code{.qmake} TEMPLATE = subdirs # the (static library version) of JKQTPlotter jkqtplotterlib_static.file = ../../qmake/staticlib/jkqtplotterlib/jkqtplotterlib.pro # your project file, with declared dependencies on jkqtplotterlib_static test_styling.file=$$PWD/test_styling.pro test_styling.depends = jkqtplotterlib_static # add the two entries to SUBDIRS SUBDIRS += jkqtplotterlib_static test_styling \endcode \subsection page_buildinstructions_QMAKEDYNAMIC QMake Dynamic Library There are several `.PRO`-files, that can be used to build the full library, or a limited subsets of it as shred library: - qmake/sharedlib/jkqtplotterlib/jkqtplotterlib.pro builds the complete library (JKQTPlotter, JKQTFastPlotter, JKQTMathText) as shared library - qmake/sharedlib/jkqtmathtextlib/jkqtmathtextlib.pro builds only JKQTMathText as shared library - qmake/sharedlib/jkqtfastplotterlib/jkqtfastplotterlib.pro builds only JKQTFastPlotter as shared library . They will produce a dynamic link library that you can include into your projects, e.g. with the following QMake-snippet: \code{.qmake} # include JKQTPlotter library DEPENDPATH += \ /lib \ /qmake/sharedlib/jkqtplotterlib INCLUDEPATH += /lib DEFINES += JKQTCOMMON_LIB_IN_DLL JKQTFASTPLOTTER_LIB_IN_DLL JKQTMATHTEXT_LIB_IN_DLL JKQTPLOTTER_LIB_IN_DLL CONFIG (debug, debug|release) { # ensure that DLLs are copied to the output directory install_jkqtplotter_dll.files = /qmake/sharedlib/jkqtplotterlib/debug/jkqtplotterlib_debug.* install_jkqtplotter_dll.path = $$OUT_PWD INSTALLS += install_jkqtplotter_dll # link agains DLLs DEPENDPATH += /qmake/sharedlib/jkqtplotterlib/debug LIBS += -L/qmake/sharedlib/jkqtplotterlib/debug -ljkqtplotterlib_debug } else { # ensure that DLLs are copied to the output directory install_jkqtplotter_dll.files = /qmake/sharedlib/jkqtplotterlib/release/jkqtplotterlib.* install_jkqtplotter_dll.path = $$OUT_PWD INSTALLS += install_jkqtplotter_dll # link agains DLLs DEPENDPATH += /qmake/sharedlib/jkqtplotterlib/release LIBS += -L/qmake/sharedlib/jkqtplotterlib/release -ljkqtplotterlib } \endcode This snippet assumes that you built the libraries with the provided `.PRO`-files. You can also add a second `.pro`-file to your projects, which integrates both as subdirs. Such files are used for all examples in this project. Here is an example: \code{.qmake} TEMPLATE = subdirs # the (shared library version) of JKQTPlotter jkqtplotterlib_shared.file = ../../qmake/sharedlib/jkqtplotterlib.pro # your project file, with declared dependencies on jkqtplotterlib_shared test_styling.file=$$PWD/test_styling.pro test_styling.depends = jkqtplotterlib_shared # add the two entries to SUBDIRS SUBDIRS += jkqtplotterlib_shared test_styling \endcode \note You will have to run a deployment step `make install` before running your executable, so the shared libararies are actually copied to the output directory (see `INSTALLS + ...` above). */