2009-11-04 86 views
17

我正在寫C需要CoreFoundation框架(除其他外)的Python擴展。編譯沒有用:如何在Python setup.py腳本中將標誌傳遞給gcc?

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

(「-framework」是一個蘋果只有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'])]) 

回答

14

也許你還需要設置extra_link_args呢?編譯源代碼時使用extra_compile_args,鏈接結果時使用extra_link_args

+0

謝謝,但我試過這個並得到同樣的問題。 – Michael 2009-11-05 01:23:33

+0

對不起,在刪除「構建」目錄並重新構建它似乎工作。謝謝! – Michael 2009-11-05 01:29:36

+2

找到這個後,我發現有用的參數列表有幫助。 http://docs.python.org/distutils/apiref.html?highlight=extension#distutils.core.Extension感謝您指點正確的方向。 – Joel 2012-03-01 17:44:07