मुझे पता है कि निम्नलिखित मेकफ़ाइल में प्री-प्रोसेसर स्वचालित रूप से निर्भरता उत्पन्न करेगा (.d फ़ाइलों में) और उन्हें मेकफ़ाइल में शामिल करें (क्योंकि मेरे पाठ्यक्रम नोट्स ऐसा कहते हैं), इसलिए कि उन्हें स्वचालित रूप से बनाए रखने की आवश्यकता नहीं है। -MMD
ध्वज इसके लिए ज़िम्मेदार है। मुझे जो नहीं मिलता है वह है: डीडी फाइलें किस बिंदु पर उत्पन्न होती हैं? यहां तक कि कोई भी आदेश नहीं है जहां ${CXXFLAGS}
का उपयोग किया जाता है। संभवतः, ${CXX} ${CXXFLAGS} -c x.C -o x.o
जैसे कमांड ऑब्जेक्ट फ़ाइलों में से प्रत्येक के लिए स्वचालित रूप से घटाए जाएंगे, लेकिन यदि ये आदेश हैं जो .d फ़ाइलों को उत्पन्न करते हैं, तो क्या हम पहले से ही उस बिंदु को पार नहीं कर पाएंगे जहां xo, yo और zo की निर्भरताएं जानना प्रासंगिक हो सकता है, अगर हम उन्हें केवल उन फ़ाइलों को निष्पादित करके जानते हैं जो इन .o फाइलें उत्पन्न करते हैं? (कहते हैं वहाँ ज फ़ाइलों को makefile यदि अपने स्वयं के या कुछ और पर नियमों अनुमान के लिए छोड़ दिया उपेक्षा होता है।)स्वचालित रूप से निर्भरताओं को उत्पन्न करने के लिए मेकफ़ाइल में -एमएमडी के साथ जी ++ का उपयोग करना
CXX = g++ # compiler
CXXFLAGS = -g -Wall -MMD # compiler flags
OBJECTS = x.o y.o z.o # object files forming executable
DEPENDS = ${OBJECTS:.o=.d} # substitutes ".o" with ".d"
EXEC = a.out # executable name
${EXEC} : ${OBJECTS} # link step
${CXX} ${OBJECTS} -o ${EXEC}
-include ${DEPENDS} # copies files x.d, y.d, z.d (if they exist)