Dies ist eine erweiterte Version der Antwort Luper Rouch, die für mich gearbeitet, um eine openmp Erweiterung zu bekommen beide mingw und msvc auf Windows kompilieren verwenden. Nachdem Sie build_ext abgeleitet haben, müssen Sie es in setup.py in cmdclass arg übergeben. Wenn Sie build_extensions statt finalize_options ableiten, müssen Sie sich das eigentliche Compiler-Objekt ansehen, um detailliertere Versionsinformationen zu erhalten. Sie könnten schließlich Compiler-Flags auf einer Pro-Compiler gesetzt, pro-Erweiterung Basis:
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 })
Ich habe das gleiche Problem. Ich möchte einen zusätzlichen 'stdint.h' Header für msvc, aber nicht andere Compiler hinzufügen. –