【发布时间】:2019-08-27 11:02:32
【问题描述】:
我正在为 c 库编写一个包装器,这个库包含几乎所有函数的文件,比如说 all_funcs.c。该文件又需要编译大量其他 c 文件
我创建了all_funcs.pyx,我在其中包装了所有函数,但我还想创建一个子模块,它可以访问来自all_funcs.c 的函数。现在可行的方法是将所有 c 文件添加到 setup.py 中的两个扩展,但是每个 c 文件编译两次:第一次用于 all_funcs.pyx,第二次用于子模块扩展。
有没有办法为每个扩展提供通用的源文件?
当前 setup.py 示例:
ext_helpers = Extension(name=SRC_DIR + '.wrapper.utils.helpers',
sources=[SRC_DIR + '/wrapper/utils/helpers.pyx'] + source_files_paths,
include_dirs=[SRC_DIR + '/include/'])
ext_all_funcs = Extension(name=SRC_DIR + '.wrapper.all_funcs',
sources=[SRC_DIR + '/wrapper/all_funcs.pyx'] + source_files_paths,
include_dirs=[SRC_DIR + '/include/'])
EXTENSIONS = [
ext_helpers,
ext_all_funcs,
]
if __name__ == "__main__":
setup(
packages=PACKAGES,
zip_safe=False,
name='some_name',
ext_modules=cythonize(EXTENSIONS, language_level=3)
)
source_files_paths - 常用c源文件列表
【问题讨论】:
标签: cython