Skip to main content

Create Wheel from CMake projects

Project description

CMake Wheel

PyPI version pre-commit.ci status Documentation Status Code style: black Ruff

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 via cmeel.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"
readme = "README.md"
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.36.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cmeel-0.36.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file cmeel-0.36.0.tar.gz.

File metadata

  • Download URL: cmeel-0.36.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.6 Linux/5.15.0-1035-azure

File hashes

Hashes for cmeel-0.36.0.tar.gz
Algorithm Hash digest
SHA256 5bb575097cb9e0468493154ab0c804f52ef05892cfc457f35e4f2ad3086c3fbc
MD5 9d7aa00a8d89ce82bceb6a4e13d25ee3
BLAKE2b-256 259aff182d33ee2c9691a85adfde415b2d16f2fa84cd41496fd1fe06117120e8

See more details on using hashes here.

File details

Details for the file cmeel-0.36.0-py3-none-any.whl.

File metadata

  • Download URL: cmeel-0.36.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.6 Linux/5.15.0-1035-azure

File hashes

Hashes for cmeel-0.36.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d01afc17e0445755baa97a9e9f6ee9ff0871e15ed07e439d5819fcc053c15a9e
MD5 fad9bec59d09e418a6da47ff5c8cbb30
BLAKE2b-256 c8e76d4a501070244e704fa1786daf69eeb4e6cc0498594c66e16f900790ba85

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page