#Makefile # # “$<”表示所有的依赖目标集(也就是“main.c code.c”) # “$@”表示目标集(也就是“main.o code.o”) # # .PHONY 伪目标 # 伪目标 的取名不能和文件名重名,不然其就失去了“伪目标”的意义了 # 为了避免和文件重名的这种情况, # 我们可以使用一个特殊的标记“.PHONY”来显示地指明一个目标是“伪目标”, # 向make说明,不管是否有这个文件,这个目标就是“伪目标” # # -rm 中的前缀“-”是标记为不管命令出不出错都认为是成功的 # # 嵌套执行make # 例: cd xx/subdir && $(MAKE) # 例子的意思为:先进入“xx/subdir”目录,然后执行make命令。 # 使用途径:比如一个项目有多个目录内有makefile便可以在项目根目录内搞一个总控makefile BIN = main OBJECTS = main.o code.o CFLAGS = -Wall -std=c99 -g CC = gcc all: $(OBJECTS) $(CC) $(CFLAGS) -o $(BIN) $(OBJECTS) %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ .PHONY: clean clean: -rm *.o -rm -rf $(BIN)