scikit-build
Improved build system generator for Python C/C++/Fortran/Cython extensions
What it is and what it does
scikit-build acts as glue between Python's setuptools and CMake, letting you define native extension builds using CMake instead of setuptools' native build syntax. It reads your CMakeLists.txt and integrates the compiled artifacts into a Python package, handling platform differences and compiler selection automatically.
The package is designed for projects that already use CMake for their C/C++/Fortran/Cython code and want to package that code as a Python extension. It supports Python 3.8 through 3.14, modern Visual Studio versions including 2026, and handles cross-platform compilation details. The project is actively maintained with recent updates for compiler and setuptools compatibility.
Use it for:
- Build a library with C extensions defined in CMake and distribute it as a PyPI package.
- Compile Fortran code into a Python module while keeping your build logic in CMake.
- Integrate an existing C++ library into Python by wrapping it with Cython and using CMake.
- Support multiple platforms with a single CMake configuration for native extensions.
- Migrate a project from raw setuptools extension building to CMake without rewriting build logic.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
scikit-build bridges setuptools and CMake to compile CPython C/C++/Fortran/Cython extensions, handling integration between Python packaging and native code compilation.
Yes, if you are building Python C/C++/Fortran/Cython extensions and already use or prefer CMake. The package is actively maintained, has low install friction, carries no security vulnerabilities, and is permissively licensed. However, the description recommends evaluating scikit-build-core first if you do not require extensive build customization.
Install
scikit-build on PyPI
pip
pip install scikit-builduv
uv add scikit-buildpoetry
poetry add scikit-buildInstalling scikit-build
Before you install
Low install friction with a pure-wheel distribution and only five runtime dependencies. Actively maintained with recent releases and ongoing support for current Python versions.
License in practice
Licensed under MIT (permissive), so you can use it freely in commercial and open-source projects without significant restrictions.
Quickstart
pip install scikit-build
Create setup.py with CMake configuration in CMakeLists.txt, then run:
python setup.py build
CMake 3.5 or later must be installed on your system; scikit-build is a build-time tool requiring a C/C++/Fortran compiler toolchain.
Verify before relying
- Whether scikit-build-core is recommended as a replacement for most new projects and migration guidance.
- Specific performance characteristics or build-time overhead compared to other build backends.
- Exact usage patterns and setup.py configuration required for typical extension projects.
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — distro, packaging, setuptools, tomli, wheel |
| Maintenance | actively maintained — 52 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,331,713/month — #4,044 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: scikit_build-0.19.1-py3-none-any.whl
Keywords: scikit-build
Tags
More Build Tools packages
Provides reusable utilities for Python…
permissive · top 100 on PyPI
tqdmWraps any iterable to display a real-time…
copyleft · top 100 on PyPI
pippip is the standard installer for Python…
permissive · top 100 on PyPI
hatchlingHatchling is a standards-compliant Python build…
permissive · top 100 on PyPI
grpcio-toolsGenerates Python gRPC service stubs and message…
permissive · top 1,000 on PyPI
pre-commitpre-commit is a framework for installing and…
permissive · top 1,000 on PyPI
cmakeDistributes CMake 4.4.2 as a Python package,…
permissive · top 5,000 on PyPI
scikit-build-coreA build backend that uses CMake to compile…
permissive · top 5,000 on PyPI
scikit-miscscikit-misc provides miscellaneous tools for…
permissive · top 15,000 on PyPI
ninjaDistributes the Ninja 1.13.0 build system as…
permissive · top 1,000 on PyPI
fckitlibProvides Fortran modules and a unit testing…
unclear · top 15,000 on PyPI
extension-helpersProvides build helpers and utilities for Python…
permissive · top 5,000 on PyPI
clang-formatPackages the clang-format code formatter as a…
permissive · top 5,000 on PyPI
CythonCython is a source code translator that…
permissive · top 1,000 on PyPI
ccimportccimport builds Python C++ bindings on-the-fly…
permissive · top 15,000 on PyPI
SConsSCons is a Python-based build system that…
permissive · top 5,000 on PyPI