Package: scikit-build
scikit-buildis a Python build system for CPython C/C++/Fortran/Cython
extensions using CMake.The scikit-build package is fundamentally just glue between thesetuptoolsPython module andCMake.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, seethis example. For more examples, seescikit-build-sample-projects.Scikit-build 0.17.6A small fix release with some new platforms and better testing, including CPython 3.12.0b1.Bug fixesSupport added for SunOS by@mtelkain#983.Support added for AIX (with recent CMake) by@bhuntsmanin#988.TestingTests now pass on CPython 3.12.0b1 in#879.Tests no longer usepytest-virtualenvin#879.isolatedmarker now includestest_distributiontests in#879.Tests avoid incorrectget_mapmatch by@keszybzin#990.Fedora testing fix by@LecrisUTin#986and#938.MiscellaneousDocs improvements in#979.Scikit-build 0.17.5A 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 fixesGenerator args were missing for actual compile in#975.Add support for netbsd & pyodide (future) in#977.Scikit-build 0.17.4A followup fix to the issue 0.17.3 tried to fix. We now have a method to
manually test downstream packages, too.Bug fixesMake sure include dir is found even if the lib is not present in#974.Scikit-build 0.17.3A small release related toPYTHON_LIBRARYhandling changes in 0.17.2;
scikit-build 0.17.3 returns an empty string fromget_python_libraryif no
Python library is present (like on manylinux), where 0.17.2 returned None, and
previous versions returned a non-existent path. Note that addingREQUIREDtofind_package(PythonLibswill fail, but it is incorrect (you must not
link tolibPython.so) and was really just injecting a non-existent path
before.Bug fixesKeepget_python_libraryreturn type string if python lib non-existing
for now in#959.Avoid ‘not found’ warning if libs are not found by FindPythonExtensions in#960.FindNumPy should not call FindPythonLibs in#958.Scikit-build 0.17.2Another small release with fixes for non-MSVC Windows platforms.Bug fixesRPM spec fix by@LecrisUTin#937.Validate value before returning library path by@dlechin#942.Only addPython_LIBRARYon Windows MSVC in#943and#944.Slightly nicer traceback for failed compiler in#947.TestingHide a few warnings that are expected in#948.Scikit-build 0.17.1This 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 fixesOlder (<3.24) CMake breaks when lib specified in#932.An error output was missing formatting in#931.Make emptyCMAKE_OSX_DEPLOYMENT_TARGETa warning (bug in conda-forge’s
clang activation fixed upstream) in#934.Remove unused variable warnings by in#930.TestingAdd Fedora packaging with packit automation by@LecrisUTin#928.Fix codecov ci by@LecrisUTin#929.Update some coverage settings in#933.Scikit-build 0.17.0A 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 were previously unavailable,
like overriding the build type via the cmake argument environment variables.
We’ve expanded our CI matrix to include Windows and macOS PyPy and some Fortran
tests on Linux. This release requires Python 3.7+.Bug fixesMatch setuptools behavior forinclude_package_datadefault. by@vyasrin#873.Misc. fixes for F2PY and PythonExtensions modules by@benbovyin#495.Provide more useful error if user providesCMAKE_INSTALL_PREFIXby@vyasrin#872.Stop assuming that.pyxfiles are in the same directory asCMakeLists.txtby@vyasrin#871.Allow build type overriding in#902.Detect PyPy library correctly on Windows by user:gershnikin#904.Include library for FindPython for better Windows cross-compiles in#913. Thanks to user:maxbachmannfor testing.Fix logic for default generator when cross-compiling for ARM on Windows in#917by@dlech.Use f2py’sget_includeif present in#877.Fix support for cross-compilation exception usingtargetLinkLibrariesWithDynamicLookupby@erykoffin#901.Treat emptyMACOSX_DEPLOYMENT_TARGETas if it was unset in#918.TestingAdd hello fortran sample package + tests by@benbovyin#493.Add sdist check & fix in#906.Fix some setuptools types in#888.Add PyPy Win & macOS to the CI in#907.Add tests for Python 3.12 Linux alphas in#922.MiscellaneousDrop Python 3.6 in#862.Move building backend to hatchling in#870.Avoid mutating function input parameters in#899.Use _compat/typing name in#869.PublicationsPlease use the first citation when referencing scikit-build in scientific publications.Jean-Christophe Fillion-Robin, Matt McCormick, Omar Padron, Max Smolens, Michael Grauer, & Michael Sarahan. (2018, July 13). jcfr/scipy_2018_scikit-build_talk: SciPy 2018 Talk | scikit-build: A Build System Generator for CPython C/C++/Fortran/Cython Extensions. Zenodo.https://doi.org/10.5281/zenodo.2565368Schreiner, Henry, Rickerby, Joe, Grosse-Kunstleve, Ralf, Jakob, Wenzel, Darbois, Matthieu, Gokaslan, Aaron, Fillion-Robin, Jean-Christophe, & McCormick, Matt. (2022, August 1). Building Binary Extensions with pybind11, scikit-build, and cibuildwheel.https://doi.org/10.25080/majora-212e5952-033HistoryPyCMake was created at SciPy 2014 in response to general difficulties building
C++ and Fortran based Python extensions across platforms.  It was renamed to
“scikit-build” in 2016. Scikit-build-core was started in 2022.Known IssuesThese issues are likely to be addressed in upcoming releases, and are
already addressed inscikit-build-core.Editable installs do not work with the latest versions of Setuptools (and had
issues with older versions, too).Configuration scikit-build cares about _must_ be specified insetup()currently.The cache directory (_skbuild) may need to be deleted between builds in
some cases (like rebuilding with a different Python interpreter).AIX requires a newer version of CMake than the IBM-supplied CMake 3.22.0
from the AIX Toolbox for Open Source Software.  We currently recommend
building CMake from source on AIX.We are also working on improving scikit-build, so there are some upcoming
changes and deprecations:All deprecated setuptools/distutils features are also deprecated in
scikit-build, like thetestcommand,easy_install, etc.Older versions of CMake (<3.15) are not recommended; a future version will
remove support for older CMake’s (along with providing a better mechanism for
ensuring a proper CMake is available).If you need any of these features, please open or find an issue explaining what
and why you need something.MiscellaneousFree software: MIT licenseDocumentation:http://scikit-build.readthedocs.orgSource code:https://github.com/scikit-build/scikit-buildDiscussions:https://github.com/orgs/scikit-build/discussionsScikit-build-core:https://github.com/scikit-build/scikit-build-coreSupport for this work was provided by NSF cooperative agreementOAC-2209877.