有一个似乎未记录的功能
setup
可以做到这一点,例如:
import os
from setuptools import setup
from Cython.Build import cythonize
ext_lib_path = 'rectangle'
include_dir = os.path.join(ext_lib_path, 'include')
sources = ['Rectangle.cpp']
# Use as macros = [('<DEFINITION>', '<VALUE>')]
# where value can be None
macros = None
ext_libraries = [['rectangle', {
'sources': [os.path.join(ext_lib_path, src) for src in sources],
'include_dirs': [include_dir],
'macros': macros,
}
]]
extensions = [Extension("rect",
sources=["rect.pyx"],
language="c++",
include_dirs=[include_dir],
libraries=['rectangle'],
)]
setup(ext_modules=cythonize(extensions),
libraries=ext_libraries)
这个
libraries
参数生成在目录中找到的外部库
rectangle
,包含目录
rectangle/include
它和扩展之间的共同点。
也已将导入切换到
setuptools
从…起
distutils
已弃用,现在是setuptools的一部分。
没有看到关于这个论点的任何文档,但看到它在其他项目中使用。
这是未测试的,如果不起作用,请提供样本文件进行测试。