मैं वस्तुओं के लिए मेकफ़ाइल निर्भरता उत्पन्न करने के लिए जीसीसी में -MM
ध्वज का उपयोग करता हूं। makefile संक्षेप में इस प्रकार है:जीसीसी मेकफ़ाइल निर्भरता उत्पादन पथ
-include autodep
...
$(TARGET): build $(OBJECTS)
$(CC) -shared -o [email protected] $(OBJECTS)
$(CC) -MM $(SOURCES) > autodep
सूत्रों फ़ोल्डर src
में स्थित हैं। हालांकि, autodep
फ़ाइल उनके रिश्तेदार पथ के बिना वस्तु लक्ष्यों में शामिल होंगे:
foo.o: src/foo.c src/foo.h
bar.o: src/bar.c src/bar.h src/baz.h
कैसे मैं उन्हें इस में बदल जाते हैं चाहिए:
src/foo.o: src/foo.c src/foo.h
src/bar.o: src/bar.c src/bar.h src/baz.h
?
मैंने -MT
ध्वज का उपयोग करने की कोशिश की, लेकिन ऐसा लगता है कि ऑब्जेक्ट लक्ष्यों को पूरी तरह से हटा दिया गया है।
धन्यवाद! मैं 'foreach' लूप का उपयोग करता हूं, और' autodep' की सामग्री अब सही हैं। लेकिन यह वास्तव में काम नहीं करता प्रतीत होता है। प्रश्न से उदाहरण का उपयोग करते हुए, यदि मैं 'src/bar.h' बदलता हूं और 'मेक' चलाता हूं तो मुझे बस 'मेक: \' src/foo.o' अद्यतित है '। –
'सभी के बाद 'शामिल करें' को हटाकर इसे हल करें:'। –