3.19 makefile用法及变量(自定义变量、自动变量、隐含变量)

目录

makefile概述

 makefile创建变量的目的

自定义变量

makefile变量的赋值

自动变量

makefile隐含变量


makefile概述

makefile重要性

会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

“自动化编译”:一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率 提升编译效率:再次编译,只编译修改的文件

target... : prerequisites ...

      command

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites就是,要生成那个target所需要的文件或是目标。

command也就是make需要执行的命令。(任意的Shell命令)

 makefile创建变量的目的

 用来代替一个文本字符串:

1.系列文件的名字

2. 传递给编译器的参数

3. 需要运行的程序

4. 需要查找源代码的目录

5. 你需要输出信息的目录

6. 你想做的其它事情。     

自定义变量

x = a               变量在声明时需要给予初值

$(x)或${x}       取值

如果你要使用真实的 $ 字符,那么你需要用 $$ 来表示。

makefile变量的赋值

符号

作用

是最基本的赋值方式,与在文中位置无关,系统自动推导将最终的赋值作为该变量的值。

?=   

 作用是当某变量前面已经定义赋值过,则不执行本次定义赋值,否则执行本次赋值

:=  

是覆盖式赋值,假如某变量在前面已经定义赋值过,则将本次赋值作为最新的变量值

+=   

  追加赋值,旧值保持不变,将新值黏贴到旧值后面

自动变量

$*      不包含扩展名的目标文件名称

$+      所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件

$<       第一个依赖文件的名称

$?       所有时间戳比目标文件晚的的依赖文件,并以空格分开

$@       目标文件的完整名称

$^       所有不重复的目标依赖文件,以空格分开

$%       如果目标是归档成员,则该变量表示目标的归档成员名称

makefile隐含变量

AR     库文件维护程序的名称,默认值为ar。

AS     汇编程序的名称,默认值为as。

CC     C编译器的名称,默认值为cc。

CPP   C预编译器的名称,默认值为$(CC)  –E。

CXX    C++ 编译器的名称,默认值为g++。

FC     FORTRAN编译器的名称,默认值为f77

RM     文件删除程序的名称,默认值为rm -f

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值