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.4.2.tar.gz (156.5 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.4.2-py3-none-win_amd64.whl (2.7 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.28+ x86-64

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

Uploaded Python 3manylinux: glibc 2.28+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

cmakefmt-1.4.2-py3-none-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for cmakefmt-1.4.2.tar.gz
Algorithm Hash digest
SHA256 7e24300ce954a1c87492b09f37f55b04d9d99fc82686020b0b07a08897e4bdc5
MD5 803f7636e927f8ea62ae11dacededdfa
BLAKE2b-256 01bfac5b4f0e69549d24c5df54875dfa0820bb7c85624c438a867a80db8b7220

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.4.2.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.4.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: cmakefmt-1.4.2-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.4.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 180013e042afce428540b50df9d7a540800927886063cec69ee46d5049a75ff9
MD5 eba22189efcc9a8a3eac1affa4b52c93
BLAKE2b-256 7631beb943eaf8fd0154816973aebc23dccda2907f781dc88a5a23e251549577

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.4.2-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.4.2-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.4.2-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5cab4349372495e650645cb23d468ccf19fc662e842ea703244c1df4d5df0f4d
MD5 885d4f7c894982985ba3e93508c9f07c
BLAKE2b-256 2860d3948ed6303d805a5f5c7953167000f9db3cf9ffb9711866069b8a7e3d4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.4.2-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.4.2-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.4.2-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1d279e36e37f286510fe609d90c0eef2d2de648357a459882b1ad157232c9043
MD5 ec8624a2127c5b908f01d14e0d6a9547
BLAKE2b-256 4690b775e799ff85c59361a2dc5d012a512a6f9c348b8156857bf8f0037538dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.4.2-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.4.2-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.4.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 33ed7f37d1d62025a7aabecf025eebd815bc9f778419dab4655d6f0e6e7581ff
MD5 f3643bc998346286939ad8550303111b
BLAKE2b-256 8d17caf1bb34414b4603f922fe3e2f6eb068271dd7f4d104b723c7cd2aeca952

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.4.2-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.4.2-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cmakefmt-1.4.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cea2dd48575112ed00fcdc5b0ec954a2f8e596f2f50acf4b5a3ed962c1b337bc
MD5 cb9f74e32080963ae2d12d6d20e70955
BLAKE2b-256 0b818f7cc4ca21d7237a03c6d0e705e45d31bbb64fca35d3a84c1b3bb7d9def5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmakefmt-1.4.2-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