循环依赖关系丢弃在 make 文件中的多个可执行文件上


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 行上导致循环依赖的条件。

最新更新