【发布时间】:2025-12-24 07:10:11
【问题描述】:
我的 makefile 有什么问题?
CC = gcc
OBJS = main.o map.o extended_map.o election.o utilities.o
EXEC = election
DEBUG_FLAG = -DNDEBUG
COMP_FLAG = -std=c99 -Wall -pedantic-errors -Werror
$(EXEC) : $(OBJS)
$(CC) $(DEBUG_FLAG) $(OBJS) -o $@
main.o: main.c map.h election.h test_utilities.h
$(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
map.o: map.c map.h utilities.h
$(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
extended_map.o: extended_map.c extended_map.h map.h utilities.h
$(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
election.o: election.c election.h map.h extended_map.h utilities.h
$(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
utilities.o: utilities.c utilities.h
$(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
clean:
rm -f $(OBJS) $(EXEC)
我在 linux 上运行以下命令:
-bash-4.2$ ls
election.c extended_map.c main.c makefile mtm_map utilities.c
election.h extended_map.h main.o map.h test_utilities.h utilities.h
-bash-4.2$ make
make: *** No rule to make target `map.c', needed by `map.o'. Stop.
-bash-4.2$
map.c 存在于当前文件夹内名为mtm_map 的文件夹中
【问题讨论】:
-
makefile 要求
map.c在当前文件夹中,而不是子目录中。 -
我已回滚您的编辑。根据服务条款发布您的问题后,在此污损您的问题是不合适的。请不要再这样做了。
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。
-
mod 消息:帖子已锁定。请不要在锁定期后再回滚。