scikit-build is an improved build system generator for CPython C/C++/Fortran/Cython extensions. It provides better support for additional compilers, build systems, cross compilation, and locating dependencies and their associated build requirements.
The scikit-build package is fundamentally just glue between
the setuptools
Python module and CMake.
To get started, see http://scikit-build.readthedocs.io.
This talk was presented at SciPy 2018 conference.
- slides: https://bit.ly/scikit-build-talk
- pdf: scipy_2018_scikit-build_talk.pdf
- video: https://www.youtube.com/watch?v=QVkg-cC5oe4
For reference, all SciPy 2018 talks are available here
All Works of Art in this repository are licensed under the Creative Commons Attribution Share Alike 4.0 International. See LICENSE_CC_BY_SA_40 file for details.
- Jean-Christophe Fillion-Robin1 (@jcfr)
- Matthew McCormick1 (@thewtex)
- Omar Padron1 (@opadron)
- Max Smolens1 (@msmolens)
- Michael Grauer1 (@mgrauer)
- Michael Sarahan2 (@msarahan)
1Kitware, Inc. 2Anaconda, Inc.
Scikit-build: A build system generator for CPython C/C++/Fortran/Cython extensions.
We present “Scikit-build”, an improved build system generator for CPython C/C++/Fortran/Cython extensions. It provides improved support for additional compilers, build systems, cross compilation, and locating dependencies and determining their build requirements over distutils/setuptools. We also describe how ITK and VTK C++ scientific libraries were updated to make use of scikit-build to ultimately be published as wheels.
- Build Tool
- CPython Extension
- Building
- Packaging
- Wheels
- Cross Platform
- General
- Infrastructure
Although the scientific packages NumPy, SciPy, SymEngine and Matplotlib can be used from Python today, since they bundle C, C++, Fortran or Cython extensions, successfully building the associated binary wheels is complex and prone to errors. This is a significant barrier to allow use of these packages on a broader set of platforms such as mobile, Raspberry Pi or HPC.
We present scikit-build, an improved build system generator for CPython C/C++/Fortran/Cython extensions that provides first-class support for additional compilers, build systems, cross compilation, and locating dependencies and their associated build requirements. The scikit-build package is fundamentally glue between the setuptools and cmake Python packages that is used to facilitate the build process.
Initially developed during the SciPy sprints 2014, and later funded by the National Library Medicine in 2015, the scikit-build package is tested (90% coverage) and available on PyPI and conda-forge. It is also supported by core members of the Python Packaging Authority (PPA). In the future, the project aims to be a build tool option in the build system specification PEP-518.
In this talk, we will provide an overview of scikit-build, explain how it can be used to build simple CPython C, C++, Fortran and Cython extensions, and also describe how the build system of more complex C++ packages like the Visualization ToolKit (VTK) and the Insight Segmentation and Registration Toolkit (ITK) were updated to support generating wheels for multiple operating systems and python versions.