यह वह जगह है Luper रॉच के जवाब यह है कि मेरे लिए काम किया खिड़कियों पर दोनों MinGW और MSVC का उपयोग कर संकलित करने के लिए एक OpenMP विस्तार पाने के लिए की एक विस्तारित संस्करण। Build_ext subclassing के बाद आपको cmdclass arg में setup.py को पास करने की आवश्यकता है। Finalize_options के बजाय build_extensions को उप-वर्गीकरण करके आपके पास वास्तविक कंपाइलर ऑब्जेक्ट देखने के लिए होगा, ताकि आप अधिक विस्तृत संस्करण जानकारी प्राप्त कर सकें। आप अंततः एक प्रति-संकलक, प्रति-विस्तार आधार पर संकलक झंडे सेट कर सकते हैं:
from distutils.core import setup, Extension
from distutils.command.build_ext import build_ext
copt = {'msvc': ['/openmp', '/Ox', '/fp:fast','/favor:INTEL64','/Og'] ,
'mingw32' : ['-fopenmp','-O3','-ffast-math','-march=native'] }
lopt = {'mingw32' : ['-fopenmp'] }
class build_ext_subclass(build_ext):
def build_extensions(self):
c = self.compiler.compiler_type
if copt.has_key(c):
for e in self.extensions:
e.extra_compile_args = copt[ c ]
if lopt.has_key(c):
for e in self.extensions:
e.extra_link_args = lopt[ c ]
build_ext.build_extensions(self)
mod = Extension('_wripaca',
sources=['../wripaca_wrap.c',
'../../src/wripaca.c'],
include_dirs=['../../include']
)
setup (name = 'wripaca',
ext_modules = [mod],
py_modules = ["wripaca"],
cmdclass = {'build_ext': build_ext_subclass })
मुझे एक ही समस्या है। मैं msvc के लिए अतिरिक्त 'stdint.h' शीर्षलेख शामिल करना चाहता हूं, लेकिन अन्य कंपाइलर नहीं। –