Makefile里调用Shell注意点
http://www.linuxidc.com/Linux/2012-04/59093.htm
大家经常编写和使用Makefile, Makefile里面也经常用到shell, 但对其中一些需要注意的地方未必
会去留意, 这里列出几个来, 不知是否对大家有用。
1. 注意Makefile的变量和shell变量, 看如下示例:
DIRS = src bin lib
all:
@for i in $(DIRS); /
do /
echo " " $$i; /
done
大家看出来了吗? DIRS是makefile变量,i是shell变量, 使用的时候:
$(DIRS), $$i区别还是蛮大的。
2. 每一行的shell都是在独立的进程中运行的,如果你在上一行为一个变量赋值, 不要指望它在下一行有效, 比如:
@CROSS_COMPILE=mipsel-linux-
@echo $(CROSS_COMPILE)
打印的结果不会是mipsel-linux-,如果你想得到所要的结果, 就并为一条shell吧:
@CROSS_COMPILE=mipsel-linux- ; echo @echo $(CROSS_COMPILE)
或者:
@CROSS_COMPILE=mipsel-linux- ; /
echo @echo$(CROSS_COMPILE)
3. shell一定要写在target里, 否则你写了也白费劲, 是会被make忽略掉的.
@echo "Building all..."
all:
@echo "Begin"
只会打印Begin.
Makefile里调用Shell注意点的更多相关文章
- [转] Makefile中调用Shell
1.在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的.比如如下代码就是没有任何输出: VAR="Hello" echo "$(VAR)&q ...
- Makefile调用shell应该注意的地方
转载:http://blog.csdn.net/ninlei0115/article/details/9732191 1.在Makefile中只能在target中调用Shell脚本,其他地方是不能输出 ...
- makefile中的shell语法
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...
- python 调用shell命令三种方法
#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...
- ant调用shell命令(Ubuntu)
ant中调用Makefile,使用shell中的make命令 <?xml version="1.0" encoding="utf-8" ?> < ...
- Java 调用 shell 脚本详解
这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的“陷阱”造成调用shell 脚本在某些特 ...
- makefile中的shell编程注意点
参考:http://blog.csdn.net/wanglang3081/article/details/49423105 (1)Makefile本质上来讲也是shell脚本,即每条command都是 ...
- linux下怎样用c语言调用shell命令
C程序调用shell脚本共同拥有三种法子 :system().popen().exec系列数call_exec1.c , system() 不用你自己去产生进程.它已经封装了,直接增加自己的命令 ex ...
- Ant 调用 Shell/CMD 命令
Ant中调用Makefile,使用shell中的make命令 <?xml version="1.0" encoding="utf-8" ?> < ...
随机推荐
- windows平台vhd磁盘文件挂载
在windows平台下挂载vhd磁盘文件类似于挂载iso等文件; 使用VHDMount工具挂载VHD文件 启动Hyper-V里的外部VHD文件有点困难.如果在备份驱动上有个VHD文件,并需要从其虚拟机 ...
- Mac 删除Openfire
首先,确保你已经关掉了openfire 打开终端 (在应用程序-->实用工具-->) 输入以下命令 sudo rm -rf /Library/PreferencePanes/Openfir ...
- LINQ To XML的一些方法
1.Elements() 返回XML文档或片段的所有第一级元素. 2.Descendants() 返回XML文档或片段中的所有子元素(所有级别的子元素). 3.Attributes() 返回当前选中元 ...
- .net如何后台批量删除
button_Click(Sender sender,Event e){foreach (DataListItem item in DataList1.Items){CheckBox cbox=(Ch ...
- android 补间动画
android开发过程中,为了更好的展示应用程序,应用程序添加动画,能够很好地实现这个功能.如果动画中的图像变化有一定的规律,可以采用自动生成图像的方式来生成动画,例如图像的移动.旋转.缩放等.自动生 ...
- jdbc——CallableStatement,cst调用存储过程
package CST对象调用存储过程; import java.sql.CallableStatement; import java.sql.Types; import org.junit.Test ...
- centos安装phpMyAdmin
phpMyAdmin是一个网络接口,通过它可以管理你的MySQL数据库. 首先,我们使CentOS系统RPMForge软件库的phpMyAdmin,而不是官方的CentOS 6.2库: 所以需要导入 ...
- 在Django里查询数据库时,如何按照desc倒序返回数据?
按照entry_date从小到大查询数据,可以写成: Content.objects.order_by('entry_date') 从大到小排序: Content.objects.order_by(' ...
- Lowest Bit(hdoj1196)
Lowest Bit Problem Description Given an positive integer A (1 <= A <= 100), output the lowest ...
- Objextive-C几道小题目笔记
//掷骰子题,掷骰子100次,输出每个号出现的次数 void one() { for (int i=1; i<=100; i++) { int a = arc4random() % 6 +1; ...