Skip to Content
DevelopersBuild from Source

Build from Source

Tidecoin Core uses CMake. Developers normally build from source so they can run unit tests, functional tests, fuzzers, and local instrumentation.

This page is contributor-facing. Operators building a deployment node should use Node & Operations / Build from Source.

Minimal Build

From the Tidecoin Core repository:

cmake -B build cmake --build build -j"$(nproc)"

Useful binaries are written under build/bin/, including tidecoind, tidecoin-cli, tidecoin-qt when GUI support is enabled, and test binaries where configured.

Toolchain Baseline

DependencyNotes
CMakeTidecoin docs use CMake 3.22 or newer as the baseline.
C++ compilerGCC 11.1 or newer, or Clang 16 or newer.
Python 3Required for functional tests and scripts.
pkg-configUsed by dependency discovery on many Unix systems.
QtOptional GUI build dependency.
SQLiteWallet dependency where descriptor wallet support needs it.
ZeroMQOptional notification interface.
Cap’n ProtoOptional IPC-related dependency.

Check ../tidecoin/doc/dependencies.md and platform-specific build docs when a system package is missing.

Common CMake Options

GoalExample
Configure default buildcmake -B build
Buildcmake --build build -j"$(nproc)"
Use a presetcmake --preset=<preset>
Build libFuzzer targetcmake --preset=libfuzzer
Disable optional componentsPass the relevant -D...=OFF option from CMake help or presets
Inspect cachecmake -LAH build

Do not guess option names in docs or scripts. Use cmake -LAH build, CMakePresets.json, and the repository build docs as the source of truth.

Run Tests After Building

ctest --test-dir build build/test/functional/test_runner.py

For wallet-heavy unit suites that are intentionally gated:

TIDECOIN_RUN_WALLET_TESTS=1 ./build/bin/test_tidecoin --run_test=wallet_tests

Fuzzer Build

For libFuzzer:

cmake --preset=libfuzzer cmake --build build_fuzz FUZZ=process_message build_fuzz/bin/fuzz

Use Fuzzing before adding or changing fuzz targets.

Common First-Build Problems

SymptomCheck
CMake cannot find a packageInstall the dependency or disable the optional feature.
Functional tests cannot find binariesBuild first and run from the repository root or pass the correct config file.
ZMQ tests failInstall Python ZMQ bindings and build with ZMQ support.
IPC tests failInstall pycapnp and Cap’n Proto dependencies.
Wallet tests are missingCheck wallet build options and gated wallet test environment variables.

See also: Testing, Fuzzing, Architecture, Node Build Guide.

Last updated on