मैं " एडवांस्ड लिनक्स प्रोग्रामिंग (2001)" [कोड] पुस्तक से मेकफाइल का उपयोग कर रहा था । मेरे लिए यह देखना अजीब था कि जीएनयू मेक इन कंपाइलर को निर्दिष्ट किए बिना भी कोड को सही ढंग से संकलित करता है। यह बिना किसी रेसिपी के बेकिंग जैसा है!
यह कोड का एक न्यूनतम संस्करण है:
test.c
int main(){}
makefile
all: test
और वास्तव में काम करता है! यह वह कमांड है जिसे यह निष्पादित करता है:
cc test.c -o test
मुझे प्रलेखन में कुछ भी उपयोगी नहीं मिला। यह कैसे संभव है?
पुनश्च एक अतिरिक्त नोट: यहां तक कि भाषा भी निर्दिष्ट नहीं है; क्योंकि test.cउपलब्ध है, GNU makeका उपयोग करता है cc। यदि मौजूद है test.cppया test.cc(जब कोई नहीं है test.c), यह उपयोग करता है g++(और नहीं c++)।
makeआपके फ्रिज की जांच करता है और पता चलता है कि कुछ आटा उपलब्ध है, तो अपने आंतरिक नुस्खा से आपके लिए एक डिफ़ॉल्ट केक बनाता है। :-)
makeपानी को उबालने और अपने आंतरिक नियमों का उपयोग करने के लिए कह रहा है,makeबस यह कैसे पता चलेगा?)