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:

LibraryPackagePurpose
OpenSSLlibssl-devTLS support and cryptographic operations
libnumalibnuma-devNUMA memory binding in join-core (optional)
zlibzlib1g-devCompression capabilities
Google Testlibgtest-devUnit testing (optional)
Google Mocklibgmock-devMocking in tests (optional)

Note: OpenSSL is required by join-core for the TLS runtime. libnuma is optional: it is only needed when building with -DJOIN_ENABLE_NUMA=ON, which enables the mbind() NUMA binding methods of the memory backends, queues and allocators (and defines JOIN_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-dev

Download

Clone the latest source code from GitHub:

git clone https://github.com/joinframework/join.git

Configuration

Configure Join using CMake. Here are the most common configurations:

Standard Release Configuration

For production use:

cmake -B build -DCMAKE_BUILD_TYPE=Release

Debug Configuration with Tests

For development with tests and coverage enabled:

cmake -B build -DCMAKE_BUILD_TYPE=Debug -DJOIN_ENABLE_TESTS=ON

Configuration Options

Available CMake options:

OptionDescriptionDefault
CMAKE_BUILD_TYPEBuild type: Release, Debug, RelWithDebInfo, MinSizeRelRelease
BUILD_SHARED_LIBSBuild as shared libraries (OFF for static)ON
JOIN_ENABLE_CRYPTOEnable crypto moduleON
JOIN_ENABLE_DATAEnable data moduleON
JOIN_ENABLE_FABRICEnable fabric moduleON
JOIN_ENABLE_SERVICESEnable services moduleON
JOIN_ENABLE_NUMAEnable NUMA supportOFF
JOIN_ENABLE_SAMPLESBuild sample applicationsOFF
JOIN_ENABLE_TESTSEnable unit testsOFF
JOIN_ENABLE_COVERAGEEnable code coverage reportingOFF
CMAKE_INSTALL_PREFIXInstallation directory/usr/local

Build

cmake --build build

Installation

sudo cmake --install build
sudo ldconfig

Running Tests

If you configured with tests enabled (-DJOIN_ENABLE_TESTS=ON):

ctest --test-dir build --output-on-failure

Using 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


Additional Resources


Getting Help

If you encounter issues:

  1. Search existing issues
  2. Review the API documentation
  3. 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.