Skip to main content

Prerequisites

Platforms and Language Requirements​

Windows, Linux, and macOS are supported. Project code requires C++14; traditional stackful coroutines do not require C++20. The standard coroutine backend requires C++20 and standard coroutine support; see build for switching.

Third-party dependencies have their own compiler and language requirements; newer releases can need higher standards. The build chooses dependency versions and available features for the toolchain. A local C++20 build setting does not define the project's minimum source requirement. Setting CMAKE_CXX_STANDARD=14 alone does not make arbitrary dependency versions C++14-compatible.

Toolchain​

ToolPurpose and requirement
CMake ≥ 3.24Configuration, code generation, and builds
MSVC / GCC / Clang / AppleClangC++14 support; the standard coroutine backend also needs C++20 coroutine support
Python 3Protocol/config generation; dependencies are configured by the project toolchain
Java Runtimexresloader Excel exports; checked during configuration
PowerShell 7+Windows build and runtime helper scripts
BashLinux/macOS build and runtime helper scripts
gitProject and framework submodules
Gorobot simulated client; version/build managed by robot tooling
vcpkg (optional)Pass its toolchain file when using existing Windows dependencies

cmake-toolset ports manage dependencies (third_party/Repository.cmake); existing dependency installations can also be used. After the initial build configuration, reuse the directory for routine development.

Runtime Dependencies​

etcd​

Standard services register/discover through etcd; atproxy uses it for online detection too. Published tools/script/start_local_test_env.sh/.ps1 scripts start etcd and Redis together; see run and deploy.

For a temporary etcd-only test instance:

bash atframework/libatapp/ci/etcd/setup-etcd.sh start
pwsh -NoLogo -NoProfile -File atframework/libatapp/ci/etcd/setup-etcd.ps1 -Command start

The default port is 12379. ATAPP_UNIT_TEST_ETCD_HOST belongs to libatapp tests. Configure business services' etcd addresses in deployment values; the two settings are not synchronized automatically.

Redis​

Services using persistence for user data, caches, DTMQ, transactions, and similar features need Redis. The framework supports cluster and raw/sentinel connections; configure them for the selected services. The raw message echo example does not require the complete data layer.

Directory Conventions​

<BUILD_DIR> means your actual build directory. Prefer cmake.buildDirectory in .vscode/settings.json; otherwise use clangd's --compile-commands-dir or an existing directory. This workspace uses build_jobs_cmake_tools.

Services and runtime resources go to <BUILD_DIR>/publish/; unit tests default to <BUILD_DIR>/test/, and samples to <BUILD_DIR>/sample/. Linux/macOS's cmake_dev.sh can also create a platform-specific build directory.