Give AlbumentationsX a star on GitHub — it powers this leaderboard

Star on GitHub

scikit-build

Improved build system generator for Python C/C++/Fortran/Cython extensions

Rank: #3944Downloads: 1,175,486 (30 days)Stars: 530Forks: 125

Description



**scikit-build** is a Python build system for CPython C/C++/Fortran/Cython
extensions using CMake.

The scikit-build package is fundamentally just glue between the ``setuptools``
Python module and `CMake`_.

The next generation of scikit-build, `scikit-build-core`_, is currently under development.
This provides a simple, reliable build backend for CMake that does not use
setuptools and provides a lot of new features. Scikit-build-core can also power
a setuptools-based extension system, which will eventually become the backend
for scikit-build (classic). If you do not require extensive customization of
the build process, you should consider trying scikit-build-core instead of
scikit-build.

To get started, see `this example <https://scikit-build.readthedocs.io/en/latest/usage.html#example-of-setup-py-cmakelists-txt-and-pyproject-toml>`_. For more examples, see `scikit-build-sample-projects <https://github.com/scikit-build/scikit-build-sample-projects>`_.



Scikit-build 0.18.1
===================

This release fixes issues with setuptools 74, and avoids a warning from recent
versions of wheel. Android and iOS are now included in known platforms.

Bug fixes
---------

* Support for setuptools 74 in `#1116 <https://github.com/scikit-build/scikit-build/pull/1116>`_
* iOS and Android support by `@FeodorFitsner <https://github.com/FeodorFitsner>`_ in `#1101 <https://github.com/scikit-build/scikit-build/pull/1101>`_


Testing
-------

* Fix for distutils change in `#1103 <https://github.com/scikit-build/scikit-build/pull/1103>`_
* Remove test directives by `@s-t-e-v-e-n-k <https://github.com/s-t-e-v-e-n-k>`_ in `#1108 <https://github.com/scikit-build/scikit-build/pull/1108>`_



Scikit-build 0.18.0
===================

This release bumps the minimum required CMake to 3.5 and supports CPython 3.13.

Bug fixes
---------

* Support MSVC 17.10 in `#1081 <https://github.com/scikit-build/scikit-build/pull/1081>`_
* CMake 3.5+ requirement in `#1095 <https://github.com/scikit-build/scikit-build/pull/1095>`_
* Support CPython 3.13 with windows lib finding fix in `#1094 <https://github.com/scikit-build/scikit-build/pull/1094>`_
* Don't die on PermissionError during chmod by `@mweinelt <https://github.com/mweinelt>`_ in `#1073 <https://github.com/scikit-build/scikit-build/pull/1073>`_
* Remove usage of deprecated distutils in cmake files by `@hmaarrfk <https://github.com/hmaarrfk>`_ in `#1032 <https://github.com/scikit-build/scikit-build/pull/1032>`_
* Use first available option for vswhere output by `@ZzEeKkAa <https://github.com/ZzEeKkAa>`_ in `#1030 <https://github.com/scikit-build/scikit-build/pull/1030>`_


Testing
-------

* Support setuptools 69.3.0 changes in two tests by `@s-t-e-v-e-n-k <https://github.com/s-t-e-v-e-n-k>`_ in `#1087 <https://github.com/scikit-build/scikit-build/pull/1087>`_
* Use uv in a few places in `#1092 <https://github.com/scikit-build/scikit-build/pull/1092>`_

Fedora CI
---------

* Fedora maintenance by `@LecrisUT <https://github.com/LecrisUT>`_ in `#1078 <https://github.com/scikit-build/scikit-build/pull/1078>`_
* Fedora: Fix rsync filter rule by `@LecrisUT <https://github.com/LecrisUT>`_ in `#1003 <https://github.com/scikit-build/scikit-build/pull/1003>`_
* Fix Fedora tests by `@LecrisUT <https://github.com/LecrisUT>`_ in `#1050 <https://github.com/scikit-build/scikit-build/pull/1050>`_
* Fedora downstream CI by `@LecrisUT <https://github.com/LecrisUT>`_ in `#993 <https://github.com/scikit-build/scikit-build/pull/993>`_

Miscellaneous
-------------

* Clean up pylint in `#1017 <https://github.com/scikit-build/scikit-build/pull/1017>`_
* Fix mypy type ignores for new setuptools types in `#1082 <https://github.com/scikit-build/scikit-build/pull/1082>`_
* Move to Ruff-format in `#1035 <https://github.com/scikit-build/scikit-build/pull/1035>`_
* Remove pkg_resources and test command in `#1014 <https://github.com/scikit-build/scikit-build/pull/1014>`_
* Ruff moved to astral-sh in `#1007 <https://github.com/scikit-build/scikit-build/pull/1007>`_
* Target-version no longer needed by Black or Ruff in `#1008 <https://github.com/scikit-build/scikit-build/pull/1008>`_
* Update ruff and fix warnings in `#1060 <https://github.com/scikit-build/scikit-build/pull/1060>`_
* Use 2x faster black mirror in `#1021 <https://github.com/scikit-build/scikit-build/pull/1021>`_
* Group dependabot updates in `#1054 <https://github.com/scikit-build/scikit-build/pull/1054>`_
* macos-latest is changing to macos-14 ARM runners in `#1083 <https://github.com/scikit-build/scikit-build/pull/1083>`_
* Skip win PyPy PEP 518 in `#1091 <https://github.com/scikit-build/scikit-build/pull/1091>`_


Scikit-build 0.17.6
===================

A small fix release with some new platforms and better testing, including CPython 3.12.0b1.

Bug fixes
---------

* Support added for SunOS by `@mtelka <https://github.com/mtelka>`_ in `#983 <https://github.com/scikit-build/scikit-build/pull/983>`_.
* Support added for AIX (with recent CMake) by `@bhuntsman <https://github.com/bhuntsman>`_ in `#988 <https://github.com/scikit-build/scikit-build/pull/988>`_.

Testing
-------

* Tests now pass on CPython 3.12.0b1 in `#879 <https://github.com/scikit-build/scikit-build/pull/879>`_.
* Tests no longer use ``pytest-virtualenv`` in `#879 <https://github.com/scikit-build/scikit-build/pull/879>`_.
* ``isolated`` marker now includes ``test_distribution`` tests in `#879 <https://github.com/scikit-build/scikit-build/pull/879>`_.
* Tests avoid incorrect ``get_map`` match by `@keszybz <https://github.com/keszybz>`_ in `#990 <https://github.com/scikit-build/scikit-build/pull/990>`_.
* Fedora testing fix by `@LecrisUT <https://github.com/LecrisUT>`_ in `#986 <https://github.com/scikit-build/scikit-build/pull/986>`_ and `#938 <https://github.com/scikit-build/scikit-build/pull/938>`_.

Miscellaneous
-------------

* Docs improvements in `#979 <https://github.com/scikit-build/scikit-build/pull/979>`_.

Scikit-build 0.17.5
===================

A small fix release fixing the passing on of generator specific arguments. This
fixes some cases where the Ninja generator was found but then was unable to
build. NetBSD was reported to work, so was added to the BSD's supported.

Bug fixes
---------

* Generator args were missing for actual compile in `#975 <https://github.com/scikit-build/scikit-build/pull/975>`_.
* Add support for netbsd & pyodide (future) in `#977 <https://github.com/scikit-build/scikit-build/pull/977>`_.



Scikit-build 0.17.4
===================

A followup fix to the issue 0.17.3 tried to fix. We now have a method to
manually test downstream packages, too.

Bug fixes
---------

* Make sure include dir is found even if the lib is not present in `#974 <https://github.com/scikit-build/scikit-build/pull/974>`_.

Scikit-build 0.17.3
===================

A small release related to ``PYTHON_LIBRARY`` handling changes in 0.17.2;
scikit-build 0.17.3 returns an empty string from ``get_python_library`` if no
Python library is present (like on manylinux), where 0.17.2 returned None, and
previous versions returned a non-existent path. Note that adding ``REQUIRED``
to ``find_package(PythonLibs`` will fail, but it is incorrect (you must not
link to ``libPython.so``) and was really just injecting a non-existent path
before.

Bug fixes
---------

* Keep ``get_python_library``  return type string if python lib non-existing
  for now in `#959 <https://github.com/scikit-build/scikit-build/pull/959>`_.
* Avoid 'not found' warning if libs are not found by FindPythonExtensions in `#960 <https://github.com/scikit-build/scikit-build/pull/960>`_.
* FindNumPy should not call FindPythonLibs in `#958 <https://github.com/scikit-build/scikit-build/pull/958>`_.

Scikit-build 0.17.2
===================

Another small release with fixes for non-MSVC Windows platforms.

Bug fixes
---------

* RPM spec fix by `@LecrisUT <https://github.com/LecrisUT>`_ in `#937 <https://github.com/scikit-build/scikit-build/pull/937>`_.
* Validate value before returning library path by `@dlech <https://github.com/dlech>`_ in `#942 <https://github.com/scikit-build/scikit-build/pull/942>`_.
* Only add ``Python_LIBRARY`` on Windows MSVC in `#943 <https://github.com/scikit-build/scikit-build/pull/943>`_ and `#944 <https://github.com/scikit-build/scikit-build/pull/944>`_.
* Slightly nicer traceback for failed compiler in `#947 <https://github.com/scikit-build/scikit-build/pull/947>`_.

Testing
-------
* Hide a few warnings that are expected in `#948 <https://github.com/scikit-build/scikit-build/pull/948>`_.

Scikit-build 0.17.1
===================

This is a small release fixing a few bugs; the primary one being a change that
was triggering a bug in older FindPython. The unused variable messages have
been deactivated to simplify output, as well.

Bug fixes
---------

* Older (<3.24) CMake breaks when lib specified in `#932 <https://github.com/scikit-build/scikit-build/pull/932>`_.
* An error output was missing formatting in `#931 <https://github.com/scikit-build/scikit-build/pull/931>`_.
* Make empty ``CMAKE_OSX_DEPLOYMENT_TARGET`` a warning (bug in conda-forge's
  clang activation fixed upstream) in `#934 <https://github.com/scikit-build/scikit-build/pull/934>`_.
* Remove unused variable warnings by in `#930 <https://github.com/scikit-build/scikit-build/pull/930>`_.

Testing
-------

* Add Fedora packaging with packit automation by `@LecrisUT <https://github.com/LecrisUT>`_ in `#928 <https://github.com/scikit-build/scikit-build/pull/928>`_.
* Fix codecov ci by `@LecrisUT <https://github.com/LecrisUT>`_ in `#929 <https://github.com/scikit-build/scikit-build/pull/929>`_.
* Update some coverage settings in `#933 <https://github.com/scikit-build/scikit-build/pull/933>`_.



Scikit-build 0.17.0
===================

A lot of bug fixes are present in this release, focusing on Windows, PyPy, and
cross compiling. We've also improved the compatibility with default setuptools
behaviors a little, and enabled some things that w