A modern, cross-platform, header-only C++ library designed to work on WSL, Linux/Windows, x64, and arm64 architectures.
- Header-only library (no compilation required)
- Cross-platform compatibility (Windows, WSL, Linux, x64, arm64)
- Modern C++23 implementation
- CMake integration
- Example applications, Unit tests with Google Test
- CommandHandler, EventHandler abstractions.
- NNG (Nanomsg Next Generation) support for messaging with Protobuf serialization
- Boost.Signals2
- nngcpp
- protobuf
- CMake 3.14 or higher
- C++23 compatible compiler (GCC 12+, Clang 14+, MSVC 19.34+)
- For testing: Google Test (automatically fetched if not found)
cppplumberd/
├── CMakeLists.txt # Main CMake configuration
├── cmake/
│ └── cppplumberdConfig.cmake.in # CMake package configuration
├── include/
│ ├── plumberd.hpp # Main include header
│ └── cppplumberd/ # Library header files
│ ├── utils.hpp
│ └── calculator.hpp
├── examples/
| ├── CMakeLists.txt # Example build configuration
│ └── helloword
│ ├── CMakeLists.txt # Example build configuration
│ └── main.cpp # Example application
└── tests/
├── CMakeLists.txt # Tests build configuration
└── test_cppplumberd.cpp # Unit tests
- Open Visual Studio
- Select "Open a local folder" and navigate to the project directory
- Visual Studio should automatically detect the CMake project
- Configure the CMake project by going to Project > CMake Settings
- Choose your preferred configuration (Debug/Release) and platform target
- Build the project from the Build menu
# Create a build directory
mkdir build && cd build
# Configure the project
cmake ..
# Build the project
cmake --build .
# Run tests
ctest
# Install the library (optional)
cmake --install . --prefix /path/to/install
To use the library in your own project with CMake:
find_package(cppplumberd REQUIRED)
target_link_libraries(your_target PRIVATE cppplumberd::cppplumberd)
Or simply include the headers in your project:
#include <plumberd.hpp>
int main() {
auto result = cppplumberd::add(1, 2);
// ...
}
This project is licensed under the MIT License - see the LICENSE file for details.