Like many C++ projects, VAST uses CMake to manage the build process. Aside from a modern C++20 compiler, you need to ensure availability of the dependencies in the table below.
We provide Nix expressions for deterministic builds.
|✓||C++ Compiler||C++20 required||VAST is tested to compile with GCC >= 10.0 and Clang >= 13.0.|
|✓||CMake||>= 3.19||Cross-platform tool for building, testing and packaging software.|
|✓||CAF||>= 0.18.6||Implementation of the actor model in C++. (Bundled as submodule.)|
|✓||OpenSSL||Utilities for secure networking and cryptography.|
|✓||FlatBuffers||>= 1.12.0||Memory-efficient cross-platform serialization library.|
|✓||Apache Arrow||>= 8.0.0||Required for in-memory data representation. Must be built with Compute, Zstd and Parquet enabled.|
|✓||yaml-cpp||>= 0.6.2||Required for reading YAML configuration files.|
|✓||simdjson||>= 0.7||Required for high-performance JSON parsing.|
|✓||spdlog||>= 1.5||Required for logging.|
|✓||fmt||>= 7.1.3||Required for formatted text output.|
|✓||xxHash||>= 0.8.0||Required for computing fast hash digests.|
|✓||robin-map||>= 0.6.3||Fast hash map and hash set using robin hood hashing. (Bundled as subtree.)|
|✓||fast_float||>= 3.2.0||Required for parsing floating point numbers. (Bundled as submodule.)|
|yarn||Required for building the web frontend.|
|libpcap||Required for PCAP import, export, and pivoting to and from PCAP traces.|
|restinio||Required for providing a REST API|
|Doxygen||Required to build documentation for libvast.|
|Pandoc||Required to build manpage for VAST.|
The minimum specified versions reflect those versions that we use in CI and manual testing. Older versions may still work in select cases.
We provide a Nix flake you can use to setup an environment in which all
dependencies are available. Running
nix develop inside the main source
directory will get you there.
You can also delegate the entire build process to Nix with by invoking
nix build, but be aware that this method does not support incremental
builds in case you plan to make changes to the source code.
Building VAST involves the following steps:
Download the latest release or clone the repository recursively:
git clone --recursive https://github.com/tenzir/vast
Configure the build with CMake. For faster builds, we recommend passing
cmake -B build
# CMake defaults to a "Debug" build. When performance matters, use "Release"
cmake -B build -DCMAKE_BUILD_TYPE=Release
Optionally, you can use the CMake TUI to visually configure the build:
The source tree also contains a set of CMake presets that combine various configuration options into curated build flavors. You can list them with:
Build the executable:
cmake --build build --target all
After you have built the executable, run the unit and integration tests to verify that your build works as expected:
Run component-level unit tests:
ctest --test-dir build
Run end-to-end integration tests:
cmake --build build --target integration
- Install VAST system-wide.
cmake --install build
If you prefer to install into a custom install prefix, install with
/path/to/install/prefix. To remove debug symbols from the installed binaries
and libraries, pass
--strip. To install only files relevant for running VAST
and not for plugin development pass
In case you want to make changes to your build environment, we recommend deleting the build tree entirely:
rm -rf build
This avoids subtle configuration glitches of transitive dependencies. For
example, CMake doesn't disable assertions when switching from a
Release build, but would do so when starting with a fresh build of type