2016-09-07 7 views
5

मैं इसे make पर तर्क के रूप में पास करके एक सी मैक्रो को परिभाषित करना चाहता हूं, जिसे कमांड लाइन से कहा जाता है।मैक्रो परिभाषा को तर्क के रूप में कैसे पारित किया जा सकता है?

पृष्ठभूमि: मैं अपने सी स्रोत कोड में शामिल होने के लिए निर्देश #define ENABLE_OPT 1 निर्देश देना चाहता हूं जब एक निश्चित निर्माण विकल्प चुना जाता है। इस प्रकार, मैं इसे कोड कोड या मेकफ़ाइल संशोधित करने के बजाय make कमांड लाइन के माध्यम से किया जाना चाहता हूं।

यह कैसे प्राप्त किया जा सकता है? मुझे लगता है कि make -DENABLE_OPT=1 -f Makefile त्रुटियों को फेंकता है कि 'ई', 'एन' आदि बनाने के लिए अवैध तर्क हैं।

+2

बनाने CFLAGS = "- DENABLE_OPT = 1" – Serge

+1

संबंधित प्रश्न http://stackoverflow.com/questions/9052792/how-to-pass-macro-definition-from-make-command-line-arguments-d-to -सी-स्रोत –

+0

धन्यवाद। मेरे पास मेकफ़ाइल में केवल LOCAL_CFLAGS परिभाषित हैं, इसलिए यह कुछ भी ओवरराइड नहीं करेगा। बढ़िया है! –

उत्तर

4

आप --eval उपयोग कर सकते हैं, जो एक makefile बयान के रूप में स्ट्रिंग का मूल्यांकन करेंगे:

make --eval="FLAGS+= -D ENABLE_OPT=1" 

चर FLAGS कर तो कोड को संकलित करने के एक संकलक तर्क के रूप में प्रयोग किया जाता है।

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

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