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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.28+ x86-64

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

Uploaded Python 3manylinux: glibc 2.28+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

cmakefmt-1.4.1-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.1.tar.gz.

File metadata

  • Download URL: cmakefmt-1.4.1.tar.gz
  • Upload date:
  • Size: 156.1 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.1.tar.gz
Algorithm Hash digest
SHA256 605d5103e8e708654d0eb89b630110bc45e13fe7062720bb6f34f491d54f8aef
MD5 7477d8220af13cf62ec6e5c60c0e03ea
BLAKE2b-256 52df346206535884c6a44686d88d8515f9a5cdc211492d6cbe54c47b50de3a9d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cmakefmt-1.4.1-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.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 32affcbd6f9ee174246c50ce693a33c4702a6add8d4bc1d3705695e8f30f641a
MD5 91bce7ed8a70b56564f1d3c668b83391
BLAKE2b-256 f037f9666621b18cd534c0f25534da40ccd1de874f43b6e2fc5056562de89c8c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.4.1-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 41bc6cc96bc5bee117a9146628c780bcb87beee7625d2e18569dbe91220fceca
MD5 09b0a0e016885a5b8a3d7e3391582043
BLAKE2b-256 0edd7002bf15002341fa37e7aeaa782dec9910cf17190f98b0f1468236c8ee3d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.4.1-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4787fecdf4675330a1a90b4cd0f3c3c1dbf018f9a9c089205155afe04759bbfe
MD5 c437a109e34c0acdec2826989e3159e3
BLAKE2b-256 616339b2de79261429e5220a39678756b1f33d918eeca085b0a8d78e64774129

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.4.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89f1fd8a900daba7f0e99ce0899ba2dd0b43700f839d95f70667ef5a15615630
MD5 bcf4d80b148c2e6ad41bdca6dba78f2b
BLAKE2b-256 56ef404de60875bb69007fabe3ded9d36b6fc80245c5609f415286bb08ed48c8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.4.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bc8ce0c4342d47783f780182d11fd34dd646a12c7cc0c1d4f8aee0eb8cee185e
MD5 7da2f37aa73ce4c3e7b71e3c83044572
BLAKE2b-256 6f3af7967b8a0cdbf6b88f2209aca2e686bea31986e30dc7b5e6c7e099101bf3

See more details on using hashes here.

Provenance

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