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文件
Makefile笔记
最新推荐文章于 2024-01-15 22:11:14 发布