File: setuptools.md

package info (click to toggle)
scikit-build-core 0.11.6-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,588 kB
  • sloc: python: 14,643; ansic: 254; cpp: 134; sh: 27; fortran: 18; makefile: 7
file content (63 lines) | stat: -rw-r--r-- 2,284 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Setuptools

A setuptools plugin is being developed for scikit-build-core, primarily to
enable scikit-build-core to be the build backend for scikit-build (classic).

:::{warning}

This plugin is experimental, and will probably be moved to a separate package.
If using it, it is probably best to upper-cap scikit-build-core until it moves.

:::

## Basic usage

To use the plugin, make sure you have both setuptools and scikit-build-core in
your `build-system.requires` table. You can use either `setuptools.build_meta`
or `scikit-build-core.setuptools.build_meta` as `build-system.build-backend`,
but the latter will give you the auto-inclusion of `cmake` and `ninja` as
needed, so it is recommended.

```toml
[build-system]
requires = ["scikit-build-core", "setuptools"]
build-backend = "scikit_build_core.setuptools.build_meta"
```

Depending on how you like configuring setuptools, you can specify a `project`
table, or use `setup.cfg`, or `setup.py`. However, you need at least this
minimal `setup.py` present:

```python
from setuptools import setup

setup(cmake_source_dir=".")
```

The presence of the `cmake_source_dir` option will tell the scikit-build
setuptools plugin that it can activate for this package.

## Options

These are the currently supported `setup.py` options:

- `cmake_source_dir`: The location of your `CMakeLists.txt`. Required.
- `cmake_args`: Arguments to include when configuring.

These options from scikit-build (classic) are not currently supported:
`cmake_install_dir`, `cmake_with_sdist`, `cmake_process_manifest_hook`, and
`cmake_install_target`. `cmake_languages` has no effect. And
`cmake_minimum_requires_version` is now specified via `pyproject.toml` config,
so has no effect here.

A compatibility shim, `scikit_build_core.setuptools.wrapper.setup` is provided;
it will eventually behave as close to scikit-build (classic)'s `skbuild.setup`
as possible.

## Configuration

All other configuration is available as normal `tool.scikit-build` in
`pyproject.toml` or environment variables as applicable. Config-settings is
_not_ supported, as setuptools has very poor support for config-settings.
Eventually, the build hook might pre-process options, but it's tricky to pass
them through, so it will probably require use cases to be presented.