Quick Start Guide
This guide will help you get Join framework up and running on your system in a few minutes.
Prerequisites
Join framework requires:
- C++14 compatible compiler
- CMake
- Linux operating system
Dependencies
Join relies on the following libraries:
| Library | Package | Purpose |
|---|---|---|
| OpenSSL | libssl-dev | TLS support and cryptographic operations |
| libnuma | libnuma-dev | NUMA memory binding in join-core (optional) |
| zlib | zlib1g-dev | Compression capabilities |
| Google Test | libgtest-dev | Unit testing (optional) |
| Google Mock | libgmock-dev | Mocking in tests (optional) |
Note:
OpenSSLis required byjoin-corefor the TLS runtime.libnumais optional: it is only needed when building with-DJOIN_ENABLE_NUMA=ON, which enables thembind()NUMA binding methods of the memory backends, queues and allocators (and definesJOIN_HAS_NUMA).
Installing Dependencies
On Ubuntu/Debian:
sudo apt update && sudo apt install libssl-dev zlib1g-dev libgtest-dev libgmock-dev
# Optional: NUMA support (-DJOIN_ENABLE_NUMA=ON)
sudo apt install libnuma-devDownload
Clone the latest source code from GitHub:
git clone https://github.com/joinframework/join.gitConfiguration
Configure Join using CMake. Here are the most common configurations:
Standard Release Configuration
For production use:
cmake -B build -DCMAKE_BUILD_TYPE=ReleaseDebug Configuration with Tests
For development with tests and coverage enabled:
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DJOIN_ENABLE_TESTS=ONConfiguration Options
Available CMake options:
| Option | Description | Default |
|---|---|---|
CMAKE_BUILD_TYPE | Build type: Release, Debug, RelWithDebInfo, MinSizeRel | Release |
BUILD_SHARED_LIBS | Build as shared libraries (OFF for static) | ON |
JOIN_ENABLE_CRYPTO | Enable crypto module | ON |
JOIN_ENABLE_DATA | Enable data module | ON |
JOIN_ENABLE_FABRIC | Enable fabric module | ON |
JOIN_ENABLE_SERVICES | Enable services module | ON |
JOIN_ENABLE_NUMA | Enable NUMA support | OFF |
JOIN_ENABLE_SAMPLES | Build sample applications | OFF |
JOIN_ENABLE_TESTS | Enable unit tests | OFF |
JOIN_ENABLE_COVERAGE | Enable code coverage reporting | OFF |
CMAKE_INSTALL_PREFIX | Installation directory | /usr/local |
Build
cmake --build buildInstallation
sudo cmake --install build
sudo ldconfigRunning Tests
If you configured with tests enabled (-DJOIN_ENABLE_TESTS=ON):
ctest --test-dir build --output-on-failureUsing Join in Your Project
Once installed, use Join in your CMake projects:
cmake_minimum_required(VERSION 3.14)
project(MyApp)
find_package(join REQUIRED)
add_executable(myapp main.cpp)
target_link_libraries(myapp PRIVATE
join::core
join::crypto
join::data
join::fabric
join::services
)
set_target_properties(myapp PROPERTIES
CXX_STANDARD 14
CXX_STANDARD_REQUIRED ON
)Next Steps
- Core Module — Reactor, sockets, threads, timers
- Fabric Module — Interface management, ARP, DNS
- Crypto Module — Hashing, signatures, TLS
- Data Module — JSON, MessagePack, compression
- Services Module — HTTP/HTTPS, SMTP/SMTPS
Additional Resources
- API Documentation — Complete Doxygen reference
- GitHub Repository — Source code
- Issue Tracker — Report bugs or request features
Getting Help
If you encounter issues:
- Search existing issues
- Review the API documentation
- Open a new issue with your system information, CMake configuration, complete error messages, and a minimal reproducible example
License
Join is released under the MIT License, giving you maximum freedom to use it in your projects, whether open source or proprietary.