के साथ कंपाइलर-विशिष्ट झंडे कैसे सेट करें हम अपने निर्माण आधारभूत संरचना के रूप में ऑटोोटूल का उपयोग करते हैं, और हम कंपाइलर्स के रूप में क्लैंग और जीसीसी का उपयोग करते हैं। हाल ही में हमनेautotools
--param max-vartrack-size=100000000
चुप्पी के लिए (पूरी तरह से जीसीसी के वार्ट्रैकिंग को अक्षम किए बिना) की आवश्यकता है। बजना उस विकल्प को स्वीकार नहीं करता और
argument unused during compilation: '--param max-vartrack-size=100000000'
मौन करने के लिए है कि, बजना जरूरत
-Qunused-arguments
उत्पादन और है कि जीसीसी के तहत एक त्रुटि पैदा करता है:
unrecognized command line option ‘-Qunused-arguments’
क्या है
configure.ac
में कंपाइलर-विशिष्ट झंडे को परिभाषित करने का सबसे अच्छा तरीका, एक कंपाइलर के साथ चुना गया है, उदाहरण के लिएAC_PROG_CXX
? हमAC_SUBST(AM_CXXFLAGS)
तो मुझे लगता है कि मैंAM_CXXFLAGS
के भीतर एक कंपाइलर विशिष्ट चर का विस्तार कर रहा हूं।Makefile.am
में प्रति-लक्ष्य विकल्प को केवल एक संकलक के लिए सक्षम करने का सही तरीका क्या है? मैं सोच रहा हूँ:if HAVE_GCC SPECIFIC_CXXFLAGS = --param... endif if HAVE_CLANG SPECIFIC_CXXFLAGS = -Q... endif libfoo_la_CXXFLAGS = $(AM_CXXFLAGS) $(SPECIFIC_CXXFLAGS)
लेकिन मैं HAVE_*
वार्स configure.ac से subst'ed आवश्यकता होगी। क्या AC_PROG_CXX/CC
शायद पहले से ही इस तरह कुछ परिभाषित करता है?
मैं आपके बयान से परेशान हूं कि किसी को 'AC_SUBST' 'AM_CXXFLAGS' नहीं होना चाहिए। हाथ से सभी 15ish 'Makefile.am' में 'AM_CXXFLAGS' सेट करने से अलग कैसे है? 'AC_SUBST'ing' AM_CXXFLAGS' पूरी परियोजना के लिए डिफ़ॉल्ट रूप से चेतावनियां सक्षम करने या जीसीसी 5.1 के साथ पुराने एबीआई को चुनने जैसी चीजों के लिए एकदम सही समाधान है (जो सभी ऑब्जेक्ट्स के लिए समान होना आवश्यक है)। 'Makefile.am' में से प्रत्येक में 'AM_CXXFLAGS' सेट करने से कम, मैं इसे और कैसे प्राप्त करूं? – Irfy
मैंने अपने 'grep' चेक के समतुल्य सशर्त परीक्षण के साथ अपने config.ac,' HAVE_GCC' और 'HAVE_CLANG' में दो' AM_CONDITIONAL को जोड़ने का विकल्प चुना। धन्यवाद! – Irfy
@Irfy - यही है 'CXXFLAGS' के लिए है। आप 'CXXFLAGS' के माध्यम से 'कॉन्फ़िगरेशन' पर कंपाइलर विशिष्ट झंडे पास कर सकते हैं, या' config.ac' में 'CXXFLAGS' झंडे को जोड़/संशोधित कर सकते हैं। यह चर C++ निर्माण नियमों में भी शामिल है। –