2009-11-04 29 views
17

Tôi đang viết một phần mở rộng Python trong C yêu cầu khung công tác CoreFoundation (trong số những thứ khác). Đây biên dịch tốt với:Làm cách nào để chuyển cờ sang gcc trong tập lệnh Python setup.py?

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

("-framework" là Apple chỉ mở rộng gcc, nhưng đó là okay vì tôi đang sử dụng khuôn khổ cụ thể của họ anyway)

Làm thế nào để nói với setup.py để vượt qua lá cờ này để gcc?

tôi đã cố gắng này, nhưng nó dường như không làm việc (nó biên dịch, nhưng sau đó phàn nàn của các biểu tượng không xác định khi tôi cố gắng chạy nó):

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

Edit:

này xuất hiện để hoạt động:

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

Trả lời

14

Có thể bạn cũng cần đặt extra_link_args? extra_compile_args được sử dụng khi biên dịch mã nguồn, extra_link_args khi liên kết kết quả.

+0

Cảm ơn, nhưng tôi đã thử điều này và gặp phải vấn đề tương tự. – Michael

+0

Xin lỗi; sau khi xóa "xây dựng" thư mục và xây dựng lại nó có vẻ làm việc. Cảm ơn! – Michael

+2

Sau khi tìm thấy điều này tôi thấy danh sách các đối số có sẵn hữu ích. http://docs.python.org/distutils/apiref.html?highlight=extension#distutils.core.Extension Cảm ơn bạn đã chỉ cho tôi đúng hướng. – Joel

Các vấn đề liên quan