Hãy xem xét các Makefile sau:Làm cách nào để có điều kiện đưa tệp vào 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 này tạo ra một chuỗi #include
phụ thuộc bằng cách sử dụng lệnh g++ -M
, và bao gồm nó. Đây có thể là một quá trình khá dài. Vấn đề là tệp này được tạo ngay cả khi make clean
được gọi, khi tệp này sẽ bị xóa. Có một cách để có điều kiện bao gồm tập tin này, và không bận tâm tạo nó nếu mục tiêu sạch được chạy?
Điều này được trả lời chi tiết [ở đây] [1]. [1]: http://stackoverflow.com/questions/3714041/why-does-this-makefile-execute-a-target-on-make-clean/3714054#3714054 –