/cmeel

Create Wheel from CMake projects

Primary LanguagePython

CMake Wheels

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

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

Basic idea

  • Glue between PEP 517 build_wheel function and modern CMake standard project configuration / build / test / install
  • 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