summaryrefslogtreecommitdiffstats
path: root/python/python3-cmake-build-extension/README
blob: 22cf1a24f50d83a8277143c4a076a5486b604eb0 (plain)
cmake-build-extension is a Setuptools extension to build and package
CMake projects.

This project aims to simplify the integration of C++ projects based on
CMake with Python packaging tools. CMake provides out-of-the-box
support to either SWIG and pybind11, that are two among the most used
projects to create Python bindings from C++ sources.

If you have any experience with these hybrid projects, you know the
challenges to make packaging right! This project takes inspiration
from pre-existing examples (pybind/cmake_example, among many others)
and provides a simple, flexible, and reusable setuptools extension
with the following features:

  * Bridge between CMake projects and Python packaging.
  * Configure and build the CMake project from setup.py.
  * Install the CMake project in the resulting Python package.
  * Allow passing custom CMake options.
  * Allow creating a top-level __init__.py.
  * Expose C++ executables to the Python environment.
  * Provide a context manager to import reliably CPython modules on
    all major OSs.
  * Disable the C++ extension in editable installations (requiring to
    manually call CMake to install the C++ project).