我写了使用自动变量([email protected],$^
)和模式(%
)下面的Makefile,但它不能与GNU使工作:为什么这个makefile不能工作?
TARGET = edit
SRCS = $(wildcard *.c)
OBJS = $(SRCS:%.c=%.o)
$(TARGET) : $(OBJS)
gcc $^ -o $(TARGET)
%.o : %.c
gcc $< -c [email protected]
我的foo.c,bar.c工作目录。 错误是:
gcc foo.c -c foo.o
gcc: foo.o: No such file or directory
make: *** [foo.o] Error 1
我得到automatic variables
和pattern rules
,如何准确使用它们如此混乱?他们有什么关系吗?
谢谢,我太粗心了!但为什么我用'gcc -c $ <-o $ @'替换'gcc -c $^-o $ @'时看不到任何区别? – 2013-04-06 08:30:34
我不确定我了解您的回复。你仍然看到一个错误?你能用新的错误输出更新你的问题吗?你期望看到什么不同? – jszakmeister 2013-04-06 08:40:16
我想你可能混淆了你所说的话。我想你的意思是“为什么我用'gcc -c $^-o $ @'替换'gcc -c $ <-o $ @'时看不到差异?因此,不要看第一个依赖关系,而是看看所有这些依赖关系。答案是每个'.o'文件只有一个依赖项:它来自的'.c'文件。所以在这种情况下'$ ^'和'$ <'没有区别。 – jszakmeister 2013-04-06 08:58:25