提问人:Fergus Rooney 提问时间:7/25/2023 更新时间:8/17/2023 访问量:43
如何有条件地更改setuptools编译器?
How to conditionally change setuptools compiler?
问:
我正在使用 CFFI 包构建 C 绑定。我的项目是为 pypi 打包的,因此需要涵盖不同的操作系统。默认情况下,setuptools 使用适用于 Windows 的编译器和适用于 Linux 的 gnu gcc 编译器。我想有条件地将编译器更改为操作系统是否为 windows。这是因为 C 代码库的某些部分使用了 MSVC 不支持的 VLA,我宁愿只更改编译器而不是整个代码库。MSVC
mingw32
我能够成功更改编译器的唯一方法是使用如下所示的文件:setup.cfg
[build]
compiler=mingw32
[build_ext]
compiler=mingw32
但是我不想使用安装程序.cfg因为它已经过时了,而且我需要根据操作系统更改编译器选项,这是您在 cfg 文件中无法做到的
有谁知道我如何将其移动到以便我可以使其成为有条件的?setup.py
答:
0赞
Zenthm
8/17/2023
#1
您可以使用选项(即 )在命令行中设置 。compiler
--compiler
python setup.py build --compiler
要有条件地执行此操作,您可以在参数中覆盖命令类以设置 to use,如下所示:build
cmdclass
setuptools.setup()
compiler
from setuptools.command.build import build as _build
class build(_build):
def finalize_options(self):
super().finalize_options()
if (...):
self.compiler = "mingw32"
这将是:setup
setup(
...
cmdclass={"build": build},
...
)
你也会对 .build_ext
评论
py -m build