Makefile笔记

make是一个解析器,入口是规则,即冒号前的那个标签;冒号回车后按tab键,必须是tab键,不能是四个空格。
makefile 是写的是shell语句。
在shell语句前加"@"可使makefile里边的语句不显示,在make 后加 -s(安静模式)也不会显示,全部语句都不会回显
源码包里有./configure,运行后自动生成Makefile,这个Makefile里都会有all,clean,install,uninstall.(makeall 是编译,生成相应的可执行文件,库,所以先要make all编译代码生成相应的库可执行文件才可以执行make install
程序的安装是将配置文件,可执行文件,动态库放到相应的路径中。安装的本质是将相应的文件(包)复制到对应的目录

all: clean install uninstall
    echo all
clean:
    echo clean
install:
    echo install
uninstall:
    echo uninstall
执行make [all]时先执行all的依赖 clean install uninstall ,最后才执行all,依赖可以是规则也可以是文件.文件的优先级比规则高,若文件与规则同名刚规则不会执行,可以用.PHONY:a.txt来改变文件的优先级

all: a.txt
    echo all
a.txt:
    echo a.txt

make -s 安静模式,不会回显makefile里的语句
make -C 接Makefile路径  install(规则)
make -f 接文件名,指定文件名执行,
以上参数可以组合使用。
Makefile  时可以调用另一个Makefile
makefile里边写的是shell语句,语法相同,每一条命令在不同进行执行,不过为了区分,makefile的变量一般用大写makefile,用双$号访问shell变量,单$号访问makefile的变量:shell的变量访问 $$aa,makefiler的访问 ${AA};
shell用#注释
当Makefile嵌套使用时,被调用的makefile是看不到调用它的makefile的变量 若用使用,则需在调用函数中写 export  变量名 但此时的调用与被调用文件名都是makefile不能是其他的名字,也就是说不能用-f指定文件
makefile变量赋值有 
=
:=  与 = 相比,它只赋值一次,效率更高
+= 连接,不过会有一个空格将加入的内容与原内容分开
?=  条件赋值,若变量之 连接,不过会有一个空格将加入的内容与原内容分开
?=  条件赋值,若变量之前没赋过值,则给其赋值,否则不赋值没赋过值,则给其赋值,否则不赋值
makefile的通配符是%,即 %.c 表示所有的.c文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值