cxx-init
A small personal tool for creating clean, modern C++ projects without repeating the same setup work.
Install
uv tool install cxx-init
Alternatively, use pipx:
pipx install cxx-init
Create a project
cxx init hello
cd hello
cmake --workflow --preset dev
The generated project uses normal C++ tooling directly and does not depend on cxx after creation.
Upgrade or uninstall the tool with:
uv tool upgrade cxx-init
uv tool uninstall cxx-init
Requirements
cxx requires Python 3.10 or newer. Generated projects require CMake 3.25 or newer,
Ninja, and a C++23 compiler.
Design priorities
- Personal developer experience first.
- Small, readable implementation.
- Minimal generated files.
- No hidden host mutation.
- No build-system wrapper.
- No network requirement during project creation.
- Prefer boring, inspectable code over framework-heavy abstractions.
Scope
The current product creates one canonical app project. Additional artifact types remain deferred
until real usage demonstrates a need for them:
lib
header-only
Initial generated projects use:
C++23
Modern target-centric CMake
CMake Presets / Workflow Presets
Ninja
clangd
clang-format
clang-tidy
CTest
ASan / UBSan where supported
compile_commands.json
Dependency managers, C++26, Modules, ROS, CUDA, benchmarking and fuzzing are intentionally deferred.
Repository documents
AGENTS.md— rules for Codex and other coding agents.docs/architecture.md— architecture and boundaries.docs/implementation-plan.md— current implementation sequence.
Development
Build the wheel and source distribution with:
uv build
Run the black-box test suite with:
python3 -m unittest discover -s tests -v
Release files for cxx-init 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cxx_init-0.1.0.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cxx_init-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.5 kB
Release files / cxx_init-0.1.0.tar.gz
| Download URL | cxx_init-0.1.0.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c12248deee23966c730f213c4e063a91679f4897226ce3d8ba9cded9797bae9
|
|
BLAKE2b-256 checksum How to use checksums |
9dd5ab54f89ab684570ce04f334d348cf9c1f11a653ac8c4f0a1c2735e910196
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.
Transparency logRelease files / cxx_init-0.1.0-py3-none-any.whl
| Download URL | cxx_init-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
82b6bf041855387aef6b07626807340e6467c6962a29c39a9965f74854c4fa3c
|
|
BLAKE2b-256 checksum How to use checksums |
e3101663a51f9269a1b6eea75c022f492804c9aca79a25f607e5e12c87c27157
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.
Transparency log