Create Wheel from CMake projects
Project description
CMake Wheel
Wheel build backend using CMake, to package anything with pip and distribute on PyPI.
Following those relevant PEPs:
- PEP 427, The Wheel Binary Package Format 1.0
- PEP 517, A build-system independent format for source trees
- PEP 518, Specifying Minimum Build System Requirements for Python Projects
- PEP 600, Future ‘manylinux’ Platform Tags for Portable Linux Built Distributions
- PEP 621, Storing project metadata in pyproject.toml
- PEP 639, Improving License Clarity with Better Package Metadata, DRAFT
- PEP 660, Editable installs for pyproject.toml based builds (wheel based)
Chat
https://matrix.to/#/#cmake-wheel:matrix.org
Basic idea
Glue between PEP 517 build_wheel
function and modern CMake standard project configuration / build / test / install
This Install in ${PYTHON_SITELIB}/cmeel.prefix/
:
- As there is a dot, it is not a valid python module name, so no risk of importing anything there by mistake
- Play well with others, as everything is confined to
${PYTHON_SITELIB}/cmeel.prefix
${PYTHON_SITELIB}/cmeel.pth
automatically load${PYTHON_SITELIB}/cmeel.prefix/${PYTHON_SITELIB}
, so python packages work out of the box- Existing
${PYTHON_SITELIB}/cmeel.prefix
are automatically added to$CMAKE_PREFIX_PATH
, so we can build CMake packages whose dependencies are provided by other CMake packages installed with cmeel - Stuff in
${PYTHON_SITELIB}/cmeel.prefix/bin
is exposed viacmeel.run:cmeel_run
Basic pyproject.toml example
extract from https://github.com/cmake-wheel/cmeel-example/blob/main/pyproject.toml:
[project]
name = "cmeel-example"
version = "0.4.12"
description = "This is an example project, to show how to use cmeel"
requires-python = ">= 3.7"
license = "BSD-2-Clause"
authors = [{name = "Guilhem Saurel", email = "guilhem.saurel@laas.fr"}]
[project.urls]
homepage = "https://github.com/cmake-wheel/cmeel-example"
repository = "https://github.com/cmake-wheel/cmeel-example.git"
changelog = "https://github.com/cmake-wheel/cmeel-example/blob/main/CHANGELOG.md"
[build-system]
requires = ["cmeel[build]"]
build-backend = "cmeel.build"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cmeel-0.40.0.tar.gz
(12.1 kB
view hashes)
Built Distribution
cmeel-0.40.0-py3-none-any.whl
(13.5 kB
view hashes)