Makefile

出现以下条件,Makefile文件中的命令会被执行

1、目标文件不存在

2、目标文件所依赖的文件有更新

 

Makefile格式:

目标文件:依赖文件

[tab] 命令

如:

 

hello:hello.o a.o
	gcc -o hello.o a.o
hello.o:hello.c
	gcc -o hello.o -c hello.c
a.o:a.c
	gcc -o a.o -c a.c

 

如果a.c被修改,那么

gcc -o a.c -c a.c

gcc -o hello.o a.o

这两条命令会被执行

如果a.o被删除,那么

 

gcc -o a.c -c a.c

gcc -o hello.o a.o

这两条命令会被执行

 

上面的Makefile文件可以写成通配符的形式:

 

hello : hello.o a.o
	gcc -o $@ $^
%.o : %.c
	gcc -o $@ -c $<

clean:
	rm *.o hello


$@ 目标文件

 

$^ 两个依赖文件

$< 一个依赖文件

clean 虚拟的目标文件,执行make clean的时候会执行其下的命令

 

.PHONY作用的理解:

当某条make命令整个链路上的某个目标被设为伪目标,那么这个目标始终被认为不是最新的,伪目标必须是.PHONY,其他形式的目标,如.PH .a .b和普通目标一样

 

执行make命令时不加参数默认执行的是构造第一个目标(忽略伪目标)的命令

例如:

a:
    echo "hi"

b:
    echo "hello"

all: a b
    echo "ab" 
    

执行结果如下图所示:

执行cd命令,结果不能保存,需要用&&连接

例如:

cd1:
    pwd
    mkdir -p tmp
    cd tmp
    pwd

cd2:
    pwd && \
    mkdir -p tmp && \
    cd tmp && \
    pwd

执行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值