Pregunta

Estoy escribiendo una extensión de Python en C que requiere el marco CoreFoundation (entre otras cosas). Este compila bien con:

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

( "- marco" es una extensión de sólo de Apple gcc, pero eso está bien porque estoy usando su marco específico de todos modos)

¿Cómo le digo setup.py para pasar esta bandera a gcc?

He intentado esto, pero no parece funcionar (compila, pero luego se queja de símbolos no definidos cuando intento ejecutarlo):

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

Editar

Esto parece funcionar:

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'])])
¿Fue útil?

Solución

Tal vez es necesario establecer extra_link_args, también? extra_compile_args se utiliza al compilar el código fuente, extra_link_args al vincular el resultado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top