यह केवल मेकफ़ाइल का एक सेगमेंट है। मुझे समझ में नहीं आता कि क्या हो रहा है।एकाधिक कॉलन और मेकफ़ाइल में बराबर चिह्न (स्पष्टीकरण की आवश्यकता है)
OBJS = $(SRCS:$(SRC)/%.cpp=$(OBJ)/%.o)
$(OBJS):$(OBJ)/%.o: $(SRC)/%.cpp | print-opts
$(cc-command)
सभी मैं समझता हूँ कि इन पंक्तियों, ओ में फ़ाइलों सीपीपी संकलन 'cc-आदेश' के साथ 'प्रिंट opts' के बाद, है। लेकिन मैं अर्थशास्त्र समझ में नहीं आता।
अगर मैं 'OBJS' की मैक्रो का विस्तार, इस लाइन किया जाना चाहिए:
$(SRCS:$(SRC)/%.cpp=$(OBJ)/%.o) : $(OBJ)/%.o: $(SRC)/%.cpp | print-opts
$(cc-command)
मेरे लिए
, यह $ में की तरह दिखता है (SRCS:। $ (एसआरसी) /% सीपीपी = $ (OBJ) /%। ओ) ', यह दावा करता है कि $ (एसआरसी) में सभी .cpp $ (ओबीजे) में आते हैं, लेकिन यह $ (ओबीजे) /% पर निर्भर करेगा। ओ, जो $ (एसआरसी) पर निर्भर करता है /%.cpp। यह समझ में नहीं आता है ...
मुझे समझ में नहीं आता कि यहां बराबर चिह्न का अर्थ क्या है, और एकाधिक कॉलन का क्या अर्थ है।
आपको बहुत बहुत धन्यवाद। Gnu 'make' मैनुअल के संदर्भ भी बहुत उपयोगी हैं। (मैंने पहले उस मैनुअल को देखा था, लेकिन मुझे आवश्यक जानकारी का पता नहीं लगा सका) – qinsoon
प्रतिस्थापन संदर्भ द्वारा उलझन में टैड। इसलिए यदि मेरे पास 'main.c' है, तो यह इसे ऑब्जेक्ट फाइल निर्देशिका में चिपकाएगा और केवल फ़ाइल एक्सटेंशन को '.o' में बदल देगा। यह फ़ाइल की सामग्री को संरक्षित करता है, और केवल एक्सटेंशन को बदलता है। यह उन सभी ऑब्जेक्ट फ़ाइलों के नाम सेट करता है जिनके साथ हम समाप्त होंगे। फिर हम नामों की सूची को लक्ष्य के रूप में उपयोग करते हैं और फ़ाइलों को ऑब्जेक्ट करने के लिए संकलित करते हैं, और नई ऑब्जेक्ट फ़ाइल के साथ फ़ाइलों को ओवरराइट करते हैं जिन्हें हमने अभी संकलित किया है। सही बात? – Ungeheuer
@Ugegeheuer: नहीं, प्रतिस्थापन संदर्भ फाइलों पर कुछ भी नहीं करता है, यह केवल चर बदलता है। यह "source_dir/main.cpp" को "object_dir/main.o" में बदल देता है; वे * फ़ाइल नाम * हैं, नहीं * फ़ाइलें *। एक बार हमारे पास "object_dir/main.o" स्ट्रिंग हो जाने के बाद, हम इसे पैटर्न नियम में पास कर सकते हैं, जो जानता है कि उस नाम की फ़ाइल कैसे बनाएं। – Beta