मैं तुम्हें जीएनयू करें और जीसीसी का उपयोग कर रहे संभालने कर रहा हूँ दे सकता है। पहले निर्भरता फ़ाइलों की अपनी सूची रखने के लिए एक चर जोड़ें। मान लिया जाये कि आप पहले से ही एक है कि हमारे सभी स्रोतों को सूचीबद्ध करता है:
include $(DEPS)
तो इस पैटर्न नियम जोड़ने:
SRCS = \
main.c \
foo.c \
stuff/bar.c
DEPS = $(SRCS:.c=.d)
फिर makefile में उत्पन्न निर्भरता शामिल
# automatically generate dependency rules
%.d : %.c
$(CC) $(CCFLAGS) -MF"[email protected]" -MG -MM -MP -MT"[email protected]" -MT"$(<:.c=.o)" "$<"
# -MF write the generated dependency rule to a file
# -MG assume missing headers will be generated and don't stop with an error
# -MM generate dependency rule for prerequisite, skipping system headers
# -MP add phony target for each header to prevent errors when header is missing
# -MT add a target to the generated dependency
"$ @ "लक्ष्य (बाएं तरफ की चीज़:) है," $ < "पूर्वापेक्षा है (: दाईं ओर की चीज़:)। अभिव्यक्ति "$ (<: .c = .o)" .c एक्सटेंशन को .o के साथ बदल देती है।
यहां चाल दो बार जोड़कर दो लक्ष्य के साथ नियम उत्पन्न करना है; यह .o फ़ाइल और .d फ़ाइल दोनों को स्रोत फ़ाइल और उसके शीर्षकों पर निर्भर करता है; इस तरह निर्भरता फ़ाइल स्वचालित रूप से पुन: उत्पन्न हो जाती है जब भी संबंधित .c या .h फ़ाइलों में से कोई भी परिवर्तित हो जाता है।
-एमजी और -एमपी विकल्प हेडर फ़ाइल अनुपलब्ध होने पर फ्रेकिंग से बने रहते हैं।
स्रोत
2010-01-11 23:20:53
'-एमटी' मेरे जीसीसी 2.9.5 के लिए उपलब्ध नहीं है, अतिथि – checksum
@checksum से ऊपर 3.xx उपलब्ध होना चाहिए: ... [2.9.5] नहीं था (http://gcc.gnu.org /gcc-2.95/) 14 साल पहले जारी किया गया था? –
यूप, मैंने पाया कि आउट ऑफ़ बिल्ड बिल्ड प्लेटफ़ॉर्म के साथ विरासत कोड बनाए रखने पर। : | यह अभी भी 2.9.1.57 का उपयोग कर रहा है (जीसीसी की जगह उदासीन कॉल था) और अच्छी बात यह है कि इसमें केवल 4 फाइलों के साथ न्यूनतम निर्भरता है और 700k से कम है। :) बुरी बात यह है कि इसमें कोई '-एमटी' समर्थन नहीं है। :( – checksum