2009-11-04 11 views
17

私はCoreFoundationフレームワークを必要とするPython拡張モジュールをC言語で書いています。これは罰金コンパイル: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

+0

申し訳ありません。 "ビルド"ディレクトリを削除して再ビルドした後で動作するようです。ありがとう! – Michael

+2

これを見つけた後、私は有用な議論のリストを見つけました。 http://docs.python.org/distutils/apiref.html?highlight=extension#distutils.core.Extension私に正しい方向を教えていただきありがとうございます。 – Joel