Giter Club home page Giter Club logo

scikit-build

image

Code coverage status

GitHub Discussion

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. For more examples, see scikit-build-sample-projects.

Latest Release

Versions Downloads
image image
image image

Publications

Please 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.2565368
  • Schreiner, 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-033

History

PyCMake 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 Issues

These issues are likely to be addressed in upcoming releases, and are already addressed in scikit-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 in setup() 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 the test command, 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.

Miscellaneous

Support for this work was provided by NSF grant OAC-2209877.

scikit-build's Projects

cmake-findfortran icon cmake-findfortran

Finds a fortran compiler, support libraries and companion C/CXX compilers if any.

cmake-findvcvars icon cmake-findvcvars

Finds a "vcvars" batch script. This CMake module can be used when configuring a project or when running in cmake -P script mode.

manylinux icon manylinux

Python wheels that work on any linux (almost)

scikit-build icon scikit-build

Improved build system generator for CPython C, C++, Cython and Fortran extensions

scikit-ci icon scikit-ci

:warning: OBSOLETE | Simpler and centralized CI configuration for Python extensions.

scikit-ci-schema icon scikit-ci-schema

Describes how to list commands to execute on multiple continous integration service in one file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.