Makefile

来源:互联网 发布:手机号码人肉搜索软件 编辑:程序博客网 时间:2024/06/10 19:02

  • Makefile
    • 变量声明
    • 变量使用
    • 换行符 类似define功能
    • 自动推导
    • 隐晦规则
      • PHONY表声明的文件是伪标件
      • 减号-
      • 命令以TAB开始
    • 语法规则
      • 指定make的文件
      • 引用其他
      • 伪目标

Makefile

1. 变量声明:

  1. 递归展开: 将变量完全展开, 如果变量中还有其他变量也全部展开;
    VAR = var
  2. 简单展开: 只是展开一次, 不展开它包含的其他变量;
    VAR := var

2. 变量使用

`$(VAR)`

换行符 “\”, 类似#define功能.

自动推导

  1. 只要make看到⼀个[.o]⽂件,它就会⾃动的把[.c]⽂件加在依赖关系中;
xx.o : xx.c xx.h    gcc xx.c -o xx.o

由于自动推导, 根据make隐式规则, 可以成
xx.o : xx.h
从而省略.c.

隐晦规则

1. “.PHONY”表⽰声明的文件是伪⽬标⽂件。

如: .PHONY : clean.
.PHONY意思表⽰clean是⼀个“伪⽬标”;

2. 减号”-“

命令前加”-“, 表示如果某些⽂件出现问题,但不要管,继续做后⾯的事。如:

.PHONY : cleanclean :    -rm edit $(objects)

这样,即使有些文件有问题, 仍可以完成rm操作.

3. 命令以”TAB“开始.

语法规则

1. 指定make的文件

当有多个Makefile,可是指定make的文件.make -f file_name;

2. 引用其他

在一个Makefile中同时完成其他makefile的编译工作, (如android中很多的.mk文件):

include <filename>
filename是当前操作系统shell的文件模式.(支持通配符, 变量$());

make命令开始时,会把找寻include所指出的其它Makefile,并把其内容安置在当前的位置。

如果有⽂件没有找到的话,make会⽣成⼀条警告信息,但不会马上出现致命错误。它会继续载⼊其它的⽂件,⼀旦完成makefile的
读取,make会再重试这些没有找到,或是不能读取的⽂件,如果还是不⾏,make才会出现⼀条致命信息。
如果你想让make不理那些⽆法读取的⽂件,⽽继续执⾏,你可以在include前加⼀个减号“-”

3. 伪目标

为了避免和⽂件重名的这种情况,我们可以使⽤⼀个特殊的标记“.PHONY”来显⽰地指明⼀个⽬标是“伪⽬标”,向make说明,不管
是否有这个⽂件,这个⽬标就是“伪⽬标”。
.PHONY : clean

如果你的Makefile需要⼀口⽓⽣成若⼲个可执⾏⽂件,但你只想简单地敲⼀个make完事,
并且,所有的⽬标⽂件都写在⼀个Makefile中,那么你可以使⽤“伪⽬标”这个特性.

all : prog1 prog2 prog3.PHONY : allprog1 : prog1.o utils.o    cc -o prog1 prog1.o utils.oprog2 : prog2.o    cc -o prog2 prog2.oprog3 : prog3.o sort.o utils.o    cc -o prog3 prog3.o sort.o utils.o
0 0
原创粉丝点击