Makefile अगर main.cpp
, hello.cpp
, factorial.cpp
में से किसी एक को बदल दिया hello
निष्पादन योग्य बनाता है।कि विनिर्देश प्राप्त करने के लिए छोटी संभव Makefile हो सकता था:
hello: main.cpp hello.cpp factorial.cpp
g++ -o hello main.cpp hello.cpp factorial.cpp
- समर्थक: रखरखाव बुरा सपना, सी ++ निर्भरता के दोहराव
- चोर: बहुत
- चोर को पढ़ने के लिए आसान दक्षता बात नहीं, हम पुन: संयोजित सभी सी ++ भले ही केवल एक बदल दिया गया हो
उपरोक्त में सुधार करने के लिए, हम केवल उन सी ++ फ़ाइलों को संकलित करते हैं जिन्हें संपादित किया गया था। फिर, हम परिणामस्वरूप ऑब्जेक्ट फ़ाइलों को एक साथ जोड़ते हैं।
OBJECTS=main.o hello.o factorial.o
hello: $(OBJECTS)
g++ -o hello $(OBJECTS)
main.o: main.cpp
g++ -c main.cpp
hello.o: hello.cpp
g++ -c hello.cpp
factorial.o: factorial.cpp
g++ -c factorial.cpp
- समर्थक: फिक्स दक्षता मुद्दा
- चोर: नई रखरखाव बुरा सपना, वस्तु फ़ाइलों नियमों पर संभावित टाइपो
इस पर सुधार करने के लिए, हम सब वस्तु फ़ाइल नियम एक एकल के साथ की जगह ले सकता .cpp.o
नियम:
OBJECTS=main.o hello.o factorial.o
hello: $(OBJECTS)
g++ -o hello $(OBJECTS)
.cpp.o:
g++ -c $< -o [email protected]
- समर्थक: एक छोटी makefile होने के लिए वापस, कुछ हद तक आसान
को पढ़ने के लिए यहां .cpp.o
शासन को परिभाषित करता है anyfile.cpp
से anyfile.o
निर्माण करने के लिए कैसे। पहले निर्भरता को
$<
मैचों, इस मामले में, anyfile.cpp
[email protected]
लक्ष्य से मेल खाता है, इस मामले में, anyfile.o
।
अन्य Makefile में मौजूद परिवर्तन कर रहे हैं:
- यह आसान जी ++ किसी भी सी ++ संकलक करने से परिवर्तन compilers को बनाना।
- कंपाइलर विकल्पों को बदलने में आसान बनाना।
- लिंकर विकल्पों को बदलने में आसान बनाना।
- सी ++ स्रोत फ़ाइलों और आउटपुट को बदलने में आसान बनाना।
- एक डिफ़ॉल्ट नियम 'सब' जोड़ा गया जो त्वरित जांच के रूप में कार्य करता है यह सुनिश्चित करने के लिए कि आपकी सभी स्रोत फाइलें आपके आवेदन को बनाने के प्रयास से पहले मौजूद हैं।
स्रोत
2017-04-12 03:04:51
ऊपर दिया गया लिंक टूट गया है, यहाँ एक और एक है: http://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html – asciz
हाय क्या इस ".cpp.o करता है : "एक लक्ष्य के रूप में मतलब है? (पिछली पंक्ति?)। –
".cpp.o:" का अर्थ है ".cpp" (स्रोत फ़ाइलें) – jaguzu