2014-05-01 6 views
21

परियोजना है कि मैं का निर्माण करने की कोशिश कर रहा हूँ डिफ़ॉल्ट झंडे है बनानेसंलग्न CFLAGS और CXXFLAGS के झंडे संकलन जबकि विन्यास/

CFLAGS = -Wall -g -O2 

CXXFLAGS = -g -O2 

मैं इन दोनों चर के एक झंडा -w संलग्न करने के लिए की जरूरत है (दूर करने के लिए: 'सब पर विचार त्रुटियों ')

मैं इसे बाहर काम करने के लिए एक विधि है के रूप में चेतावनी दे

make 'CFLAGS=-Wall -g -O2 -w'; 'CXXFLAGS=-g -O2 -w' 

या

भागो ./configure और स्थिर Makefile

संशोधित लेकिन मैं मौजूदा विकल्पों के साथ मेरे विकल्प संलग्न करना चाहते हैं, जबकि configure या make

पद Where to add a CFLAG, such as -std=gnu99, into an autotools project चल आसानी से इस लक्ष्य को हासिल करने के लिए एक मैक्रो का उपयोग करता है।

उत्तर

33

आपके पास लगभग सही है; आपने अर्धविराम क्यों जोड़ा?

./configure CFLAGS='-g -O2 -w' CXXFLAGS='-g -O2 -w' 

make लाइन पर यह ऐसा करने के लिए:

configure लाइन पर यह ऐसा करने के लिए

make CFLAGS='-g -O2 -w' CXXFLAGS='-g -O2 -w' 

हालांकि, कि वास्तव में दूर नहीं करता त्रुटियों के रूप में सभी चेतावनियों पर विचार करें; जो सभी चेतावनियों को हटा देता है। इसलिए -Wall और -w दोनों को निर्दिष्ट करना समझ में नहीं आता है। अगर आप चेतावनियां रखना चाहते हैं लेकिन उन्हें त्रुटियों के रूप में नहीं माना जाता है, तो -Wall -Wno-error झंडे का उपयोग करें।

वैकल्पिक रूप से, configure स्क्रिप्ट्स जो डिफ़ॉल्ट रूप से -Werror को सक्षम करती हैं, उनके पास --disable-werror या इसी तरह का ध्वज भी है। ./configure --help चलाएं और देखें कि ऐसा कुछ है या नहीं।

+1

क्या मेरे लिए इस तरह के statitcally evertime, जैसे CFLAGS = '$ CFLAGS ' निर्दिष्ट करने का कोई तरीका नहीं है, जो पहले से कॉन्फ़िगर किया गया है और इसे बिना जानने के बनाए भी है। – Vigneshwaren

+1

नहीं, यह संभव नहीं है (कम से कम मेकफ़ाइल को संशोधित किए बिना नहीं)। ऑटोकॉन्फ कोडिंग मानकों के अनुसार 'CFLAGS' का डिफ़ॉल्ट मान हमेशा डीबगिंग/ऑप्टिमाइज़ेशन को सक्षम करता है, इसलिए आमतौर पर इसे अधिकांश सिस्टम के लिए हमेशा' -g -O2' होना चाहिए। 'CFIGS' में' -I', '-D', आदि जैसे अन्य महत्वपूर्ण झंडे जोड़ने के लिए यह सही नहीं है (कोडिंग मानकों के अनुसार)। तो यह हमेशा इसे ओवरराइड करने के लिए सुरक्षित होना चाहिए। – MadScientist

+0

यदि आप पैकेज डिफ़ॉल्ट को बनाए रखने के बिना CFLAGS असाइन नहीं कर सकते हैं, तो सॉफ़्टवेयर पैकेजिंग में एक बग होता है जिसे पैकेज रखरखाव को सूचित किया जाना चाहिए। –

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