2009-11-04 7 views
17

Sto scrivendo un'estensione Python in C che richiede il framework CoreFoundation (tra le altre cose). Questo compila bene con:Come passare il flag a gcc nello script setup.py di Python?

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

("-Framework" è un Apple-only estensione GCC, ma va bene perché sto usando il loro quadro specifico in ogni caso)

Come faccio a dire a setup.py passare questo flag a gcc?

Ho provato questo, ma non sembra funzionare (si compila, ma poi si lamenta di simboli non definiti quando provo a farlo funzionare):

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:

Questo sembra funzionare:

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

risposta

14

Forse è necessario impostare anche extra_link_args? extra_compile_args viene utilizzato durante la compilazione del codice sorgente, extra_link_args quando si collega il risultato.

+0

Grazie, ma ho provato questo e ottenere lo stesso problema. – Michael

+0

Siamo spiacenti; dopo aver eliminato la directory "build" e ricostruito sembra funzionare. Grazie! – Michael

+2

Dopo averlo trovato ho trovato utile l'elenco degli argomenti disponibili. http://docs.python.org/distutils/apiref.html?highlight=extension#distutils.core.Extension Grazie per avermi indicato nella giusta direzione. – Joel