2009-11-04 14 views
17

मैं सी में एक पायथन एक्सटेंशन लिख रहा हूं जिसके लिए कोरफाउंडेशन फ्रेमवर्क (अन्य चीजों के साथ) की आवश्यकता है। इस के साथ ठीक संकलित:पायथन setup.py स्क्रिप्ट में जीसीसी में ध्वज कैसे पास करें?

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

("-framework" एक सेब-केवल जीसीसी विस्तार है, लेकिन क्योंकि मैं उनकी विशिष्ट ढांचे वैसे भी उपयोग कर रहा हूँ कि ठीक है)

मैं कैसे करने के लिए setup.py बताऊँ इस ध्वज को जीसीसी में पास करें?

मैं इस कोशिश की, लेकिन यह (यह संकलित है, लेकिन फिर अपरिभाषित प्रतीकों की शिकायत जब मैं इसे चलाने के लिए कोशिश) काम करने के लिए प्रतीत नहीं होता:

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

संबंधित मुद्दे