/* Copyright(c) 2015 - 2018 Denis Blank Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions : The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ namespace cti { /** \page installation Installation \brief An explanation on how to install continuable on various platforms. \tableofcontents ## Installation ### How-to use As mentioned earlier the library is header-only. There is a cmake project provided for simple setup: #### As git submodule \endcodesh # Shell: git submodule add https://github.com/Naios/continuable.git \endcode \endcodecmake # CMake file: add_subdirectory(continuable) # continuable provides an interface target which makes it's # headers available to all projects using the continuable library. target_link_libraries(my_project continuable) \endcode On POSIX platforms you are required to link your application against a corresponding thread library, otherwise `std::future's` won't work properly, this is done automatically by the provided CMake project. #### As CMake library Additionally the project exports a `continuable` target which is importable through CMake when installed: \endcodesh mkdir build cd build cmake .. cmake --build . --target INSTALL --config Release \endcode `CMakeLists.txt`: \endcodecmake find_package(continuable REQUIRED) \endcode ### Building the unit-tests In order to build the unit tests clone the repository recursively with all submodules: \endcodesh # Shell: git clone --recursive https://github.com/Naios/continuable.git \endcode ## Stability and version The library follows the rules of [semantic versioning](http://semver.org/), the API is kept stable across minor versions. The CI driven unit-tests are observed through the Clang sanitizers (asan, ubsan and lsan - when compiling with Clang) or Valgrind (when compiling with GCC). ## Compatibility Tested & compatible with: - Visual Studio 2017+ Update 2 - Clang 5.0+ - GCC 6.0+ Although the build is observed with the latest toolchains earlier ones might work. The library only depends on the standard library when using the `continuable/continuable-base.hpp` header, which provides the basic continuation logic. > **Note:** On Posix: don't forget to **link a corresponding thread library** into your application otherwise `std::future's` won't work `(-pthread)` when using future based transforms. */ }