Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117001
  • 博文数量: 73
  • 博客积分: 66
  • 博客等级: 民兵
  • 技术积分: 497
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-22 14:59
文章分类

全部博文(73)

文章存档

2015年(65)

2013年(5)

2012年(3)

我的朋友

分类: LINUX

2015-02-05 10:20:17

makefile 关键字
1. include
    include makefile1.mk ------如果引用不成功,会有警告
查询目录:(1)-I 或--include-dir 指定目录
                (2)/usr/local/bin或/usr/include
    -include makefile.mk  -----不理不能引用的警告
2. ~
    表示当前用户目录,如~/test ---> /home/user/test
3. $?
    所有比目标新癿依赖目标癿集合。以空格分隔。 
4. $<
    依赖目标中癿第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式癿一系列的文件集。注意,其是一个一个取出来的。
5.$^
    所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那会去除重复的依赖目标,只保留一样。 
6. $+
     所有依赖目标的集合,以空格分隔,只是不会去除重复的依赖目标。
7. $@
    表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配亍目标中模式定义的集合。 
8. $%
    仅目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a"。如果目标不是函数库文件(Unix 下是[.a],Windows 下是[.lib])那么,其值为空。 

example1:
CC=gcc
Target=execute
OBJ=main.o fun1.o
$(Targe):$(OBJ)
                $(CC) $(OBJ) -o $(Target)
main.o:main.c
                $(CC) -c main.c
fun1.o:fun1.c fun1.h
                $(CC) -c fun1.c
clean:
                rm -f *.o

example2:静态模式
CC=gcc
OBJ=main.o fun1.o
all:$(OBJ)
            $(CC) -o all $(OBJ)
$(OBJ):%.o:%.c                #--->main.o:main.c               fun1.o:fun1.c
            $(CC) -c $< -o $@ #               $(CC) -c main.c                $(CC) -c fun1.c
clean:
            rm -f *.o
Makefile教程-经典.pdf
阅读(591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~