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.7.0.tar.gz (176.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.7.0-py3-none-win_amd64.whl (2.8 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.28+ x86-64

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

Uploaded Python 3manylinux: glibc 2.28+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

cmakefmt-1.7.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.7.0.tar.gz.

File metadata

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

File hashes

Hashes for cmakefmt-1.7.0.tar.gz
Algorithm Hash digest
SHA256 b42e61c58be40b25429b526c089f3d36fe561bea0a13b0f5b6a6f9e525ba9799
MD5 8d18fb8d94d2064c881e628cbda576f4
BLAKE2b-256 8988e41278b1bcdf18c54ffb66ac1a55e1b1aa661f1dcb44fd2342db604c11df

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for cmakefmt-1.7.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 585970ca8863d717774bf6c5ee0d7a3ef5ec8851c0006971059a7f29022b1c53
MD5 a59ae4e2eca3cce812f4876b3a8be4f3
BLAKE2b-256 2a366c50a105b2585d1710bc946c11e99969d60cb2d53864af7b648566d1c959

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.7.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1dd0126e741dcbdb52c725db3a3d71f90a7b846aceb51c53eb0962100e994573
MD5 813e378fb21bbaa653c7b147ba967ace
BLAKE2b-256 f944b760e3974bd6b9c1f4221e91889f09f148d604118be163a995f38e854fc7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.7.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2f51b89818ca477231cf45023491d402a6fe4042c7f61addea579da5d5088827
MD5 a3ddb7a88fb177ca0ac8981206c613b3
BLAKE2b-256 b82b0b8f8fded979bd2bf9acca3d3a7de7e6e467365fcce5405372125b22329d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.7.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99afcbde5703729276937a237327f2e1025c9232001a175ae40865bc97dc8e5c
MD5 8d15d6effe09a3eb288438566a55d650
BLAKE2b-256 aa8c72f7323c290e3f13a8434a2adbae2c842bb4bd5c5f5923b943d2f49dfa71

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cmakefmt-1.7.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7b26f84ccde5d681df4aed743ccd626c80222aa7b4ab9934b5d659deb3581832
MD5 935f00459d0487121e11d1f8c325c362
BLAKE2b-256 05d375ff9f71f58321cd857fc587462fdef139fbc68ee278647b4e3e9d55fba6

See more details on using hashes here.

Provenance

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