2010-08-30 11 views
19

मुझे मेकफ़ाइल के माध्यम से सी में लिखे गए प्रोग्राम को संकलित करना चाहिए। मुझे मेकफ़ाइल में डालना चाहिए, उदाहरण के लिए, कुछ विकल्प: -O2, -march=i686। मेकफ़ाइल में लिखने के बिना मैं इस विकल्प को कैसे सम्मिलित कर सकता हूं?संपादन के बिना कंपाइलर विकल्प जोड़ें मेकफ़ाइल

+0

क्या हम देख सकते हैं कि आपके मेकफ़ाइल में पहले से क्या है? – Starkey

+0

यह एक सामान्य मेकफ़ाइल – Gnufabio

+1

होना चाहिए http://stackoverflow.com/questions/1250608/passing-a-gcc-flag-through-makefile –

उत्तर

19

आपको CFLAGS जैसे मैक्रो का उपयोग करना चाहिए। जीएनयू जीसीसी documentation देखें।

कुछ इस तरह काम करना चाहिए:

CFLAGS := $(CFLAGS) -O2 -march=i686 

या, यदि आप makefile उपयोग संशोधित करने के लिए नहीं पसंद करते हैं:

make CFLAGS='-O2 -march=i686' 

अन्य विकल्प स्वचालित रूप से हालांकि उठाया जा जाएगा। overriding variables देखें।

+6

ध्यान रखें कि जटिल उप-मैक्रोज़ से CFLAGS बनाया जा सकता है। आप उप-मैक्रोज़ में से एक को ओवरराइड करना बेहतर हो सकते हैं। यदि CFLAGS में कोई विरोधाभासी विकल्प नहीं है, तो मैं वांछित परिणाम प्राप्त करने के लिए अक्सर ''CC बनाने के लिए CC =" gcc -O2 -march = i686 "'' का उपयोग करता हूं। –

+0

जहां मैं काम करता हूं, हम समर्पित उपयोगकर्ता परिभाषित मैक्रोज़ का उपयोग ऐसी चीज के लिए करते हैं - ADDED_CFLAGS, ADDED_ASMFLAGS, ADDED_EXEFLAGS, .... – Sparky

+0

कभी-कभी मेक फ़ाइल में चर होते हैं जो आपको कुछ ओवरराइड किए बिना अतिरिक्त झंडे जोड़ने की अनुमति देते हैं: जैसे 'एक्ससीएफएलजीएस', 'एक्सएलबीएस'। बस मेकफ़ाइल देखें। –

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