2. Basic File Structure and CMake configuration¶
As a first example we will consider the Hurrican::Library
class. To export a class into Python, we must create three files:
PyLibrary.h
, defines thePyLibrary
C-Struct and the functions needed outside the module istself (mostly forPyHurricane.cpp
).PyLibrary.cpp
, contains the complete wrapping of the class and the Python type definition (PyTypeLibrary
).PyHurricane.cpp
, the definition of the Python module into which the classes are registered. The module act as anamespace
in Python so it is good practice to give it the same name as it’s associated C++ namespace.
To build a Python module in cmake, use the following macro:
set( pyCpps PyLibrary.cpp PyHurricane.cpp ) set( pyIncludes hurricane/isobar/PyLibrary.h add_python_module( "${pyCpps}" "${pyIncludes}" "isobar;1.0;1" # Name & version of the supporting # shared library. Hurricane # Name of the Python module will give: # Hurricane.so "${depLibs}" # List of dependency libraries. include/coriolis2/hurricane/isobar # Where to install the include files. )