23 Stimmen

Wie man Flag an gcc in Python setup.py Skript übergeben?

Ich schreibe eine Python-Erweiterung in C, die das CoreFoundation-Framework (unter anderem) erfordert. Dies kompiliert gut mit:

gcc -o foo foo.c -framework CoreFoundation -framework Python

("-framework" ist eine gcc-Erweiterung, die es nur für Apple gibt, aber das ist in Ordnung, weil ich sowieso deren spezifisches Framework verwende)

Wie kann ich setup.py anweisen, dieses Flag an gcc zu übergeben?

Ich habe dies versucht, aber es scheint nicht zu funktionieren (es kompiliert, aber dann beschwert sich über undefinierte Symbole, wenn ich versuche, es auszuführen):

from distutils.core import setup, Extension
setup(name='foo',
      version='1.0',
      author='Me',
      ext_modules=[Extension('foo',
                             ['foo.c'],
                             extra_compile_args=['-framework CoreFoundation'])])

Bearbeiten:

Dies scheint zu funktionieren:

from distutils.core import setup, Extension
setup(name='foo',
      version='1.0',
      author='Me',
      ext_modules=[Extension('foo',
                             ['foo.c'],
                             extra_link_args=['-framework', 'CoreFoundation'])])

19voto

Lukáš Lalinský Punkte 39243

Vielleicht müssen Sie die extra_link_args auch? extra_compile_args wird bei der Kompilierung des Quellcodes verwendet, extra_link_args bei der Verknüpfung des Ergebnisses.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X