先从最简单的makefile说起:
//main.c
int main()
{
printf("hello world\n");
return 0;
}
main:main.o
TAB键gcc -o main main.c
clean:clean.o
TAB键rm -rf main.o main
改错题:
main:main.c
CC $< -o main
提示:CC是make的缺省变量,默认为cc。$<为所有依赖文件。
常见的缺省变量还有:
CFLAGS:值为空
CPPFLAGS:值也应该是空
符号:
$<:第一个依赖文件
$?:新的依赖文件
$(变量名):
$@:目标文件
$^:所有依赖文件
正确写法:
main:main.c
$(CC) $< -o main
关于变量:有一个立即展开和延迟展开的说法
var1:=$(var2)
var2=smile
object:
@echo $var1
分别make一下,比较上面这个和下面这个的区别
var1=$(var2)
var2=smile
object:
@echo $var1
延迟展开:如果变量的定义在后面,也能认识这个变量
立即展开:如果变量定义在后面,这个变量当前为空