2009-11-04 6 views
17

Piszę rozszerzenie Pythona w C, które wymaga Framework CoreFoundation (między innymi). To kompiluje dobrze z:Jak przekazać flagę do gcc w skrypcie setup.py w języku Python?

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

(„-framework” jest tylko jabłko gcc rozszerzenie, ale to dobrze, bo używam ich specyficzne ramy tak)

Jak mam powiedzieć do setup.py przekazać tę flagę do gcc?

Próbowałem to, ale nie wydaje się do pracy (to kompiluje, ale potem narzeka symboli niezdefiniowanych gdy próbuję go uruchomić):

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'])]) 

Edit:

ten wydaje się działać:

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'])]) 

Odpowiedz

14

Może trzeba ustawić extra_link_args też? extra_compile_args jest używany podczas kompilowania kodu źródłowego, extra_link_args podczas łączenia wyniku.

+0

Dzięki, ale spróbowałem i mam ten sam problem. – Michael

+0

Przepraszam; po usunięciu katalogu "build" i ponownym jego budowaniu wydaje się działać. Dzięki! – Michael

+2

Po znalezieniu tego znalazłem listę dostępnych argumentów pomocne. http://docs.python.org/distutils/apiref.html?highlight=extension#distutils.core.Extension Dzięki za skierowanie mnie we właściwym kierunku. – Joel