私のMakefileは以下の通りですが、私はauto-dependenciesに.dファイルを使用しましたが、いくつかの.hファイルを修正したばかりで、それは奇妙です。 %.o
がそれに依存しないので、あなたがなぜ私のMakefileの自動依存関係が機能しないのですか
PROGRAM := a.out
SRCDIRS := ./src/access
INCLUDE := -I./include/access
SRCEXTS := .cpp
CPPFLAGS := -g -Wall
LDFLAGS :=
CXX = g++
RM = rm -f
SHELL = /bin/sh
SOURCES = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS))))
OBJS = $(foreach x,$(SRCEXTS), \
$(patsubst %$(x),%.o,$(filter %$(x),$(SOURCES))))
DEPS = $(patsubst %.o,%.d,$(OBJS))
.PHONY : all objs clean cleanall rebuild
all : $(PROGRAM)
objs : $(OBJS)
%.o : %.cpp
$(CXX) -c $(CPPFLAGS) $< -o [email protected] $(INCLUDE)
$(PROGRAM) : $(OBJS)
$(CXX) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
rebuild: clean all
clean :
@$(RM) $(OBJS) $(DEPS)
cleanall: clean
@$(RM) $(PROGRAM)
-include $(DEPS)
%.d : %.cpp
rm -f [email protected]; $(CXX) -MM $< $(INCLUDE) > [email protected]$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' < [email protected]$$$$ > [email protected]; \
rm -f [email protected]$$$$
古代の依存関係生成コードの使用を中止するには、GCCに[MMD'と 'MP'](http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/)のようなフラグがあります15 years – user657267