2009-11-04 3 views
17

Я пишу расширение Python в C, которое требует рамки CoreFoundation (между прочим). Это нормально компилируется с:Как передать флаг gcc в скрипт setup.py Python?

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

(«Рамочное» является Apple, только НКУ расширение, но это нормально, потому что я использую их конкретные рамки, так или иначе)

Как сказать setup.py в передать этот флаг в gcc?

Я попробовал это, но это не похоже на работу (он компилирует, но жалуется на неопределенных символов, когда я пытаюсь запустить его):

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:

Этот :

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

ответ

14

Возможно, вам также необходимо установить extra_link_args? extra_compile_args используется при компиляции исходного кода, extra_link_args при связывании результата.

+0

Спасибо, но я пробовал это и получал ту же проблему. – Michael

+0

Извините; после удаления каталога «build» и повторного построения он, похоже, работает. Благодаря! – Michael

+2

После этого я нашел список доступных аргументов полезным. http://docs.python.org/distutils/apiref.html?highlight=extension#distutils.core.Extension Спасибо за то, что указали мне в правильном направлении. – Joel

Смежные вопросы