makefile

来源:互联网 发布:动画人物设计软件 编辑:程序博客网 时间:2024/06/06 15:35

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有没有赋值,赋过值就失败,没赋过就成功。



$^   
代替所有依赖   $< 代替第一个依赖    $@ 代替规则名
 

原创粉丝点击