【发布时间】:2015-09-08 06:05:04
【问题描述】:
我正在构建一个独立于平台的 cython 项目,我想根据正在使用的编译器传递编译器参数。我可以猜测基于平台的编译器,或者假设它与用于 Python 的编译器相同,但不能保证匹配。通常我将cmdclass arg 注入到 setuptool 的 setup 方法中,并包装 install 或 build_ext 命令以检查内部状态。但在这种情况下,我必须在到达包装器之前对扩展模块进行 cythonize。
在对扩展模块进行 cythonizing 之前,有什么方法可以确定 setup.py 中的编译器吗?
【问题讨论】:
-
你不能将编译器作为参数传递给 setup.py:
python setup.py build --compiler=mingw32? -
也可以使用cmake跨平台编译cython代码:github.com/thewtex/cython-cmake-example
-
@denfromufa 您可以传递
--compiler=mingw32,但存储库的其他接收者不一定知道将编译器参数设置为什么,或者它是否是另一个存储库的依赖项。而pip install绝对不会为 setuptools 创建这样的论点。如果我自己只使用python setup.py install,我可以阅读这个论点——这是真的。 -
我之前也没有见过 cython-cmake -- 我会调查一下。如果我可以避免它,我宁愿不将复杂的 CMake 模式引入存储库,而是希望根据选择的编译器(由用户或 setuptools 或 python)在 setuptools 中设置适当的编译器标志。但它似乎允许在定义 cythonization 后使用编译器特定的参数。
标签: cython setuptools