Skip to main content

A fast, correct CMake formatter

Project description

cmakefmt banner

cmakefmt

CI
CI Pages Coverage CodSpeed

Package
Crates.io dependency status

Security & Quality
REUSE status OpenSSF Scorecard OpenSSF Best Practices

A fast, correct CMake formatter — cmake-format, reimagined in Rust.

cmakefmt demo

Contents

Why cmakefmt?

  • Drop-in replacement for cmake-format. A single native binary with the same workflows and no Python environment to manage.
  • 100× faster. Geometric-mean speedup over cmake-format across a corpus of 14 large open-source repositories (see Performance).
  • Workflow-first design. --check, --diff, --staged, --changed, semantic verification, JSON/SARIF/JUnit reports, an LSP server, and a GitHub Action are all first-class features rather than scripted afterthoughts.

Install

brew install cmakefmt/cmakefmt/cmakefmt   # macOS / Linux (Homebrew)
pip install cmakefmt                      # any platform with Python
cargo install cmakefmt-rust               # any platform
winget install cmakefmt.cmakefmt          # Windows

Conda, Docker, pre-built binaries, and full setup notes are documented at Installation.

Quick start

cmakefmt --in-place .   # format every CMake file in the project

The full CLI reference, configuration schema, editor integrations, and migration guide from cmake-format all live at cmakefmt.dev.

GitHub Action

The official cmakefmt-action wraps the binary for use in CI workflows:

- uses: actions/checkout@v6
- uses: cmakefmt/cmakefmt-action@v2

That snippet is the strict whole-repo check: it fails the job and emits inline PR annotations for any file that would change under formatting. The action also supports other modes and file-selection scopes:

- uses: cmakefmt/cmakefmt-action@v2
  with:
    mode: diff       # check, diff, fix, or setup
    scope: changed   # all, changed, or staged

For the complete list of inputs and recommended rollout patterns, see the cmakefmt-action README.

Documentation

The full documentation lives at cmakefmt.dev.

Page Description
Getting Started First format in under a minute
Installation Every install channel and setup notes
CLI Reference Every flag, subcommand, exit code
Config Reference Full config schema with examples
Migration from cmake-format Incremental rollout guide
Editor Integration VS Code, Neovim, Helix, Zed, Emacs
Comparison vs cmake-format and gersemi
Performance Benchmark methodology and numbers
Library API Embed cmakefmt in Rust code
Troubleshooting Common issues and debug workflow
Playground Try cmakefmt in your browser
Contributing / Changelog How to help; what changed

Status

cmakefmt is stable and actively maintained. The built-in command spec is audited against CMake 4.3.1. The release contract and per-channel support levels are documented at Release.

License

cmakefmt is dual-licensed under MIT or Apache-2.0, at your option.


This project is independent from other Rust crates of the same name — it is not affiliated with azais-corentin/cmakefmt or yamadapc/cmakefmt.

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

cmakefmt-1.5.0.tar.gz (159.2 kB view details)

Uploaded Source

Built Distributions

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

cmakefmt-1.5.0-py3-none-win_amd64.whl (2.7 MB view details)

Uploaded Python 3Windows x86-64

cmakefmt-1.5.0-py3-none-manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

cmakefmt-1.5.0-py3-none-manylinux_2_28_aarch64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

cmakefmt-1.5.0-py3-none-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

cmakefmt-1.5.0-py3-none-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file cmakefmt-1.5.0.tar.gz.

File metadata

  • Download URL: cmakefmt-1.5.0.tar.gz
  • Upload date:
  • Size: 159.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cmakefmt-1.5.0.tar.gz
Algorithm Hash digest
SHA256 5b6a93540145d17aa244d679884407eaa3855dd2f54355d7e34ed6131016212a
MD5 b546f0a5d41fc69f1d3eb40e72f43533
BLAKE2b-256 76b4b93a69bb42222ec99cb6827c50fb40738bbc39fdd0f945ed58d863aa8ecc

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.5.0.tar.gz:

Publisher: release.yml on cmakefmt/cmakefmt

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

File details

Details for the file cmakefmt-1.5.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: cmakefmt-1.5.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cmakefmt-1.5.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0f28145a6164f04913c1af74274b125f2b0e59355579a2d820bf0bea318401ec
MD5 4fdbf6ce50e5ef3520fe209ed04b979f
BLAKE2b-256 546588f368e944135aa0ed48e35feecde5aa60f588db28a982ef670f46ea7757

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.5.0-py3-none-win_amd64.whl:

Publisher: release.yml on cmakefmt/cmakefmt

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

File details

Details for the file cmakefmt-1.5.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.5.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 93da8cc3b8fcb23b0220fa6406182ca79584df611dc38ab5fb76a0bd5a6d1b6f
MD5 30f961306c2109fcc20206f5f6edd1fa
BLAKE2b-256 7aa0d375e427eb913936c5a43b2df05d52844dbb6506be453255263216109597

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.5.0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmakefmt/cmakefmt

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

File details

Details for the file cmakefmt-1.5.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.5.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 33f27102c036ce60c781a8eea553584a952fcf9f69399b4b0c23195167512a7c
MD5 e28a5764391020ece1cb1826df950746
BLAKE2b-256 6796b23781b9022614bead79562b74d93f78d56d5c27c2ff783c233e598784ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.5.0-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmakefmt/cmakefmt

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

File details

Details for the file cmakefmt-1.5.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.5.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a6b273823dcfb414840f8b0551b72cf71b403473e7ea0e59d221c54cb9e277e1
MD5 f2e9590ebb6fd678f328569eae994936
BLAKE2b-256 450c3c4587beafa2869bc52fcc72b94b9381458f0ea2366dacc6c9a594489f16

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.5.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on cmakefmt/cmakefmt

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

File details

Details for the file cmakefmt-1.5.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.5.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 203581d89f781607c7df4611973d755fdf3e1777b8dc556f49deb2f68adaa8dc
MD5 05c4cd4bb1ca2eaa12beff18d796760e
BLAKE2b-256 bf1cf06607413fdc3aaf2a66fdb186d3b046700c79a453219cc6b51d7325aace

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.5.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on cmakefmt/cmakefmt

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