पर विचार करें निम्नलिखित Makefile:मेकफ़ाइल में सशर्त रूप से फ़ाइल कैसे शामिल करें?
# <include global configuration Makefile>
INCL = -I../include \
-I<whatever>
CPPFLAGS=$(DEFS) $(INCL)
CXXFLAGS = -O0 -g -Wall -fmessage-length=0
SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)
all: $(OBJS)
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o [email protected] $<
depend: .depend
.depend: $(SRCS)
$(CPP) $(CPPFLAGS) -M $^ > [email protected]
clean:
rm -f $(OBJS)
rm .depend
-include .depend
यह Makefile g++ -M
आदेश का उपयोग कर एक #include
निर्भरता श्रृंखला बनाता है, और यह भी शामिल है। यह एक लंबी प्रक्रिया हो सकती है। समस्या यह है कि यह फ़ाइल तब भी उत्पन्न होती है जब make clean
कहा जाता है, जब भी यह फ़ाइल हटा दी जाएगी। क्या इस स्थिति को सशर्त रूप से शामिल करने का एक तरीका है, और यदि स्वच्छ लक्ष्य चलाया जाता है तो इसे बनाने में परेशानी नहीं है?
इसका विवरण विस्तार से दिया गया है [यहां] [1]। [1]: http://stackoverflow.com/questions/3714041/why-does-this-makefile-execute-a-target-on-make-clean/3714054#3714054 –