CMake构建Cython模块的辅助工具
项目描述
cython-cmake
此工具提供使用Cython的辅助功能。使用
find_package(Cython MODULE REQUIRED VERSION 3.0)
include(UseCython)
如果您先找到Python,搜索会考虑这一点。您可以在CMake 3.19+上指定版本范围。这将定义一个Cython::Cython
目标(以及匹配的CYTHON_EXECUTABLE
变量)。它还将提供以下辅助函数
cython_transpile(<pyx_file>
[LANGUAGE C | CXX]
[CYTHON_ARGS <args> ...]
[OUTPUT <OutputFile>]
[OUTPUT_VARIABLE <OutputVariable>]
)
此函数接受一个pyx文件,并在当前二进制目录(可以通过OUTPUT
指定确切路径)中创建一个匹配的.c
/ .cxx
文件。如果提供了,将生成文件的路径存储在由OUTPUT_VARIABLE
指定的变量中。可以使用CYTHON_ARGS
提供Cython可执行文件的额外参数,如果没有设置,则从CYTHON_ARGS
变量中获取默认值。
如果没有指定LANGUAGE
,且全局启用了C
和CXX
,那么将尝试从源文件中的# distutils: language=...
注释中推断语言,如果未找到,则使用C。
此实用程序依赖于CMake 3.7中为Ninja引入的DEPFILE
功能,并在CMake 3.20中添加到Make,在CMake 3.21中添加到Visual Studio和Xcode。
示例
find_package(
Python
COMPONENTS Interpreter Development.Module
REQUIRED)
find_package(Cython MODULE REQUIRED)
cython_transpile(simple.pyx LANGUAGE C OUTPUT_VARIABLE simple_c)
python_add_library(simple MODULE "${simple_c}" WITH_SOABI)
scikit-build-core
要使用此包与scikit-build-core一起使用,您需要将其包含在您的构建需求中。
[build-system]
requires = ["scikit-build-core", "cython", "cython-cmake"]
build-backend = "scikit_build_core.build"
还建议要求CMake 3.21。
[tool.scikit-build]
cmake.version = ">=3.21"
供应商
您也可以将FindCython和/或UseCython供应商到您的包中。这样可以避免在构建时需要依赖项,并保护您免受此包更改的影响,代价是需要手动重新供应商以获取错误修复和/或改进。此机制也非常适合您想要在scikit-build-core之外直接构建的情况。
您应该创建一个CMake辅助目录,例如cmake
。将此目录添加到您的CMakeLists.txt
中,如下所示
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
然后,您可以将我们的文件供应商到该文件夹
pipx run cython-cmake vendor cmake
如果您只想供应商两个文件中的一个,请使用--member FindCython
或--member UseCython
。您可以重新运行此命令以重新供应商。目录必须已存在。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
cython_cmake-0.2.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | f58e0006e8a7fe158c7b147f6469496945ec66ce11610e2f3a518c5d2598f738 |
|
MD5 | 52f6188b3fb08f5e6f0d092df43f1e1a |
|
BLAKE2b-256 | 8c6bd3e2458994bba60a4eda1955bdb86f04395dc66892232d8dd0711971ed3b |
cython_cmake-0.2.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | e207e2dab69ba93938b8c84559b23230407473beb7ae8c98c97e5147ebb4e51c |
|
MD5 | 148418be921c037c6e792359e9134449 |
|
BLAKE2b-256 | 77f03e01514c323365f7dd1afb133dc69eac1c21002d6eaef36dd3443ea822d2 |