免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1004 | 回复: 0
打印 上一主题 下一主题

修改makefile手记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-27 15:17 |只看该作者 |倒序浏览
今天修改了一下雨量计程序的makefile文件,以前的修改都算不上真正的修改,都是简单的把变量值改动一下,有的时候把语句替换一下等。这次修改的是Makefile的一些流程方面的控制,其中最让我觉得麻烦的是条件语句的使用。
原来的语句如下:
install:
msp430-bsl -c COM4 -r -e -I -p $(TARGET).a43
现在我想改变一下程序的流程,如果MYADDRESS为0X0001,烧录文件1,如果MYADDRESS为0X0002烧录文件2,我使用的是ifeq语句,最后修改为:
install:
ifeq ($(MYADDRESS),0X0002)
  msp430-bsl -c COM4 -r -e -I -p $(TARGET).a43
else
  msp430-bsl -c COM4 -r -e -I -p $(TARGET).a43
endif
需要指出的是,这里面的句子语法格式要求特别严格,不能有改动,比如说多一个空格、TAB键等,下面详细说明一下:
1、上面的语句必须要顶格写,甚至连TAB键的缩进也不行,否则的话根本就执行不了,会出现如下的错误提示:
ifeq (0X0001,0X0002)
/usr/bin/sh: -c: line 1: syntax error near unexpected token `(0X0001,0X0002)'
/usr/bin/sh: -c: line 1: `ifeq (0X0001,0X0002)'
2、语句 ifeq ($(MYADDRESS),0X0002)中,ifeq后面要加一个空格,而后面的($(MYADDRESS),0X0002),其中$(MYADDRESS)表示的是变量,在前面有定义,这个就不多说了,重要的是在($(MYADDRESS),0X0002)中0X0002必须紧挨着',',而不能在0X0002前面加空格。
3、0X0002是要与MYADDRESS相比较的值,必须要小心的是0X0002的大小写格式,必须要与前面变量定义时的值完全相同才会为真,我刚开始的时候就是把X写成了x。
4、makefile本身是大小写敏感的,其中的格式不能随便更改,像@if [ -f $(TARGET).elf ]; then echo; fi,[]后的空格不能修改。
就因为这个,就花了我一个上午的时间,查了N多资料,就差没看GNU Make的英文手册了。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26092/showart_238707.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP