【发布时间】:2014-06-07 12:50:00
【问题描述】:
我正在尝试制作 Makefile,但出现错误:
make: * 没有生成目标 main.c 的规则,main.o 需要它。停下来。
谁能解释我为什么会收到这个错误,或者如果可能的话甚至建议修复,谢谢。
TARGET = example
SRC_FILES = \
Makefile \
README \
a.c \
a.h \
b.c \
b.h \
main.c
OBJS = \
main.o \
a.o \
b.o
CC = gcc
CFLAGS = -g -Wall -std=c99
(TARGET): $(OBJS)
$(CC) $(OBJS) $(LDFLAGS) -o $@
$(TARGET): $(TARGET).html $(TARGET).pdf
$(TARGET).html: $(TARGET).umt
$(UMT) $< >$@
$(TARGET).pdf: $(TARGET).html
$(HTML2PS) -N 0 -n $(TARGET).html > $(TARGET).ps
$(PS2PDF) $(TARGET).ps
rm -f $(TARGET).ps
clean:
rm -f $(TARGET).html $(TARGET).pdf
a.o: a.c a.h
b.o: b.c b.h
main.o: main.c a.h b.h
【问题讨论】:
-
你得到这个错误是因为你的源目录中没有
main.c,也没有任何其他文件知道如何转换为main.o。应该有一个吗? ATM 您的 makefile 期望能够生成对象main.o、a.o和b.o。 -
如果这是您使用的旧版 unix 操作系统,请记住对于某些操作系统,目标元素必须使用真正的 TAB 字符而不是空格缩进。我认为错误消息会有所不同,但值得 dbl-chking。祝你好运。