当前位置:  开发笔记 > 编程语言 > 正文

为什么要抱怨循环依赖?

如何解决《为什么要抱怨循环依赖?》经验,为你挑选了1个好方法。



1> RBerteig..:

你的隐含规则是罪魁祸首.它们具有以与make如何理解它们相反的顺序列出的扩展名.

.o.c:

告诉make .c文件是从.o文件创建的.由于已经存在一条规则,即.o文件是从.c文件创建的,因此您具有循环依赖关系,因此存在错误.

解决方案是(或应该是,假设合理配置的make)简单.

您(通常)不需要在常见的情况下(例如C++源代码)指定自己的编译规则.只需指定类似的内容会更简单:

CFLAGS=-Wall
LOADLIBES=-lGL -lglut -ljpeg

OBJS=helpers.o loadobj.o zpr.o readjpeg.o readppm.o SceneNode.o \
   BoundingBoxNode.o GeometryNode.o SceneGraph.o  testgraph.o 

all: testgraph

testgraph: $(OBJS)

这可能也可以帮助您避免两个错误.

    你写的规则说.o文件是从.c文件创建的,这是向后的.c文件.但几乎所有版本的make中都存在正确的规则.

    您已在目标文件之前列出了库.这在使用ELF格式对象的某些平台上偶然起作用.但它仍然是错误的.在对象之后列出库,因为仅加载库以满足未定义的外部.


@Elazar,是的.但最初的问题并非如此.它是关于创建一个makefile,它将依赖关系定义为循环图而不是**非循环**图.关键是要避免循环,我的解决方案是通过避免手动指定已经正确安装和配置的`make`已知的任何东西来做到这一点.
推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有