Makefile中的Shell脚本简介

给很多刚接触Makefile的人:

1、Makefile中可以嵌入shell脚本,而且能像shell脚本中一样,各种命令、控制结构都可使用。

2、Makefile的主要结构是

...

target ... : prerequisites ... 

[TAB]command1

[TAB]command2

[TAB]...

...

只有在command位置的shell脚本才是有效的,也就是只有在“生成目标的规则处”写的shell脚本才是shell脚本,其它位置的shell都是无效的。当然也可以使用xx=$(shell pwd)这种特别的形式来简单使用shell。

3、Makefile中的shell,不同的行在不同的进程中执行,不同的行直接不能传递变量,所以很多时候shell都尽量使用反斜杠()来把相关的内容串成一行。比如:

all:

    @CC=arm-linux-gcc

    @echo $(CC)

上面的echo是打不出来东西的。

CC=arm-linux-gcc

all:

    @echo $(CC)

上面的echo是OK的,而且多半都是这么写。

4、Makefile变量和shell变量是两个不同的东西,并且为了避免Makefile变量和shell变量冲突,引用Makefile变量最好使用$(Makefile_Var),引用shell变量时最好使用$$Shell_Var。

5、Makefile的多字符变量只能使用$(VAR)或${VAR}来引用,不能使用$VAR,$VAR会被解释成$(V)AR. 但如果在纯粹的shell编程中,纯shell脚本里可以使用$VAR来引用VAR这个变量。

收藏于 2012-08-08

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蓝天

C/C++常见gcc编译链接错误解决方法

用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例: -Wl,-Bstatic -lmysq...

913
来自专栏Laoqi's Linux运维专列

shell命令基本知识点(下)

特殊符号 *       任意个任意字符 ?       任意一个字符 #      注释字符 \      脱义字符 |       管道符 # cat /e...

2777
来自专栏闻道于事

vim命令

561
来自专栏北京马哥教育

14个实战案例带你了解Linux的‘sort’命令

云豆贴心提醒,本文阅读时间7分钟 sort是什么 Sort是用于对单个或多个文本文件内容进行排序的Linux程序。 Sort命令以空格作为字段分隔符,将一行...

2954
来自专栏欧科云

CentOS下常用编辑命令-vi

531
来自专栏IT派

怎么给 Python 写 C 扩展?

其中,静态函数 calc_add 以python的C接口方式封装了add函数,命名方式 模块名_函数名

1125
来自专栏老马寒门IT

Node入门教程(8)第六章:path 模块详解

1384
来自专栏Linux驱动

第1阶段——uboot分析之查找命令run_command函数和命令定义过程(6)

本节主要学习,run_command函数命令查找过程,命令生成过程 1.run_command函数命令查找过程分析: 在u-boot界面中(main_loop(...

2126
来自专栏老马寒门IT

Node入门教程(8)第六章:path 模块详解

path 模块详解 path 模块提供了一些工具函数,用于处理文件与目录的路径。由于windows和其他系统之间路径不统一,path模块还专门做了相关处理,屏蔽...

2668
来自专栏轻扬小栈

Vim 常用快捷键及键盘图

1233

扫码关注云+社区