23

我正在用 C 编写一个 Python 扩展,它需要 CoreFoundation 框架(除其他外)。这可以很好地编译:

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

(“-framework”是一个仅限 Apple 的 gcc 扩展,但没关系,因为无论如何我都在使用他们的特定框架)

如何告诉 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'])])
4

1 回答 1

19

也许你也需要设置extra_link_argsextra_compile_args在编译源代码、extra_link_args链接结果时使用。

于 2009-11-04T20:30:52.343 回答