我正在研究OS X上的makefile,我遇到了问题。我已经做了我应该做的一切(我认为),但只有一部分是有效的。当我尝试:
make file1
或:
make file2
一切似乎都很好,但是当我尝试时:
make all
或:
make clean
我得到了典型的:
*** No rule to make target
这是代码,我希望你能发现问题:
CC = gcc
CFLAGS=-Wall
FILES=file1 file2
all: $(FILES)
file1: file1.c
$(CC) $(CFLAGS) file1.c -o file1
file2: file2.c
$(CC) $(CFLAGS) file2.c -o file2
clean:
$(RM) $(FILES)
干杯!
答案 0 :(得分:0)
将评论转移到答案中,主要是关闭问题。
没有明显的理由说明所显示的语法会导致该问题,因此我怀疑make file1
在没有任何makefile的情况下工作并提出了一个默认规则来进行编译(并且可能没有&# 39;编译时使用-Wall
选项。
您创建的makefile的名称是什么?
makefile名为
makefile
,你确实是对的:-Wall
未被使用(我刚注意到)。
那很奇怪。仔细查看名称:ls m* | od -c
。看看这些字母是否符合您的期望,并且名称的末尾没有任何尾随空格或任何类似的东西。
但是没有-Wall
'观察实际上确认问题是makefile
的名称,虽然它不明显为什么它不起作用。您可以尝试make -f makefile all
,看看是否有任何区别。如果名称错误,您应该被告知它无法打开makefile
。
我尝试从头开始重新构建包含完全相同信息的
makefile
并且运行顺利。你对名称问题肯定是正确的。
这种问题很奇怪而且令人困惑 - 获得帮助是明智的。