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:

  1. PyLibrary.h, defines the PyLibrary C-Struct and the functions needed outside the module istself (mostly for PyHurricane.cpp).
  2. PyLibrary.cpp, contains the complete wrapping of the class and the Python type definition (PyTypeLibrary).
  3. PyHurricane.cpp, the definition of the Python module into which the classes are registered. The module act as a namespace 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.
                 )