--- id: scikit-build-core version: "1.0.3" license: Apache-2.0 license_treatment: permissive maintenance: active --- # scikit-build-core — Build backend for CMake based projects License: permissive · Maintenance: active · Downloads: 11.2M/mo ## 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 above — 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 pip install scikit-build-core uv add scikit-build-core 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_current - Install friction: low - Maintenance: active - Downloads: 11.2M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags cmake python build backend, c++ extension module builder, python package compilation cmake, build system for native extensions, pyproject.toml cmake builder, cross-platform extension building, native extension compilation, cmake, native-extensions, build-backend [View on SkillFed](https://skillfed.io/packages/scikit-build-core) · [View on PyPI](https://pypi.org/project/scikit-build-core/)