mirror of
https://github.com/Naios/continuable.git
synced 2025-12-06 16:56:44 +08:00
102 lines
3.3 KiB
Plaintext
102 lines
3.3 KiB
Plaintext
/*
|
|
Copyright(c) 2015 - 2018 Denis Blank <denis.blank at outlook dot com>
|
|
|
|
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.
|
|
|
|
|
|
*/
|
|
}
|