gpt4 book ai didi

c - Makefile 循环依赖

转载 作者:太空狗 更新时间:2023-10-29 15:18:43 25 4
gpt4 key购买 nike

这是我的生成文件:

.PHONY: all homework1
CFLAGS= -g -O0 -Wall -Werror -Wno-unused-function
LDFLAGS= -lm

all : homework1

homework1 : program.tab.o program.lex.o
%.o : %.c
gcc -o$@ -c $(CFLAGS) $<
%.lex.c : %.lex %.tab.h
flex -o$@ $<
%.tab.c %.tab.h : %.y
bison --verbose -o$@ -d $<

每当我尝试编译时,我都会收到警告 make: Circular program.lex <- program.lex.o dependency dropped.我不明白 program.lex依赖于 program.lex.o在所有的生成文件中。我看到依赖关系树大约有 4 层深,但它看起来不是圆形的。

如何改进我的 makefile?

最佳答案

问题在于 Make 中有一个隐式规则(好吧,无论如何在 GNUMake 中)用于链接单个目标文件以构建可执行文件。您的 makefile 没有说明如何构建 program.lex,因此 Make 依赖隐式规则从 program.lex.o 构建它。

由于您的布局似乎依赖于以 program.lex 开头,因此您可以通过为 program.lex 添加自己的规则来抑制隐式规则(什么都不做):

program.lex:;

关于c - Makefile 循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3674019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com