例如,我可以使用python setup.py build --compiler=msvc
或python setup.py build --compiler=mingw32
或仅使用python setup.py build
,在这种情况下,将使用默认编译器(例如,bcpp
)。如何在setup.py中获取编译器名称(例如,msvc
、mingw32
和bcpp
)?
UPD.:我不需要默认编译器,我需要实际使用的编译器,它不一定是默认编译器。到目前为止,我还没有找到比解析sys.argv
来查看是否有--compiler...
字符串更好的方法。
这是Luper Rouch的答案的扩展版本,它对我在windows上使用mingw和msvc编译openmp扩展起到了作用。子类化build_ext之后,需要将其传递给cmdclass arg中的setup.py。通过子类化build_扩展而不是finalize_选项,您将拥有实际的编译器对象,因此您可以获得更详细的版本信息。最终,您可以根据每个编译器、每个扩展名设置编译器标志:
可以对
distutils.command.build_ext.build_ext
命令进行子类化。一旦调用了
build_ext.finalize_options()
方法,编译器类型将作为字符串存储在self.compiler.compiler_type
中(与传递给build_ext
的--compiler
选项的类型相同,例如“mingw32”、“gcc”等)。相关问题 更多 >
编程相关推荐