coriolis/documentation/PythonCpp/Configuration.rst

43 lines
1.6 KiB
ReStructuredText
Raw Normal View History

.. -*- Mode: rst -*-
.. include:: ../etc/definitions.rst
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 the ``PyLibrary`` C-Struct and the functions
needed outside the module istself (mostly for ``PyHurricane.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 a ``namespace`` in
Python so it is good practice to give it the same name as it's
associated C++ namespace.
|newpage|
To build a Python module in |cmake|, use the following macro:
.. code-block:: cmake
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.
)