2012-07-25 12 views
9

Makefile.in में मैं चर परिभाषा जहां एक बाहरी चर नाम दो @ प्रतीकोंMakefile.in और चर प्रतिस्थापन

# @[email protected] 

package = @[email protected] 

कहाँ उन बाहरी चर से आते हैं के बीच संलग्न है देखते हैं? इसके अलावा, मुझे जीएनयू मैनुअल में नहीं मिला जो दो @ प्रतीकों के बीच एक चर को वास्तव में संलग्न करता है? क्या यह Makefile.in के लिए कुछ विशिष्ट है?

धन्यवाद।

उत्तर

8

यह एक ऑटोकॉन्फ़ चीज है।

जब ./configure चल समाप्त कर ले, यह उत्पन्न करता है और जो चर प्रतिस्थापन के अंतिम मूल्य (AC_SUBST साथ घोषित कुछ भी) है कि एक खोल स्क्रिप्ट है एक फ़ाइल config.status कहा जाता है, निष्पादित करता है।

कोई भी चीज जो AC_CONFIG_FILES में घोषित किया जाता है, config.status द्वारा संसाधित किया जाता है आमतौर पर foo में foo.in बदल कर।

automake प्रक्रियाओं जब Makefile.in में Makefile.am, किसी भी AC_SUBST चर स्वचालित रूप से (FOO = @[email protected] की तरह एक घोषणा का प्रयोग करके) उपलब्ध कराया गया है, जब तक यह AM_SUBST_NOTMAKE के लिए एक कॉल द्वारा दबा दिया है।

+0

प्रश्न में 'PACKAGE_NAME' के बारे में क्या? मेरे 'Makefile.am' में मैंने '@datadir @/@ package_name @' का उपयोग किया था, और इसे '$ {datarootdir}/@ package_name @' पर प्रतिस्थापित किया गया था, जो स्पष्ट रूप से सही नहीं है। – jww

+0

'PACKAGE_NAME' विशेष है - यह' AC_INIT' द्वारा सेट किया गया है जैसा कि नीचे उल्लिखित उल्लेख है। –

3

(मैं एक विशेषज्ञ नहीं हूं, लेकिन) हाँ वे Makefile.in के लिए विशिष्ट हैं, और configureMakefile को इकट्ठा करते समय उन्हें बदल देता है, the Autoconf Manual, section 4.8 देखें। उदाहरण के लिए, @[email protected] को AC_INIT द्वारा परिभाषित किया गया है।

+0

यह भी पढ़ें [जैक का जवाब] (http://stackoverflow.com/a/11648552) (और उसे वह चेकमार्क दें)। – tiwo

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