【发布时间】:2020-01-26 05:56:06
【问题描述】:
我的目标是从多个 C 源文件构建单个模块/扩展。实现这一目标的最佳做法是什么?
我尝试了什么:
我知道ffi.set_source 函数具有可选的sources 和include_dir kwargs,并且应该可以使用这些kwargs 从多个源文件构建单个共享对象。不幸的是,我在CFFI Documentation 的 API 参考中找不到任何关于这些 kwargs 的信息。所以我无法弄清楚细节。是否有任何文件说明如何正确使用这些 kwargs?
我目前使用:
SOURCES = ('file_1.c', 'file_2.c')
SRC_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../src')
ffi_builder = FFI()
ffi_builder.set_source(
'module_name._module_name',
''.join(f'#include "{source}"\n' for source in SOURCES),
include_dirs=[SRC_ROOT],
)
...
虽然这确实有效,但对我来说似乎有点 hacky。是否可以使用sources kwarg 而不是第二个位置参数source?这将使我摆脱 hacky ''.join(f'#include "{source}"\n' for source in SOURCES) 部分。
如果有更简单的方法,我也会感兴趣!
感谢任何帮助。谢谢!
【问题讨论】:
标签: python python-3.x pypy python-cffi cffi