--- title: Cython short-description: Support for Cython in Meson ... # Cython Meson provides native support for cython programs starting with version 0.59.0. This means that you can include it as a normal language, and create targets like any other supported language: ```meson lib = static_library( 'foo', 'foo.pyx', ) ``` Generally Cython is most useful when combined with the python module's extension_module method: ```meson project('my project', 'cython') py = import('python').find_installation() dep_py = py.dependency() py.extension_module( 'foo', 'foo.pyx', dependencies : dep_py, ) ``` ## C++ intermediate support *(New in 0.60.0)* An option has been added to control this, called `cython_language`. This can be either `'c'` or `'cpp'`. For those coming from setuptools/distutils, they will find two things. First, meson ignores `# distutils: language = c++` inline directives. Second that Meson allows options only on a per-target granularity. This means that if you need to mix cython files being transpiled to C and to C++ you need two targets: ```meson project('my project', 'cython') cython_cpp_lib = static_library( 'helper_lib', 'foo_cpp.pyx', # will be transpiled to C++ override_options : ['cython_language=cpp'], ) py.extension_module( 'foo', 'foo.pyx', # will be transpiled to C link_with : [cython_cpp_lib], dependencies : dep_py, ) ```