Flow config

Flow config file is a YAML file saved as .flow/config.yml. It is used by various parts of Project Flow to negotiate some details with the project maintainer.

cmake

Settings used by various CMake-based steps.

cmake.vars

Object consisting of CMake variables, which should be used by the CMake configuration step. Each key in the object is the name of the variable and the corresponding value references the source of CMake variable value.

If the reference starts with a "?", then this variable is an "ON" / "OFF" variable, otherwise it will be a string variable. Then if the rest of the reference starts with config:, the config for current run will be used to retrieve the value. Finally, if that start was runtime:, the Runtime object is queried for the value.

Currently the default value is passed through Mustache engine:

cmake:
  vars:
    {{NAME_PREFIX}}_COVERAGE: "?config:coverage"
    {{NAME_PREFIX}}_SANITIZE: "?config:sanitizer"
    {{NAME_PREFIX}}_CUTDOWN_OS: "?runtime:cutdown_os"

compiler

An object containing knowledge about compilers used.

compiler.names

Names of the compilers to use, when configuring Conan and CMake with any given compiler in the configuration from config matrix.

names:
  clang: [ clang, clang++ ]
  gcc: [ gcc, g++ ]

compiler.names.<compiler>

A list of two items. First one will be used for $CC environment variable, the other for $CXX variable.

[ clang, clang++ ]
[ gcc, g++ ]

compiler.os-default

A map of default compilers for given platform, used, when $DEV_CXX environment variable is missing. Currently

{ ubuntu: gcc, windows: msvc }

entry

An object, where each key is an alias for run and each value is a list of steps.

entry.<alias>

List of step names, which should be run, when this alias is used as command.

lts

An object used by ci matrix to expand various platform to lists of their current LTS variants.

lts.ubuntu

A list of Ubuntu LTS systems. Currently

lts:
  ubuntu:
    - ubuntu-20.04
    - ubuntu-22.04
    - ubuntu-24.04

package

Object describing the details of behavior for Pack step.

package.main-group

When CPack is configured to create an archive per component group, this will name the group, which should be renamed to group-less filename. If missing, does nothing.

postproc

An object resembling fragment of flow matrix, but only excludes are being read in current version.

postproc.exclude

A list of matrix excludes to be applied after other matrix operations in order to further limit the number of usable configurations. Currently, used to limit configurations created by exploding the LTS platforms:

postproc:
  exclude:
    - { github_os: ubuntu-20.04, sanitizer: true }
    - { github_os: ubuntu-24.04, sanitizer: true }
    - { github_os: ubuntu-20.04, compiler: clang }

shortcuts

An object, whose keys represent flags in ./flow run and whose values are mapped to additional -D params.

shortcuts:
  dbg: { build_type: Debug, sanitizer: false }
  rel: { build_type: Release, sanitizer: false }
  both: { build_type: [ Debug, Release ], sanitizer: false }
  sane: { build_type: Debug, sanitizer: true }

sign

An object helping to decide what, if anything, should be signed during the Sign and SignPackages steps.

sign.directories

A list of directories, where the binaries to sign should be located. It prepends the build directory, so if there is a "bin" directory and current config works inside build/debug, then the binaries should be located in build/debug/bin. If missing, will default to

["bin", "lib", "libexec", "share"]

sign.exclude

When browsing through sig.directories, which binaries should not be signed. When missing, defaults to

["*-test"]