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 | Memory pinning and NUMA affinity in join-core |
| zlib | zlib1g-dev | Compression capabilities |
| Google Test | libgtest-dev | Unit testing (optional) |
| Google Mock | libgmock-dev | Mocking in tests (optional) |
Note: Both
OpenSSLandlibnumaare required byjoin-core. OpenSSL provides the TLS runtime; libnuma enables memory pinning and NUMA affinity for the lock-free queues and memory backends.
Installing Dependencies#
On Ubuntu/Debian:
sudo apt update && sudo apt install libssl-dev libnuma-dev zlib1g-dev libgtest-dev libgmock-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_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.