给很多刚接触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
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。