Skip to main content

Generate CMakePresets.json configuration and build presets from the cartesian product of a set of parameters.

Project description

Build status Supported Python Versions PyPI Release Version GitHub deployments

TCPM is a CMakePresets.json transformation tool that generates presets for the cartesian product of a set of parameters. For example, given two toolchains :

"toolchain": [
    "gcc",
    "clang"
],

and two different c++ language standards:

"standard": [
    "cpp-20",
    "cpp-23"
],

the tcpm tool will generate four (4) configuration presets:

{
    "name": "configure-gcc-cpp-20"
},
{
    "name": "configure-gcc-cpp-23"
},
{
    "name": "configure-clang-cpp-20"
},
{
    "name": "configure-clang-cpp-23"
},

If you added a third parameter list with two items then TCPM would generate eight (8) configurations, the cartesian product producing \(|A| \times |B| = |A| * |B|\) items.

TCPM also provides a template language to allow generation of various preset fields like "cacheVariables". These templates, called “shapes” in the json, are given contextual tokens to use in string expansion and, for more complex logic, the pQuery DSL embedded in TCPM allows procedural expansion of fields based on the state of a presets document at the time a given preset is generated.

There’s a lot more to it, of course, and TCPM provides a complete JSON transformation language for presets json in in addition to other features. To get started we reccommend starting with the Try Me exercise.

Key Features

  • Matrix Builds – Provides a way to manage large matrices of build types for complex projects that doesn’t require copy-and-paste or a lot of typing 😩

  • Idempotent – The tool will continue to produce the same output given the same parameters as inputs. This allows automated generation of CMakePresets.json files from themselves or using separate template files.

  • Preserves Existing Presets – Any presets that are manually added to a CMakePresets.json file will be maintained when using the “expand-in-place” features of this tool.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tcpm-0.3.3.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tcpm-0.3.3-py3-none-any.whl (32.8 kB view details)

Uploaded Python 3

File details

Details for the file tcpm-0.3.3.tar.gz.

File metadata

  • Download URL: tcpm-0.3.3.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for tcpm-0.3.3.tar.gz
Algorithm Hash digest
SHA256 2bf048ffb12c0fad4cef8763d26ac34b8d3fdfe097ebc15a3bf2b65a92a35c1a
MD5 c3f7ea77d8c47992f150470c2530a1b2
BLAKE2b-256 969ee211d8b113e88cc1a2e62491be033a0738c8e8b574c1ff23f1c034819387

See more details on using hashes here.

Provenance

The following attestation bundles were made for tcpm-0.3.3.tar.gz:

Publisher: CI.yml on thirtytwobits/the-cmake-preset-matrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tcpm-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: tcpm-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 32.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for tcpm-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4cc2c96c58a297d722e8dd83809e3fddfff20bde11cf6bd46c9b6629bcb9694d
MD5 60f6a43c1bd0a0d2e258f69a128420e7
BLAKE2b-256 258991f1bcd4b587836f003f486f810624d161e03f17924f79407be6993fbb31

See more details on using hashes here.

Provenance

The following attestation bundles were made for tcpm-0.3.3-py3-none-any.whl:

Publisher: CI.yml on thirtytwobits/the-cmake-preset-matrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page