Generate CMakePresets.json configuration and build presets from the cartesian product of a set of parameters.
Project description
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tcpm-0.3.0.tar.gz.
File metadata
- Download URL: tcpm-0.3.0.tar.gz
- Upload date:
- Size: 30.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43928ffe390bbe6c692bf5aac42d50f6496ee0f362e0f29767ae4bc6e764f608
|
|
| MD5 |
11bd0d79df7c56e4f2d85111a67ec871
|
|
| BLAKE2b-256 |
35b5a351363198a4507645ec9715f4a9949b15812d7ec288e2cd101aa687ad0b
|
Provenance
The following attestation bundles were made for tcpm-0.3.0.tar.gz:
Publisher:
CI.yml on thirtytwobits/the-cmake-preset-matrix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tcpm-0.3.0.tar.gz -
Subject digest:
43928ffe390bbe6c692bf5aac42d50f6496ee0f362e0f29767ae4bc6e764f608 - Sigstore transparency entry: 173894274
- Sigstore integration time:
-
Permalink:
thirtytwobits/the-cmake-preset-matrix@0f486a4f2eb15200108f414e50ef2118489ff4aa -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/thirtytwobits
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@0f486a4f2eb15200108f414e50ef2118489ff4aa -
Trigger Event:
release
-
Statement type:
File details
Details for the file tcpm-0.3.0-py3-none-any.whl.
File metadata
- Download URL: tcpm-0.3.0-py3-none-any.whl
- Upload date:
- Size: 32.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b55c44bcb3bceaa1c964ef29352eef3db2160b8d5d62e4102218f2877cc815b1
|
|
| MD5 |
aea683184bbe57b26f06a283de2769ad
|
|
| BLAKE2b-256 |
9747f8d149ad88773a3b9f52e802524a7ea3a560b3bedb3a9e3e52e276e454e4
|
Provenance
The following attestation bundles were made for tcpm-0.3.0-py3-none-any.whl:
Publisher:
CI.yml on thirtytwobits/the-cmake-preset-matrix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tcpm-0.3.0-py3-none-any.whl -
Subject digest:
b55c44bcb3bceaa1c964ef29352eef3db2160b8d5d62e4102218f2877cc815b1 - Sigstore transparency entry: 173894280
- Sigstore integration time:
-
Permalink:
thirtytwobits/the-cmake-preset-matrix@0f486a4f2eb15200108f414e50ef2118489ff4aa -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/thirtytwobits
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@0f486a4f2eb15200108f414e50ef2118489ff4aa -
Trigger Event:
release
-
Statement type: