This project doesn't require any special command-line flags to build to keep things simple.
Here are the steps for building in release mode with a single-configuration generator, like the Unix Makefiles one:
cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
cmake --build build
Here are the steps for building in release mode with a multi-configuration generator, like the Visual Studio ones:
cmake -S . -B build
cmake --build build --config Release
But RPP is header-only library, so, without enabling any extra options is just compiles "nothing". So, you can use next options to enable/disable some parts of project:
RPP_BUILD_TESTS
- (ON/OFF) build unit tests (default OFF)RPP_BUILD_EXAMPLES
- (ON/OFF) build examples of usage of RPP (default OFF)RPP_BUILD_SFML_CODE
- (ON/OFF) build RPP code related to SFML or not (default OFF) - requires SFML to be installedRPP_BUILD_QT_CODE
- (ON/OFF) build QT related code (examples/tests)(rppqt module doesn't require this one) (default OFF) - requires QT5/6 to be installedRPP_BUILD_GRPC_CODE
- (ON/OFF) build gRPC related code (examples/tests)(rppgrpc module doesn't require this one) (default OFF) - requires gRPC++/protobuf to be installedRPP_BUILD_ASIO_CODE
- (ON/OFF) build RPPASIO related code (examples/tests)(rppasio module doesn't require this one) (default OFF) - requires asio to be installed
By default, it provides rpp, rppqt, rppgrpc, rppasio INTERFACE modules.
This project doesn't require any special command-line flags to install to keep things simple. As a prerequisite, the project has to be built with the above commands already.
The below commands require at least CMake 3.15 to run, because that is the version in which Install a Project was added.
Here is the command for installing the release mode artifacts with a single-configuration generator, like the Unix Makefiles one:
cmake --install build
Here is the command for installing the release mode artifacts with a multi-configuration generator, like the Visual Studio ones:
cmake --install build --config Release
Optionally you can download it via FetchContent
Include(FetchContent)
FetchContent_Declare(
RPP
GIT_REPOSITORY https://github.com/victimsnino/ReactivePlusPlus.git
GIT_TAG origin/v2
)
FetchContent_MakeAvailable(RPP)
This project exports a CMake package to be used with the find_package
command of CMake:
- Package name:
RPP
- Target names:
RPP::rpp
- main rpp INTERFACE targetRPP::rppqt
- additional INTERFACE target to extend functionality for QT. rppqt doesn't include QT or even doesn't link with that itself.RPP::rppasio
- additional INTERFACE target to extend functionality for ASIO. rppasio doesn't include boost::asio or even doesn't link with that itself.RPP::rppgrpc
- additional INTERFACE target to extend functionality for gRPC. rppgrpc doesn't include gRPC or even doesn't link with that itself.
Example usage:
find_package(RPP REQUIRED)
# Declare the imported target as a build requirement using PRIVATE, where
# project_target is a target created in the consuming project
target_link_libraries(project_target
PRIVATE
RPP::rpp
RPP::rppqt
RPP::rppasio
RPP::rppgrpc
)
To use ReactivePlusPlus in your code just do
#include <rpp/rpp.hpp>
to include whole library functionality and don't worry about includes. (same can be applied to rppgrpc or rppqt modules) Also you can include only forwardings for everyting
#include <rpp/fwd.hpp>
To avoid including "everyting" you can just include some iterested part of code (or forward it as well)
#include <rpp/operators/map.hpp>
#include <rpp/observables/fwd.hpp>
NOTE: In case of partial including of operators you need to include headers for each used operators like
#include <rpp/operators/map.hpp>
#include <rpp/operators/filter.hpp>
else it would not be possible to compile