makefile 的一些常识

$? :比目标的修改时间更晚的那些依赖模块表。
$@ :当前目标的全路径名。可用于用户定义的目标名的相关行中。
$< :比给定的目标文件时间标记更新的依赖文件名。
$* :去掉后缀的当前目标名。例如,若当前目标是pro.o,则$*表示pro。

 

make默认寻找叫makefile或Makefile的文件,自己指定的话用 make -f 文件名

"#": 注释符

命令行首的"@":取消本行命令回显

 

1.规则的基本格式:

目标:依赖

[tab]命令       <---------- 命令开头要一个[tab]键

例0:

hello:main.o func1.o func2.o 

    gcc main.o func1.o func2.o  -o hello

上面这两行叫一个规则

 

2.伪目标(phony taeget): 没有任何依赖,只有执行动作的目标

用".PHONY"显式指明伪目标

.PHONY: clean

clean:

    rm -f *.o

可以使用这一特性实现rebuild all

 

3.变量:   (便于修改)

obj=main.o func1.o func2.o 

hello:$(obj)

    gcc $(obj) -o hello

系统默认变量:

$^    代表所有依赖文件

$@  代表目标

$<    代表第一个依赖文件

例0改写如下:

hello:main.o func1.o func2.o
    gcc $^ -o $@

4.模式规则

用"%"做通配符

"s%.c"表示所有以s开头,以.c结尾的文件

:

%.o: %.c

    commands

本例指出了如何所有.c生成相应.o的规则

如果模式规则后不屑任何命令,就取消了这一模式规则的定义

posted on 2013-07-17 11:07  Harveyaot  阅读(190)  评论(0编辑  收藏  举报

导航