Как передать флаг в gcc в скрипте Python setup.py?

Я пишу расширение Python на C, для которого требуется инфраструктура CoreFoundation (среди прочего). Это прекрасно компилируется с:

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

(«-framework» — это расширение gcc только для 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'])])

Изменить:

Похоже, это работает:

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

person Michael    schedule 04.11.2009    source источник


Ответы (1)


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

person Lukáš Lalinský    schedule 04.11.2009
comment
Прости; после удаления каталога сборки и повторной сборки он работает. Спасибо! - person Michael; 05.11.2009
comment
Найдя это, я нашел список доступных аргументов полезным. docs.python.org/distutils/ Спасибо, что указали мне правильное направление. - person Joel; 01.03.2012