Makefile知识整理

来源:互联网 发布:矩阵结合律 编辑:程序博客网 时间:2024/06/08 09:24

Makefile内容总共分为5类,外加一些零散的知识,本章不包含自动依赖,自动依赖将在单独的文章中说明

1,显示规则

目标: 依赖
[TAB]命令

2,隐晦规则

%.o : %.c
[TAB]$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

把所有的[.c]文件都编译成[.o]文件.

 

作为模式规则的目标。不会被当做最终目标。

3,变量定义

  变量定义

                   x=.........用等号定义一个变量

                   x:=.......用:=定义一个变量,好处是这种方法不能利用后定义的变量

                   x?=......如果x被定义过,这条语句什么也不做,如果没被定义则定义x 变量取值 $(x) 得到x的值

 

                   x = y
                   y = z
                   a := $($(x))

                   结果

                   a=z

    模式变量

          %.o : CFLAGS = -O 给所有.o文件加上模式-o

 

4,文件指示

5,注释

6,其他

6.1 指定Makefile文件 make -f MyMakefile

6.2 指定搜索路径 vpath <pattern> <directories> 如vpath %.h ../headers,指定.h文件到../headers目录中寻找

      可以连续指定,搜索顺序和指定顺序相同,如

      vpath %.c foo
      vpath % blish
      vpath %.c bar

6.3伪目标 .PHONY:xxxx声明一个xxxx的伪目标

6.4静态模式

<targets ...>: <target-pattern>: <prereq-patterns ...>
<commands>

<target>集合中都是以“.o”结尾的,而如果我们的<prereq-parrterns>定义成“%.c”,意思是对<target-parrtern>所形成的目标集进行二次定义,其计算方法是,取<target-parrtern>模式中的“%”(也就是去掉了[.o]这个结尾),并为其加上[.c]这个结尾,形成的新集合。

如 foo.o bar.o:%.o: %.c

            $(CC) -c $(CFLAGS) $< -o $@

 

------------------------------------

参考 陈皓 跟我一起写Makefile

       http://blog.chinaunix.net/u1/35065/showart_2311800.html makefile学习