Generating pybind11 bindings¶
SMTK’s pybind11 bindings are generated via python scripts that use
pygccxml to construct a C++ header file corresponding to each header
file in SMTK, and a C++ source file for each namespace in
SMTK. Generally, python modules are a reflection of C++ namespaces
(which are generally contained within a subdirectory). The generated
pybind11 C++ files for each module are in the pybind
subdirectory of
the module.
To generate a C++ header file for a new SMTK class, use
[smtk-root-directory]/utilities/python/cpp_to_pybind11.py
with the
appropriate arguments for the header file, project root directory,
include directories (e.g. -I "[smtk-build-directory]
[smtk-root-directory]/thirdparty/cJSON path/to/vtk/include"
) and
generated file prefix; the module’s binding source file (also located
in the pybind
subdirectory of the module) must then be updated to
call the functions defined in the generated header file. To generate
all of the C++ headers and the module C++ source file for a namespace
at once, use
[smtk-root-directory]/utilities/python/generate_pybind11_module.py
with the appropriate arguments for the module directory, project root
directory and include directories.
The generated bindings should be treated as a starting point for customization to create a more pythonic interface.