1.makefile首先要定义一个规则,规则名随便取。如
kyo:
2.规则的下一行首先必须是一个tab键,然后再是shell命令。如:
all:
echo aaa
执行make后 会打印出:
echo aaa
aaa
要想不打印出第一行,可以在echo前加 @echo aaa 或者编译的时候:make -s
3.makefile适合大的程序。
4.可以包含多条规则,但敲make的时候只执行第一条规则。
要想执行哪条规则,可以: make + 规则名
5. 依赖规则:
all:clean install uninstall
echo ttt
clean:
echo keyo
install:
echo install
uninstall:
echo uninstall
按顺序执行后面的依赖关系。
依赖文件:
clean:1.txt
echo kyo
文件和规则同名时,文件比规则优先级高!!!
clean:1.txt
echo kyo
1.txt:
echo 1.txt --->只打印出echokyo;
要想改变:用伪规则。????
.PHONY:1.txt
例如:
all: clean install uninstall
echo ttt
.PHONY: 1.txt
clean:1.txt
echo kyo
1.txt:
echo 1.txt
install:
echo install
uninstall:
echo uninstall
6. make -C /kyo/ds/makefile/ -->指定makefile所在的路径
可以组合使用
make -C /kyo/ds/makefile/ install -s
如果makefile的文件名被修改成fff 可以这样执行:
make -C /kyo/ds/makefile/ install -f fff
7. 也可以从一个makefile调用另外一个makefile的规则,把当前的makefile写成如下:
all:
make -C /kyo/ds/makefile/ install -ffff
8.makefile的变量
变量的定义:为了区别shell的变量,makefile都用大写。
KYO = "hello world"
all:
echo ${KYO}
shell访问变量:需两个$符号,aa=bb;echo$$aa (一行命令就是一个进程,为了在同一个进程,中间需用 ;)
makefile访问变量:一个$符号和一对大括号,echo${KYO} 或者 echo$(KYO)
环境变量不需要先定义:直接可以 echo $$PWD
export KYO 导出变量,在另一个makefile中也可以调用到。
9. makefile变量的赋值 “ =, +=, :=”
:= 直接替换,效率高
= 在后面才替换 两者只有在=后面跟有变量时才有区别。
一般情况下都使用前者。
A ?= AAA 检测在前面A有没有赋值,赋过值就失败,没赋过就成功。
$^ 代替所有依赖 $< 代替第一个依赖 $@ 代替规则名
makefile
最新推荐文章于 2024-07-21 07:44:54 发布