今天修改了一下雨量计程序的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的英文手册了。
阅读(2067) | 评论(0) | 转发(0) |