Cython
Meson 从 0.59.0 版本开始,原生支持 cython 程序。这意味着您可以像其他支持的语言一样,将其作为普通语言包含并创建目标
lib = static_library(
'foo',
'foo.pyx',
)
通常情况下,Cython 与 python 模块的 extension_module 方法结合使用时最有用
project('my project', 'cython')
py = import('python').find_installation()
dep_py = py.dependency()
py.extension_module(
'foo',
'foo.pyx',
dependencies : dep_py,
)
您可以使用 cython_args
参数传递 cython
CLI 脚本接受的参数
py.extension_module(
'foo-bounds'
'foo.pyx',
dependencies : dep_py,
cython_args : ['-Xboundscheck=False'],
)
C++ 中间支持
(0.60.0 中新增)
已添加一个名为 cython_language
的选项来控制此选项。它可以是 'c'
或 'cpp'
。
对于来自 setuptools/distutils 的用户,他们会发现两点。首先,meson 会忽略 # distutils: language = c++
内联指令。其次,Meson 只允许在每个目标粒度上使用选项。这意味着如果需要混合编译为 C 和 C++ 的 cython 文件,则需要两个目标
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,
)
搜索结果是