【发布时间】:2012-01-23 14:26:12
【问题描述】:
我正在通过一个例如 pgm 来创建一个 make 文件。
http://mrbook.org/tutorials/make/
我的文件夹 eg_make_creation 包含以下文件,
desktop:~/eg_make_creation$ ls
factorial.c functions.h hello hello.c main.c Makefile
生成文件
# I am a comment, and I want to say that the variable CC will be
# the compiler to use.
CC=gcc
# Hwy!, I am comment no.2. I want to say that CFLAGS will be the
#options I'll pass to the compiler
CFLAGS=-c -Wall
all:hello
hello:main.o factorial.o hello.o
$(CC) main.o factorial.o hello.o -o hello
main.o:main.c
$(CC) $(CFLAGS) main.c
factorial.o:factorial.c
$(CC) $(CFLAGS) factorial.c
hello.o:hello.c
$(CC) $(CFLAGS) hello.c
clean:
rm -rf *o hello
错误:
desktop:~/eg_make_creation$ make all
make: Nothing to be done for `all'.
请帮我理解编译这个程序。
【问题讨论】:
-
尝试做一个“make clean”,然后是一个“make all”
-
这不是错误,它只是意味着
hello是最新的。在它发生意外之前将clean更改为rm -f *.o hello,然后运行make clean all看看是否可行。 -
您还应该添加
.phony: all clean,因为all和clean不是文件名。 -
不要把 -c 放在你的 CFLAGS 中。