如何解决Python 包:如何测试编译器是否支持标志?
假设我正在构建一个 python 包,它有一个需要编译的 Cython 扩展,并且这个包将使用 setuptools
安装。我通常可以通过对 Cython 的 build_ext
进行子类化并覆盖 build_extension
方法来添加额外的编译标志/参数 - 示例 setup.py
:
from setuptools import setup
from setuptools.extension import Extension
from Cython.distutils import build_ext
class build_ext_subclass(build_ext):
def build_extensions(self):
for ext in self.extensions:
ext.extra_compile_args.append("-my-arg")
build_ext.build_extensions(self)
...
setup(
...
cmdclass = {'build_ext': build_ext_subclass}
)
如果编译器支持新的 -my-arg
参数,这可以正常工作。
但假设现在我想添加一些非标准的东西 - 例如,我想添加 -march=native
或 -mcpu=native
,具体取决于编译器支持哪一个。>
我如何以编程方式确定编译器是否支持给定的参数?例如,如果脚本在 try/except 中多次调用 setup
,或者如果在 try/except 块中多次调用 build_extension
,这是好的做法还是会发生不好的事情?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。