arknet is header-only and has no binary library to build or link.
The arknet::arknet CMake interface target supplies include paths, C++20 requirements,
compile definitions and dependencies. Applications link the platform’s socket and
thread libraries, plus OpenSSL for MySQL authentication or TLS.
Requirements
- CMake 3.21 or newer.
- A compiler and standard library with C++20 support.
- Boost 1.90 or newer with Asio and Beast (default), or Standalone Asio 1.38 or newer for its supported capabilities.
- OpenSSL 1.1.1 or newer for MySQL authentication and secure transports.
The configured minimum TLS version is 1.2. Tested dependency and compiler versions are recorded in Testing.
Choose an Asio Provider
| Configuration | IO dependencies | Available protocols |
|---|---|---|
ARKNET_USE_BOOST_ASIO=ON (default) |
Boost.Asio + Boost.Beast | TCP, UDP, RUDP, HTTP, WebSocket, Redis; optional MySQL, TLS, HTTPS, WSS |
ARKNET_USE_BOOST_ASIO=OFF |
Standalone Asio | TCP, UDP, RUDP, Redis; optional MySQL and TLS |
HTTP, WebSocket and rate-limited TCP streams require official Boost.Beast and
the Boost configuration. These interfaces are unavailable with Standalone Asio;
including their headers directly reports a compile error. Install the selected
dependencies before configuring CMake. Set ARKNET_ASIO_INCLUDE_DIR to the
directory containing asio.hpp for Standalone Asio. For custom Boost or OpenSSL
prefixes, use CMAKE_PREFIX_PATH; OpenSSL also accepts OPENSSL_ROOT_DIR.
CMake Options
See the configuration reference for all options and defaults.
Install the selected dependencies
Install one Asio provider and OpenSSL if you need MySQL or TLS. Choose a provider using the table above.
Configure the project
From the repository root, run the command for your selected provider:
# Standalone Asio
cmake -S . -B build -DARKNET_USE_BOOST_ASIO=OFF -DARKNET_ASIO_INCLUDE_DIR=/path/to/asio/include
# Boost.Asio with secure transports
cmake -S . -B build-boost -DARKNET_USE_BOOST_ASIO=ON -DARKNET_ENABLE_SSL=ONBuild and verify
Then build the examples and tests in the selected directory:
cmake --build build --parallel 3For a multi-configuration generator such as Visual Studio, add --config Release
to build and install commands. See Contributing for test
execution and Testing for correctness evidence; see measurement methodology for benchmarks.
Integrate From Source
Add the independent arknet checkout to your application’s CMake project:
add_subdirectory(/path/to/arknet arknet-build)
target_link_libraries(my_app PRIVATE arknet::arknet)For an INTERFACE target, target_link_libraries() propagates its usage requirements.
It does not add an arknet .a, .so, .dylib or .lib to the linker input.
Set the provider and TLS options before add_subdirectory(), or pass them to
CMake on the command line. Tests and examples default to disabled when arknet is
embedded. Include <arknet/arknet.hpp> or the required protocol header.
Continue with Quick Start.
Install and Use find_package
Configure the library with the provider and TLS settings required by the application, then install its headers and CMake package:
cmake -S . -B build-install -DARKNET_BUILD_TESTS=OFF -DARKNET_BUILD_EXAMPLES=OFF \
-DARKNET_USE_BOOST_ASIO=ON
cmake --install build-install --prefix /path/to/prefixIn the consuming project:
find_package(arknet CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE arknet::arknet)Configure that project with -DCMAKE_PREFIX_PATH=/path/to/prefix. The installed
package remembers the provider and TLS settings used at installation and finds
those dependencies on the consuming machine. Install separate prefixes for
configurations that need different providers or TLS settings.
Use vcpkg
The development vcpkg.json enables Boost by default and also installs Standalone Asio for the two-configuration test matrix. The boost feature is enabled by default; the optional ssl feature installs OpenSSL. Features
install dependencies; the corresponding arknet CMake options select behavior.
vcpkg-configuration.json selects the repository’s ports/asio overlay, pinned
to Asio 1.38.2 with an archive checksum. The selected registry baseline still
provides Asio 1.32, which lacks the required kqueue synchronization. Consuming
arknet from another vcpkg manifest requires that project to configure this
overlay or provide a compatible Asio installation.
cmake -S . -B build-vcpkg \
-DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_MANIFEST_FEATURES="boost;ssl" \
-DARKNET_USE_BOOST_ASIO=ON -DARKNET_ENABLE_SSL=ON
cmake --build build-vcpkg --parallel 3Integrate Headers Directly
Add include/ and the chosen provider’s include directory to your compiler
search paths, compile as C++20, and link platform socket/thread dependencies.
MySQL connections and secure transports also require OpenSSL’s headers and libraries. On Windows,
link ws2_32 and mswsock, and define NOMINMAX before including Windows headers.
The CMake target propagates NOMINMAX and additionally sets /bigobj for MSVC.
Define configuration macros before including arknet or provider headers:
See direct-header macros for their meanings.