Makefile总结(中)

来源:互联网 发布:仿淘宝手机商城模板 编辑:程序博客网 时间:2024/05/17 02:45

Part 6

1.显示命令

linux命令echo:  作用是在显示器上回显一段文字

makefile,make命令会把要执行的command在执行前输出到屏幕上,如果我们用‘@’字符在命令行之前,这个命令将不被make显示出来。

如果make执行时,带入make参数“-n”或“--just-print,那么它就只显示命令,但却不会执行命令。

2.命令执行

make会一条一条地执行命令。

如果要让上一条命令的结果应用到下一条命令,应该使用分号分隔这两条命令。

3.命令出错

为了忽略命令的出错,有三种方法

-’不管命令出错与否都认为运行成功

-i’忽略所有的错误

-k’如果某个命令出错,就终止执行该命令,但是继续执行其它规则。

4.嵌套执行make

l 大的工程每个目录中都有一个该目录的Makefile

    总控Makefile写法:

                subsystem:

                    cd subdir && $(MAKE)

 

l 总控Makefile变量可以传递到下级的Makefile中,需要主控中声明:

                export < variable ... >

如果要传递所有的变量,只要一个export就够了,后面不用跟参数。

5.定义命令包????

  define <....>

  <...............>

  endef

 

Part 7  变量的使用

变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#”、“=”或是空字符(空格、回车等)。变量是大小写敏感的。

1.变量的基础

变量在声明的时候需要声明,在使用的时候需要以格式$(...)的格式。

2.变量的变量

使用其他变量的值来构造变量

方法一:用  =   可以使用后面出现的变量来定义

方法二:用 :=   只能使用前面已经定义好的变量来进行定义

方法三:用 ?=   例子:

                FOO ?= bar 

其含义是,如果FOO没有被定义过,那么变量FOO的值就是“bar”,如果FOO先前被定义过,那么这条语将什么也不做

3.变量的高级用法

用法一:变量共有值的替换,例子:

             foo := a.o b.o c.o

               bar := $(foo:.o=.c) 

          输出的结果为a.c b.c c.c

用法二:变量的值可以继续当做变量

$(x)的使用  $(x)含义为取变量x的值,但是该值可以继续作为变量

同时可以应用于操作符的左边

4.追加变量值

可以使用 += 给变量追加值

objects = main.o foo.o bar.o utils.o

objects += another.o

追加时会继承前次操作的赋值符,继承 = 时,不会出现递归的问题,make会自动解决。

5.override指示符?????

6.多行变量

利用define可以定义多行变量,以endef结束

7.环境变量??????

8.目标变量

作为一种局部变量,其作用域为 由这个目标所引发的所有的规则

格式:    目标:变量 = ...

            prog : CFLAGS = -g

9.模式变量

在目标变量的基础上,目标可以指定为某种模式    %.o: CFGLA = 0

 

 

 

Part 8 条件判断

1.实例

2.语法:

<conditional-directive>

         <text-if-true>

         else

         <text-if-false>

         endif

  条件关键字: ifeq  ifneq

ifeq (<arg1>, <arg2>)

ifeq '<arg1>' '<arg2>'

ifeq "<arg1>" "<arg2>"

ifeq "<arg1>" '<arg2>'

ifeq '<arg1>' "<arg2>"

          

         ifdef  ifndef

ifdef<variable-name>

注意:条件表达式并不是命令,所以不用加Tab 

 

Part 9  使用函数

1.函数的调用语法

函数的作用是用来处理变量,返回值也为变量

格式  $(<function> <arguments>)  函数名与参数之间用空格分开

2.字符串处理函数

  subst  字符串替换函数

         格式   $(subst <from>,<to>,<text>)

         作用   将text中的<from>字符串替换为<to>字符串

         返回   被替换后的字符串

  sort   排序函数(为list中多个单词排序)

         格式   $(sort <list>)

         作用   给list升序

         返回   排序后的字符串

         注意   sort会删除list中相同的单词

3.文件名操作函数

4.foreach函数

  循环函数

  格式  $(foreach <var>,<list>,<text>)

  作用  把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行

        <text>所包含的表达式

  返回  <text>所返回的每个字符串所组成的整个字符串(以空格分隔)将会是foreach

    函数的返回值

5.if函数

6.call函数

7.origin函数

8.shell函数

9.控制make函数

0 0
原创粉丝点击