skillfed

scikit-build-core

Build backend for CMake based projects

scikit-build-core v1.0.3 11.2M downloads/30d#1,404 on PyPI
Permissive license Apache-2.0 Active released

What it is and what it does

Scikit-build-core is a modern Python build backend that replaces setuptools for projects using CMake to compile native extensions. Instead of writing thousands of lines of setuptools/distutils configuration, you write a simple CMakeLists.txt and configure the build in pyproject.toml. It automatically manages CMake and Ninja as build dependencies, handles cross-compilation for Apple Silicon and Windows ARM, and supports C++, Fortran, and other languages.

The package targets scientific computing but works for any CMake-based project. It includes features like reproducible builds, editable mode with optional auto-rebuild, WebAssembly support, and free-threaded Python 3.13+ compatibility. Configuration is flexible via pyproject.toml, command-line options, or environment variables, with sensible defaults that avoid slow generator search and verbose logging.

Use it for:

  • Building scientific packages with C/C++ extensions that need cross-platform compilation and Fortran support.
  • Creating Python packages with complex native code where CMake tooling is already established.
  • Developing WebAssembly packages for Pyodide or Emscripten without setuptools boilerplate.
  • Maintaining reproducible builds for distribution, with opt-in SDist and wheel reproducibility.
  • Migrating from classic Scikit-build while gaining modern Python packaging standards and better error messages.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

A build backend that uses CMake to compile Python extension modules and packages, replacing setuptools-based build systems with a modern, standards-compliant approach.

Yes. Scikit-build-core is production-stable (Development Status 5), actively maintained, has no known vulnerabilities, and low install friction. It is the right choice if your project uses CMake and you want to avoid setuptools complexity. Install it as a build-system requirement in pyproject.toml, not as a runtime dependency—it does not affect end users.

Install

scikit-build-core on PyPI

pip

pip install scikit-build-core

uv

uv add scikit-build-core

poetry

poetry add scikit-build-core

Installing scikit-build-core

Before you install

Low installation friction with only six runtime dependencies (packaging, pathspec, tomli, typing-extensions, importlib-resources, exceptiongroup). Active maintenance with a release 33 days ago. Designed as a build-time tool, so it does not burden runtime environments.

License in practice

Apache-2.0 permissive license allows use in commercial and proprietary projects with minimal restrictions, requiring only license and copyright notice attribution.

Quickstart

# In pyproject.toml
[build-system]
requires = ["scikit-build-core"]
build-backend = "scikit_build_core.build"

[project]
name = "my_package"
version = "0.0.1"

Requires CMake 3.15 or later and Python 3.8+; system C/C++ compiler and CMake must be available or will be installed as build dependencies.

Verify before relying

  • Actual build performance and caching behavior compared to alternative approaches in real-world projects.
  • Completeness of Hatchling and Setuptools integration backends and their stability relative to the native pyproject builder.
  • Practical experience with the experimental auto-rebuild-on-import feature for development workflows.

Package facts

License Apache-2.0 (permissive)
Python support supports the current Python release (>=3.8)
Install friction low — pure-Python wheel
Runtime dependencies 6 — exceptiongroup, importlib-resources, packaging, pathspec, tomli, typing-extensions
Maintenance actively maintained — 33 days since the last release
First released
Downloads 11,249,544/month — #1,404 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: scikit_build_core-1.0.3-py3-none-any.whl

Development Status :: 5 - Production/StableIntended Audience :: DevelopersIntended Audience :: Science/ResearchOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.15Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Free Threading :: 4 - ResilientTopic :: Scientific/EngineeringTopic :: Software Development :: Build ToolsTyping :: Typed

Tags

cmake python build backendc++ extension module builderpython package compilation cmakebuild system for native extensionspyproject.toml cmake buildercross-platform extension buildingnative extension compilation
cmakenative-extensionsbuild-backend

More Scientific/Engineering packages