【问题标题】:circular dependency dropped on more than one executables in make file在 make 文件中对多个可执行文件的循环依赖
【发布时间】:2014-02-11 20:56:10
【问题描述】:
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 时,我的循环依赖被丢弃了。有什么问题??

你还能解释一下“%^”宏的确切含义吗??

【问题讨论】:

  • 如果你能告诉我们哪个循环依赖被删除了,那将会非常有帮助。粘贴您收到的确切错误消息应该是您提出问题时要做的第一件事。

标签: makefile circular-dependency


【解决方案1】:

你有这个:

exe = mp1
exe2 = compare

mp1: $(exe)
compare: $(exe2)

所以,展开变量后,就是:

mp1: mp1
compare: compare

这意味着“要构建mp1,必须先构建mp1,要构建compare,必须先构建compare”。因此,循环依赖。

我不知道%^ 是什么意思。也许你的意思是$^?在 GNU make 手册中查找 Automatic Variables

【讨论】:

    【解决方案2】:

    您将 mp1 和 compare 定义为导致循环依赖的第 3 行和第 4 行的条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2020-12-26
      • 1970-01-01
      • 2011-07-11
      • 2015-07-25
      相关资源
      最近更新 更多