基本格式:
target: depend
[tab] command
.PHONY的作用:
- .PHONY被用来作为伪目标。
- 使用目的:当类似clean这样的target关键字作为target并且没有依赖文件时,假如目录下有一个文件也叫clean时,make clean命令则会以为我想编clean这个目标文件,恰好clean文件又不会比依赖文件更旧,所以下面的command就不会被执行。
- .PHONY作为target,clean作为依赖。这就是告诉make,clean它是一个target,而不是一个普通的文件。
makefile中的变量:
- CC来代替具体的编译器,例如:CC=g++
- CFLAGS来代替C语言编译选项,例如:CFLAGS=-c
- -Wall;还会指定头文件include路径,例如:CFLAGS+=-I/usr/include
- LDFLAGS来指定库文件lib路径,例如:LDFLAGS+=-L/usr/lib
- LDLIBS来指定要链接的库名称,例如:LDLIBS+=-llibname
- 整体示例: $(cc) $(CFLAGS) $(LDFLAGS) $(LDLIBS) main.cpp
makefile中的自动变量:
- 当我们使用通配符方法来写target和depend的时候,用上自动变量会更简单一些,也会让编译更顺畅。
- $@ : target文件名
- $< : 第一个depend文件
- $? : 所有比target文件更新的depend文件
- $^ : 所有的depend文件,不管文件修改时间如何
特殊的命令字:
如果要在makefile中使用下面这些系统命令:
ar bison cc flex install ld ldconfig lex make makeinfo ranlib texi2dvi yacc
需要使用makefile规定的替代变量名:
$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)$(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)