Вопрос

Я пишу расширение 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'])])
Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top