scikit-build-core
Build backend for CMake based projects
Decision gist · record as of 2026-08-14
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.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- 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.
- Low installation friction with only six runtime dependencies (packaging, pathspec, tomli, typing-extensions, importlib-resources, exceptiongroup).
- Active maintenance with a release 33 days ago.
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows use in commercial and proprietary projects with minimal restrictions, requiring only license and copyright notice attribution.
last release 2026-07-12 (33 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 11,249,544 downloads/mo, #1,404 on PyPI
Alternatives
Verify before relying
# In pyproject.toml
[build-system]
requires = ["scikit-build-core"]
build-backend = "scikit_build_core.build"
[project]
name = "my_package"
version = "0.0.1"- 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.
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 on it.
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
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.
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.
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"
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 packagesexceptiongroupimportlib-resourcespackagingpathspectomlityping-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 |
| Classifiers | 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 |
Evidence: scikit_build_core-1.0.3-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “c++ extension module builder”
- scikit-build-coreA build backend that uses CMake to compile Python extension modules…
- sipSIP generates Python bindings for C and C++ libraries by processing…
- ccimportccimport builds Python C++ bindings on-the-fly using pybind11 and…
Give your agent the search over MCP, or paste the wish link into any chat.
More Scientific/Engineering packages
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
pandas provides fast, flexible data structures (Series and DataFrame) for loading, cleaning, transforming, and analyzing labeled or relational data in Python.
scipy provides numerical algorithms for mathematics, science, and engineering—including optimization, integration, linear algebra, Fourier transforms, signal and image processing, and ODE solvers—built on numpy arrays.
scikit-learn provides a comprehensive Python library for supervised and unsupervised machine learning, including classification, regression, clustering, dimensionality reduction, and model evaluation tools built on NumPy and SciPy.
Install it if you need to train, evaluate, or deploy supervised or unsupervised learning models.
dill extends Python's pickle module to serialize and deserialize a much wider range of Python objects, including functions, lambdas, classes, and interpreter sessions, to byte streams for storage or network transmission.
Multiprocess is an enhanced fork of Python's standard multiprocessing library that uses dill for better serialization, allowing you to spawn processes with a threading-like API and share complex objects between them.
Install it if you use multiprocessing and encounter pickle serialization limits with lambdas or complex objects.
See also scikit-build · cmake · meson · hatch-cython · cmeel · conan · build · ninja · pytest-cmake · SCons