微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 包:如何测试编译器是否支持标志?

如何解决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 举报,一经查实,本站将立刻删除。