Makefile变量---简单的文本替换
来源:互联网 发布:sql的链接服务器 编辑:程序博客网 时间:2024/05/16 01:36
这次的试验,只有一个Makefile,别的没有任何文件,通过一个伪目标show来演示变量的使用,好奇葩啊。
- cc=gcc
- src=a.c b.c
- .PHONY:show
- show:
- @echo $(cc)
- @echo $(src)
- gcc
- a.c b.c
echo前面为什么要加上@呢?
- .PHONY:reason
- reason:
- @echo "with @"
- echo "without @"
- with @
- echo "without @"
- without @
还有,Makefile中的变量类似于C语言中的宏,只是简单的文本替换。
- city=henan
- school=zzti
- info=$(city)-$(school)
- .PHONY:show
- show:
- @echo $(info)
- henan-zzti
但是,有一种情况给人这种感觉“难道真的是简单的文本替换???”
我们在目录内添加两个文件a.c和b.c,不用写任何内容。
- src=*.c
- .PHONY:show
- show:
- @echo $(src)
- a.c b.c
其实,Makefile中的变量还真的是文本替换,因为@echo $(src)=====@echo *.c
但是,恰好是echo犯病了,把*当做通配符,把本目录内所有以.c结尾的文件都输出了。
可以试一下,直接在终端执行echo *.c,输出的就是a.c和b.c。
下面的例子也是证据:
- src=*.c
- realsrc=a.c b.c
- .PHONY:show
- show:
- echo $(src)
- @echo "-------------"
- echo $(realsrc)
注意只有中间的一个echo加了@,输出结果为:
- echo *.c
- a.c b.c
- -------------
- echo a.c b.c
- a.c b.c
echo $(src)===echo *.c
所以先输出echo *.c,然后输出a.c b.c
echo $(realsrc)===echo a.c b.c
试验证明:Makefile中的宏还真的是简单的文本替换。
0 0
- Makefile变量---简单的文本替换
- Makefile变量---简单的文本替换
- Makefile中变量的替换
- Linux之Makefile(变量的替换)
- 简单实用的文本替换器
- c++ 简单文本替换
- 简单的Makefile规则和Makefile自动变量
- 简单的替换文本里的html内容
- iOS -字符串替换 富文本的简单使用
- 简单的文本查询和替换小例子
- linux开发工具--Makefile(1) 简单的Makefile规则和Makefile自动变量
- vi 的文本替换
- vim的文本替换
- vim的文本替换
- iOS文本的替换
- Solaris的变量替换
- shell变量的替换
- 自动变量的makefile
- 高手速成android开源项目【View篇】
- HHVM安装使用教程
- 第十一周项目6-回文、素数(输出10000以内的可逆素数)
- lower_bound函数的使用
- 多线程之线程通信条件Condition二
- Makefile变量---简单的文本替换
- Linux学习路线
- 我的第一个web开发环境:基于eclipse java EE 的java web系统搭建
- 数据结构之归并排序(迭代实现)
- 归并排序
- 第十一周项目六 (2+)输出1000以内所有回文数
- MySQL数据库导入到SQL Server
- 随笔--四个月培训小结
- Phoenix Tips (8) 多租户