14
14
[![Gitter][gitter-badge]][gitter-link]
15
15
-->
16
16
17
- ** WARNING** : Only the pyproject-based builder should be used (setuptools backend
18
- is experimental and likely to move to a separate package), and internal API is
19
- still being solidified. A future version of this package will support creating
20
- new build extensions.
21
-
22
17
Features over classic Scikit-build:
23
18
24
19
- Better warnings, errors, and logging
@@ -27,12 +22,14 @@ Features over classic Scikit-build:
27
22
- No dependency on setuptools, distutils, or wheel in build mode.
28
23
- Powerful config system, including config options support in build mode.
29
24
- Automatic inclusion of site-packages in ` CMAKE_PREFIX_PATH `
30
- - FindPython is backported if running on CMake < 3.24 (included via hatchling in
31
- a submodule, configurable)
25
+ - FindPython is backported if running on CMake < 3.26 (configurable), supports
26
+ PyPY SOABI.
32
27
- Limited API / Stable ABI and pythonless tags supported via config option
33
28
- No slow generator search, ninja/make or MSVC used by default, respects
34
29
` CMAKE_GENERATOR `
35
30
- SDists are reproducible by default (UNIX, Python 3.9+)
31
+ - Support for caching between builds (opt-in by setting ` build-dir ` )
32
+ - Support for writing out to extra wheel folders (scripts, headers, data)
36
33
37
34
The following limitations are present compared to classic scikit-build:
38
35
@@ -41,23 +38,28 @@ The following limitations are present compared to classic scikit-build:
41
38
42
39
Some known missing features that will be developed soon:
43
40
44
- - Support for caching between builds is currently opt-in with ` build-dir `
45
41
- No editable mode support
46
42
- The docs are not written
47
43
- Dedicated entrypoints are planned for projects wanting to support discovery
48
44
- No support for other targets besides install
49
45
- Wheels are not fully reproducible yet
46
+ - Dynamic metadata support is being developed
50
47
51
48
Other backends are also planned:
52
49
53
50
- Setuptools integration highly experimental
54
51
- The extensionlib integration is missing
55
52
- No hatchling plugin yet
56
53
57
- The recommended interface is the PEP 517 interface. There is also a
54
+ The recommended interface is the PEP 517 interface. There is also a WIP
58
55
setuptools-based interface that is being developed to provide a transition path
59
56
for classic scikit-build.
60
57
58
+ ** WARNING** : Only the pyproject-based builder should be used; the setuptools
59
+ backend is experimental and likely to move to a separate package before being
60
+ declared stable, and internal API is still being solidified. A future version of
61
+ this package will support creating new build extensions.
62
+
61
63
## Example
62
64
63
65
To use scikit-build-core, add it to your ` build-system.requires ` , and specify
@@ -82,7 +84,7 @@ printouts) or `pyproject` (pre-load some dependencies) extras if you want.
82
84
An example ` CMakeLists.txt ` :
83
85
84
86
``` cmake
85
- cmake_minimum_required(VERSION 3.15...3.25 )
87
+ cmake_minimum_required(VERSION 3.15...3.26 )
86
88
87
89
project(${SKBUILD_PROJECT_NAME} LANGUAGES C VERSION ${SKBUILD_PROJECT_VERSION})
88
90
@@ -166,7 +168,7 @@ wheel.install-dir = "."
166
168
# This will backport an internal copy of FindPython if CMake is less than this
167
169
# value. Set to 0 or the empty string to disable. The default will be kept in
168
170
# sync with the version of FindPython stored in scikit-build-core.
169
- backport.find-python = " 3.24 "
171
+ backport.find-python = " 3.26 "
170
172
171
173
# Enable experimental features if any are available
172
174
experimental = false
@@ -176,7 +178,7 @@ strict-config = true
176
178
177
179
# This provides some backward compatibility if set. Defaults to the latest
178
180
# scikit-build-core version.
179
- minimum-version = " 0.1 " # current version
181
+ minimum-version = " 0.2 " # current version
180
182
181
183
# Build directory (empty will use a temporary directory). {cache_tag} is
182
184
# available to provide a unique directory per interpreter.
0 commit comments