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 时,我被丢弃了循环依赖。 有什么问题??
您还能解释一下"%^"宏到底是什么意思吗?
你有这个:
exe = mp1
exe2 = compare
mp1: $(exe)
compare: $(exe2)
因此,在展开变量后,这是:
mp1: mp1
compare: compare
这意味着"要构建mp1,您必须首先构建mp1,而要构建比较,您必须首先构建比较"。 因此,循环依赖关系。
我不知道你说的%^
是什么意思. 也许你的意思是$^
? 在 GNU 制作手册中查找自动变量。
您将 mp1 和比较定义为第 3 行和第 4 行上导致循环依赖的条件。