如何修复这个Makefile

如何修复这个Makefile,makefile,Makefile,它所做的不是可执行代码,而是创建不做任何事情的文件,即使这些文件是可执行的 TARGETS = load list show add delete btree all: $(TARGETS) %: %.cpp g++ $< -g -o $@ -MM -MF $@.dd sed "s/$@\.o:/$@:/" $@.dd > $@.d -@rm $@.dd DEPS=$(TARGETS:%=%.d) -include $(DEPS) TARGETS=加载列表

它所做的不是可执行代码,而是创建不做任何事情的文件,即使这些文件是可执行的

TARGETS = load list show add delete btree
all: $(TARGETS)
%: %.cpp
    g++ $< -g -o $@ -MM -MF $@.dd
    sed "s/$@\.o:/$@:/" $@.dd > $@.d
    -@rm $@.dd

DEPS=$(TARGETS:%=%.d)
-include $(DEPS)
TARGETS=加载列表显示添加删除树
全部:$(目标)
%:%cpp
g++$<-g-o$@-MM-MF$@.dd
sed“s/$@\.o:/$@:/”$@.dd>$@.d
-@$@.dd马来西亚令吉
DEPS=$(目标:%=%.d)
-包括美元(DEPS)

您正在使用
-MM
选项运行g++来创建依赖项文件。但是这个选项会导致g++编写一个依赖文件而不是二进制文件

试试这个:

TARGETS = load list show add delete btree
all: $(TARGETS)
%: %.cpp
    g++ $< -g -o $@
    g++ $< -g -MM -MF $@.dd
    sed "s/$@\.o:/$@:/" $@.dd > $@.d
    -@rm $@.dd

DEPS=$(TARGETS:%=%.d)
-include $(DEPS)
TARGETS=加载列表显示添加删除树
全部:$(目标)
%:%cpp
g++$<-g-o$@
g++$<-g-MM-MF$@.dd
sed“s/$@\.o:/$@:/”$@.dd>$@.d
-@$@.dd马来西亚令吉
DEPS=$(目标:%=%.d)
-包括美元(DEPS)