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 条评论
登录 后参与评论

相关文章

来自专栏Google Dart

AngularDart Material Design 输入 顶

Selector: <material-input:not(material-input[multiline])>

14540
来自专栏iKcamp

React 深入系列3:Props 和 State

文:徐超,《React进阶之路》作者 授权发布,转载请注明作者及出处 ---- React 深入系列3:Props 和 State React 深...

40260
来自专栏木制robot技术杂谈

常用命令行快捷键

17150
来自专栏从零开始学自动化测试

appium+python自动化48-长按(long_press)

长按操作是经常会遇到的场景,通过driver可以直接调出long_press_keycode方法,但是这个方法是长按手机上某个按钮,比如长按电源键,长按home...

26910
来自专栏GreenLeaves

Jquer学习之jQuery(function(){})与(function(){})(jQuery)之间的区别

Jquery是优秀的Javascrīpt框架。我们现在来讨论下在 Jquery 中两个页面载入后执行的函数。 $(document).ready(functio...

1K50
来自专栏Google Dart

AngularDart 4.0 高级-结构指令 顶

本指南介绍Angular如何用结构指令操纵DOM,以及如何编写自己的结构指令来完成相同的操作。

14520
来自专栏Golang语言社区

厚土Go学习笔记 | 19. slice和数组很像,但是slice可以添加元素

slice中文可以称为“切片”。是Go语言为处理同类型数据序列提供的一个高效且方便的方式。是在数组上抽象的一个数据类型。 切片的使用相当的广泛。 切片可以直接赋...

38970
来自专栏破晓之歌

vue2.5入门(推荐,差代码) 原

10720
来自专栏软件开发

一个小时学会jQuery

前一段时间录了一套关于jQuery的视频分享给大家,可以在下载区下载到,本来想配合文字一起的,后面发现视频+帮助文档也是非常好的学习方法。 一、jQuery简介...

29370
来自专栏繁花云

12-01-js深入学习

问题表现是:httpd服务器已经开启了,端口也已经监听了,但是就是无法访问

6900

扫码关注云+社区

领取腾讯云代金券