自动化编译工具make的使用

make的介绍

make是一个自动化工具,可以进行批量的编译操作,名为makefile的文件一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make还有一个优点,就是如果一个大型的项目里面部分文件出现改动,那么就需要重新编译,如果全部编译一边的话就会消耗大量时间,如果使用make的话就可以只编译改动的文件和与改动文件有关的文件,这样就节省了大量的时间。

关于make的优点的机制就是,当执行make指令的时候,系统会先去对比目标文件和依赖文件的时间关系。如果依赖文件时间比目标文件晚,就证明需要重新编译,而如果比目标文件早,就证明无须再编译,并且这种检测是递归的,比如下面这个案例,make指令在检测第一条规则的时候,会进入有关txt.o的规则去检测其依赖文件和目标文件的时间关系,然后再回到第一条规则中去进行检测。

make的基本语法

目标文件名:依赖文件名

(键盘输入一个tab)规则的具体实现

其中注意在第二行必须是一个tab键,不是八个空格。

make中变量的使用

make中和shell一样可以使用变量,方便我们提高效率。

make中变量分为三种:自动变量,自定义变量,隐式变量

自动变量

和其名字一样,是在执行make指令时自动生成的,在不同的规则中表达的意思是不一样的,就像如果一个人是一个学生,然后有两个班,1班和2班,在1班就自动生成他是1班的学生,在2班就自动生成他是2班的学生

自动变量的表示形式和其含义

            $*      不包含扩展名的目标文件名称
            $+      所有的依赖文件,以空格分开,并以出现的先后为序,可能 包含重复的依赖文件
            $<      第一个依赖文件的名称
            $?      所有时间戳比目标文件晚的的依赖文件,并以空格分开
            $@    目标文件的完整名称
            $^      所有不重复的目标依赖文件,以空格分开
            $%     如果目标是归档成员,则该变量表示目标的归档成员名称

自动变量的优点

在使用自动变量的时候,可以方便提高效率(其实就是偷懒),比如你在使用编写规则的时候,依赖文件名很长,你不想写,就可以直接一个$+表示就行了,你就不用再自己打一遍名字了

自定义变量

自定义变量的机制和c语言里面的预定义一样,提前声明一个变量的名字和其表达的意思,在使用时就可以直接使用变量名就行了。在更改的时候也不用一个一个去更改,直接在声明部分更改就可以了。

自定义变量的用法

变量名 = 内容(可以是一个文件名,也可以是多个文件的名字)

还可以追加的赋值

变量名 +=追加的内容(生成的变量的值为原来内容加上追加的内容)

注意: Makefile 中变量的命名可以使用字符、数字和下划线,但是要注意变量名对大小写是敏感的。

在引用的时候和在shell中有一些不一样,shell中是${变量名},但是make中是$(变量名),make中使用的是(),这点需要注意。

特殊用法

可以在shell中给自定义变量赋值

具体做法是

make 变量名=内容

隐式变量

是系统提前就已经定义好了的可以直接使用的

AR

函数库打开包程序。默认命令是“ar”

AS

汇编语言编译程序。默认命令是“as”

CC

C语言编译程序。默认命令是“cc”

CXX

C++语言编译程序。默认命令是“g++”

CO

从RCS文件中扩展文件程序。默认命令是“co”

CPP

C程序的预处理器(输出是标准输出设备)。默认命令是“$(CC) -E”

FC

Fortran和Ratfor的编译器和预处理程序。默认命令是”f77”

GET

从SCCS文件扩展文件的程序。默认命令是“get”

LEX

Lex方法分析器程序(针对于C或Ratfor)。默认命令是”lex”

PC

Pascal语言编译程序。默认命令是”pc”

YACC

Yacc文法分析器(针对C程序)。默认命令是“yacc”

YACCR

Yacc文法分析器(针对Ratfor程序)。默认命令是“yacc -r”

MAKEINFO

转换Texinfo源文件(.texi)到info文件程序。默认命令是“makeinfo”

TEX

从TeX源文件创建TeX DVI文件的程序。默认命令是“tex”

WEAVE

转化Web到TeX的程序。默认命令是“weave”

TEXI2DVI

从Texinfo源文件创建TeX DVI文件的程序。默认命令是“texi2dvi”

CWEAVE

转化C Web到TeX的程序。默认命令是“cweave”

TANGLE

转换Web到Pascal语言的程序,默认命令是”tangle“

CTANGLE

转换C Web到C。默认命令是”ctangle“

RM

删除文件命令。默认命令是”rm -f“

特殊规则的使用

在makefile文件中可以编写一些特殊的规则来进行操作,比如输出,清理之类的

用法

特殊规则名(自己定义):(没有依赖文件)

  (一个tab键)具体实现

引用方法

make 规则名

案例

案例讲解

echo就是输出(123)。

clear就是删除后缀为.o的文件,我们在编译的时候会生成大量的中间文件,可以通过这个用法清除中间产生的不必要的文件,释放空间。

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值