जवाबों:
Makefile.am
एक प्रोग्रामर से परिभाषित फ़ाइल है और द्वारा किया जाता है automake
उत्पन्न करने के लिए Makefile.in
फ़ाइल ( .am
के लिए खड़ा है एक यूटो मीटर शॉट लें)। configure
आम तौर पर स्रोत टारबॉल में देखी जाने वाली स्क्रिप्ट, Makefile.in
उत्पन्न करने के लिए उपयोग करेगीMakefile
।
configure
स्क्रिप्ट अपने आप में एक प्रोग्रामर से परिभाषित या तो नाम की फ़ाइल से उत्पन्न होता है configure.ac
या configure.in
(बहिष्कृत)। मैं पसंद .ac
(के लिए एक यूटो ग ONF) के बाद से यह उत्पन्न से अलग Makefile.in
फ़ाइलों और इस तरह से मैं इस तरह के रूप नियम हो सकते हैं make dist-clean
जो रन rm -f *.in
। चूंकि यह एक जेनरेट की गई फाइल है, इसलिए इसे आमतौर पर रीट्वेंट सिस्टम जैसे Git, SVN, Mercurial या CVS में स्टोर नहीं किया जाता है, बल्कि.ac
फाइल होगी।
ग्नू ऑटोटूलस पर अधिक पढ़ें । के बारे में पढ़ें make
और Makefile
पहली, तो के बारे में जानने automake
, autoconf
, libtool
, आदि
.in
विस्तार का मतलब है कि के लिए यह के इनपुट configure
की मालिश करने, कि इस्तेमाल किया जाना चाहिए नहीं एक अंतिम फ़ाइल (जैसे के साथ make
)। यदि आप इस बारे में उत्सुक हैं कि यह "हास्यास्पद" जटिल क्यों लगता है, तो पढ़ने की कोशिश करें: stackoverflow.com/a/26832773/939557 इन दिनों GitHub, आदि के साथ एक आम वितरण चैनल बन रहा है ऑटोकॉन्फ़ की कुछ धारणाएं टूट रही हैं: लोग प्राप्त कर रहे हैं स्रोत कोड नियंत्रण उपकरण से सीधे स्रोत, बनाए रखने के द्वारा बनाए गए स्रोत वितरण टारबॉल का उपयोग करने के बजाय।
सरल उदाहरण है
बेशर्मी से इसे अनुकूलित किया गया: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html और Ubuntu 14.04 Automake 1.14.1 पर परीक्षण किया गया।
Makefile.am
SUBDIRS = src
dist_doc_DATA = README.md
README.md
Some doc.
configure.ac
AC_INIT([automake_hello_world], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
src / Makefile.am
bin_PROGRAMS = autotools_hello_world
autotools_hello_world_SOURCES = main.c
src / main.c
#include <config.h>
#include <stdio.h>
int main (void) {
puts ("Hello world from " PACKAGE_STRING);
return 0;
}
प्रयोग
autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autoconf_hello_world
sudo make uninstall
यह आउटपुट:
Hello world from automake_hello_world 1.0
टिप्पणियाँ
autoreconf --install
कई टेम्पलेट फ़ाइलें उत्पन्न करता है, जिन्हें Git द्वारा ट्रैक किया जाना चाहिए, जिसमें शामिल हैं Makefile.in
। इसे केवल पहली बार चलाने की आवश्यकता है।
make install
स्थापित करता है:
/usr/local/bin
README.md
सेवा /usr/local/share/doc/automake_hello_world
आप इसे बाहर की कोशिश करने के लिए GitHub पर ।
autoconf
और automake
:1) ऑटोकॉन्फ़ - shippable कॉन्फ़िगर स्क्रिप्ट बनाता है
(जो इंस्टॉलर बाद में मेकफाइल बनाने के लिए चलेगा )
2) automake - शिप करने योग्य बनाता है Makefile.in डेटा फ़ाइल
(जो कॉन्फ़िगर बाद में होगा पढ़ बनाने के लिए Makefile )
configure
, make
और sudo make install
:./configure # Creates Makefile (from Makefile.in).
make # Creates the application (from the Makefile just created).
sudo make install # Installs the application
# Often, by default its files are installed into /usr/local
नीचे दी गई अधिसूचना मोटे तौर पर है: इनपुट -> प्रोग्राम -> आउटपुट
डेवलपर इनको चलाता है:
config.ac -> autoconf -> कॉन्फ़िगर (स्क्रिप्ट) --- (*। ac = a uto c onf) config.in -> autoconf -> कॉन्फ़िगर (स्क्रिप्ट) --- ( मूल्यह्रास। उपयोग config.ac )
configure.in
Makefile.am -> स्वचालित -> Makefile.in ----------- (*। Am = a uto m ake)
INSTALLER इन्हें चलाता है:
Makefile.in -> कॉन्फ़िगर -> Makefile (। * में = में डाल फाइल)
मेकफाइल -> मेक ----------> (आपके डाउनलोड या अस्थायी निर्देशिका में नया सॉफ्टवेयर डालता है)
मेकफाइल -> स्थापित करें -> (सिस्टम निर्देशिका में नया सॉफ़्टवेयर डालता है)
" ऑटोकॉनफ़ M4 मैक्रोज़ का एक एक्स्टेंसिबल पैकेज है, जो सॉफ्टवेयर स्रोत कोड पैकेज को स्वचालित रूप से कॉन्फ़िगर करने के लिए शेल स्क्रिप्ट का उत्पादन करता है। ये स्क्रिप्ट पैकेज को कई प्रकार के UNIX- जैसे सिस्टम को बिना मैन्युअल उपयोगकर्ता के हस्तक्षेप के अनुकूलित कर सकते हैं। Autoconf एक पैकेज से कॉन्फ़िगरेशन स्क्रिप्ट बनाता है। टेम्पलेट फ़ाइल जो ऑपरेटिंग सिस्टम को सूचीबद्ध करती है, जो कि पैकेज का उपयोग कर सकती है, M4 मैक्रो कॉल के रूप में। "
" ऑटोमेक जीएनयू कोडिंग मानकों के अनुरूप स्वचालित रूप से Makefile.in फ़ाइलों को जनरेट करने के लिए एक उपकरण है। ऑटोमेक को ऑटोकॉनफ के उपयोग की आवश्यकता होती है।"
नियमावली:
मुफ्त ऑनलाइन ट्यूटोरियल:
मुख्य configure.ac लिब्रे ऑफिस के निर्माण के लिए इस्तेमाल किया, कोड की 12k से अधिक लाइनों है (लेकिन वहां भी 57 सब-फ़ोल्डर के अन्य configure.ac फ़ाइलें हैं।)
इससे मेरा जेनरेट किया गया कॉन्फिगर कोड की 41k लाइन्स से अधिक है।
और जबकि Makefile.in और Makefile दोनों ही कोड की केवल 493 लाइनें हैं। (लेकिन, सबफ़ोल्डर्स में 768 से अधिक मेकफिल.इन भी हैं।)
संदर्भ :
Makefile.am - स्वचालित करने के लिए एक उपयोगकर्ता इनपुट फ़ाइल
config.in - एक यूजर इनपुट फाइल ऑटोकैफ के लिए
autoconf config.in से कॉन्फिगर करता है
Makefile.am से Makefile.in को स्वचालित करें
कॉन्फ़िगर Makefile.in Makefile.in से उत्पन्न करता है
पूर्व के लिए:
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in
.in
खड़ा है?