【问题标题】:How to pass flag to gcc in Python setup.py script?如何在 Python setup.py 脚本中将标志传递给 gcc?
【发布时间】:2010-12-13 04:19:26
【问题描述】:

我正在用 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'])])

【问题讨论】:

    标签: python distutils python-c-api


    【解决方案1】:

    也许您也需要设置extra_link_argsextra_compile_args 用于编译源代码,extra_link_args 用于链接结果。

    【讨论】:

    • 对不起;删除“构建”目录并重新构建它似乎工作。谢谢!
    • 找到这个后,我发现可用参数列表很有帮助。 docs.python.org/distutils/… 感谢您为我指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2012-01-02
    相关资源
    最近更新 更多