{"library":"scikit-build","title":"Scikit-build","description":"Scikit-build is a Python build system that acts as a glue layer between `setuptools` and `CMake` to facilitate the building of CPython C/C++/Fortran/Cython extensions. It is currently at version 0.19.0 and has an active development cycle, with a focus on fixing bugs and improving compatibility. The next generation, `scikit-build-core`, is under active development and offers a more modern, standalone approach without direct reliance on `setuptools`.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install scikit-build"],"cli":null},"imports":["from skbuild import setup"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"# pyproject.toml\n[build-system]\nrequires = [\"setuptools>=42\", \"scikit-build>=0.13\", \"cmake>=3.18\", \"ninja\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"hello-cpp\"\nversion = \"0.0.1\"\n\n# setup.py\n# This file would be in the same directory as pyproject.toml\n# In a 'hello' subdirectory, you would have a '_hello.cxx' and '__init__.py'\n# In the project root, you would also have a 'CMakeLists.txt'\n\nfrom skbuild import setup\n\nsetup(\n    name=\"hello-cpp\",\n    version=\"0.0.1\",\n    description=\"A minimal C++ extension package using scikit-build\",\n    author='The scikit-build team',\n    license=\"MIT\",\n    packages=['hello'],\n    python_requires=\">=3.8\",\n)\n\n# CMakeLists.txt (example content, not runnable Python):\n# cmake_minimum_required(VERSION 3.18...3.22)\n# project(hello CXX)\n# find_package(PythonExtensions REQUIRED)\n# add_library(_hello MODULE hello/_hello.cxx)\n# python_extension_module(_hello)\n# install(TARGETS _hello LIBRARY DESTINATION hello)","lang":"python","description":"To use scikit-build, you typically define your build requirements in `pyproject.toml`, replace `setuptools.setup` with `skbuild.setup` in your `setup.py`, and provide a `CMakeLists.txt` to describe how to build your C/C++/Fortran/Cython extensions. The `packages` argument in `setup()` helps scikit-build locate your Python modules, which will then be combined with artifacts built by CMake. A simple `hello` subdirectory with `_hello.cxx` (your C++ source) and an empty `__init__.py` is a common starting point.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"0.19.0","pypi_latest":"0.19.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2,"avg_import_s":0.78,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.95,"mem_mb":16.2,"disk_size":"20.6M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.68,"mem_mb":16.2,"disk_size":"21M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.23,"mem_mb":17.8,"disk_size":"23.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.99,"mem_mb":17.8,"disk_size":"23M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.57,"mem_mb":17.6,"disk_size":"22.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.55,"mem_mb":17.6,"disk_size":"23M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.52,"mem_mb":17.9,"disk_size":"22.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.52,"mem_mb":17.9,"disk_size":"23M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.01,"mem_mb":15.8,"disk_size":"20.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"scikit-build","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.82,"mem_mb":15.8,"disk_size":"21M"}]}}