Makefile基本用法

来源:互联网 发布:网络营业执照 淘宝 编辑:程序博客网 时间:2024/05/12 06:43

TARGET:Dependency file

                  COMMOND

TARGET:Dependency file

                  COMMOND

TARGET:Dependency file

                  COMMOND

其中:COMMOND必须以【TAB】字符作为本行的开头!

                  例如:

                            file1:file1.o file2.o

                                      gcc fie1.o file2.o -o  file1

                            file1.o:fie1.c head1.h

                                      gcc -Wall -O -g -c file1.c -o file1.o

                             file2:file2.c head2.h

                                      gcc -Wall -O -g -c file2.c -o file2.o

                              clean:

                                        rm file1.o file2.o

                       注:像clean这种没有第一个目标文件的直接或间接关联,那么它后面的命令不会被自动执行。可以“make clean”来执行




变量的定义与赋值:

        1.递归展开定义:可以引用其之前没有定义的变量,也就是其引用的变量在其之后定义。会造成无穷循环。

                   格式如下:

                   Var:variable

          2.直接展开定义:变量值对另外变量的引用在定义时被展开。同时不能对其后定义的变量进行引用。

         4.替换引用定义:

             例如:

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

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

                       bar的值就为“a.c b.c c.c ”

         常用的自动变量:

                        $@:表示当前规则中的问正目标文件

                        $<:表示当前规则中第一个依赖文件名

                        $^:当前规则中的所有文件列表 

                         例如:

                                   exc=varibale1.o  variable2.o  variable3.o

                                   obj1= variable1.c head1.h

                                   obj2=variable2.c  head2.h

                                   obj3=variable3.c

                                   CC=gcc

                                   CFLAGS= -Wall -O -g -c

                                   Target:$(exc)

                                                $(CC) $^ -o $@

                                   variable1.o:$(obj1)

                                                $(CC) $(CFLAGS) $< $@

                                   variable2.o:$(obj2)

                                                 $(CC) $(CFLAGS) $< $@

                                   variable3.o : $(obj3)

                                                 $(CC) $(CFLAGS) $< $@

         环境变量:区分系统环境变量和make的环境变量

                             VPATH

        Makefile常用函数:

                            $(patsubst A,B,text) :此函数时将文本“text”中符合格式为“A”的字符,用格式“B”替代。参数“A”经常使用模式通配符%来代表一个单词里的若干字符。

                                                                 次函数经常用于文件后缀名的转化。例如:$(patsubst,%.c,%.o,$(var))

                            $(word N,text):此函数的作用是将“text”中的第N个单词取出,并返回这个单词。

       Makefile与shell:如果函数返回结果中存在换行符,那么将其替换为空格,并去掉末尾的回车符号。

                                      例:Var1=$(shell pwd)

       Makefilede 语法:显示规则、隐式规则、静态模式规则。

       Makefile自动编写工具

                                     

                                   





0 0