exe = mp1
exe2 = compare
mp1: $(exe)
compare: $(exe2)
COMPILER = g++
COMPILER_OPTS = -c -g
LINKER = g++
LINKER_OPTS =
common_objs = EasyBMP.o
exe_objs = main.o
exe2_objs = compare.o
$(exe) : $(common_objs) $(exe_objs)
$(LINKER) $(LINKER_OPTS) $^ -o $@
$(exe2) : $(common_objs) $(exe2_objs)
$(LINKER) $(LINKER_OPTS) $^ -o $@
EasyBMP.o : EasyBMP.h EasyBMP.cpp EasyBMP_BMP.h EasyBMP_DataStructures.h EasyBMP_VariousBMPutilities.h
$(COMPILER) $(COMPILER_OPTS) EasyBMP.cpp
main.o : main.cpp
$(COMPILER) $(COMPILER_OPTS) main.cpp
compare.o : compare.cpp
$(COMPILER) $(COMPILER_OPTS) compare.cpp
clean:
-rm *.o $(exe)
当我做比较或制作mp1时,我的循环依赖性下降了。有什么问题??
你也可以解释一下“%^”宏意味着什么吗?
答案 0 :(得分:0)
你有这个:
exe = mp1
exe2 = compare
mp1: $(exe)
compare: $(exe2)
因此,在扩展变量之后,这是:
mp1: mp1
compare: compare
这意味着“要构建mp1,你必须首先构建mp1,并且要构建比较,你必须首先构建比较”。因此,循环依赖。
我不知道%^
你的意思。也许你的意思是$^
?在GNU make手册中查找Automatic Variables。
答案 1 :(得分:0)
你的第3行和第4行的mp1和比较被定义为导致循环依赖的条件。