Makefile学习连载---介绍5

本文是Makefile学习系列的第四篇,主要介绍了Makefile中命令的使用,包括变量的基础、变量中的变量、变量的高级使用、追加变量值、多行变量、环境变量、目标变量以及模式变量的概念和应用实例。通过本文,读者可以掌握Makefile中变量和命令的灵活运用。
摘要由CSDN通过智能技术生成

系列文章目录

第一章 MAKEFILE基础介绍

第二章 MAKEFILE书写规则

第三章 MKKEFILE书写命令



四、Makefile使用命令

第一章请移步这里

4.1 使用命令的基础

  • 变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有 :#= 或是空字符(空格、回车等)。变量是大小写敏感的。传统的Makefile的变量名是全大写的命名方式,但推荐使用大小写搭配的变量名,如:MakeFlags。这样可以避免和系统的变量冲突。

  • 变量在声明时需要给予初值,而在使用时,需要给在变量名前加上 $ 符号,但最好用小括号 () 或是大括号 {} 把变量给包括起来(注意:括号大小写一般不区分,但还是有细微的差别,具体参考前两章内容讲解)。如果你要使用真实的 $ 字符,那么你需要用 $$ 来表示。

  • 变量可以使用在规则中的“目标”、“依赖”、“命令”以及新的变量中。

foo = c
prog.o : prog.$(foo)
    $(foo)$(foo) -$(foo) prog.$(foo)

#### 展开后等价于:

prog.o : prog.c
    cc -c prog.c

实际中不要在Makefile中这样写规则,这里只是举个例子来表明变量的替代”的原理。


4.2 变量中的变量

  • 在定义变量的值时,可以使用其它变量来构造变量的值,在Makefile中有两种方式来在用变量定义变量的值,=:=,关于这两种方式的区别之前已经介绍过,这里不再继续展开。

  • 空格变量的定义方法:

nullstring :=
space := $(nullstring) # end of the line
  • nullstring是一个空变量(什么也没有,包含空格),其中什么也没有,而我们的space的值是一个空格。因为在操作符的右边是很难描述一个空格的,这里采用的技术很管用,先用一个空变量来标明变量的值开始了,而后面采用“#”注释符来表示变量定义的终止,这样,我们可以定义出其值是一个空格的变量。请注意这里关于“#”的使用,注释符“#”的这种特性值得我们注意,如果我们这样定义一个变量:
dir := /foo/bar    # directory
  • dir这个变量的值是“/foo/bar”,后面还跟了4个空格,如果我们这样使用这样变量来指定对应的目录——“$(dir)/file”就会发生错误。

4.3 变量的一些高级使用

1. 变量值的替换。

  • 替换变量中的共有的部分,其格式是 $(var:a=b) 或是 ${var:a=b} ,其意思是,把变量“var”中所有以“a”字串“结尾”的“a”替换成“b”字串,示例如下:
## 这里使用的是非静态模式,静态模式内容参考前两章
foo 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值