--- 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(pure: false) py.extension_module( 'foo', 'foo.pyx', ) ``` You can pass arguments accepted by the `cython` CLI script with the `cython_args` argument: ```meson py.extension_module( 'foo-bounds' 'foo.pyx', cython_args : ['-Xboundscheck=False'], ) ``` ## 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, note that meson ignores `# distutils: ` inline directives in Cython source files, hence `# distutils: language = c++` has no effect. The `override_options` keyword should be used instead: ```meson project('my project', 'cython') py.extension_module( 'foo', 'foo_cpp.pyx', # will be transpiled to C++ override_options : ['cython_language=cpp'], ) ```