makefile 学习

 

1.   $?  表示依赖文件中被修改过的文件
2.   objects = $(wildcar *.o)  这个表示统配所有.o文件 ; 而 objects = *.o 表示字符串".o"
3.   objects := $(patsubst %.c,%.o,$(wildcard *.c))  找目录下所有.c文件对应的.o文件作为目标文件
4.   定义变量“VPATH”时,使用空格或者冒号(:)将多个需要搜索的目录分开
5.   vpath %.h ../headers
      其含义是:Makefile中出现的.h文件;如果不能在当前目录下找到,则到目录“../headers”下寻找。注意:这里指定的路径仅限于在Makefile    文件内容中出现的.h文件。 并不能指定源文件中包含的头文件所在的路径(在.c源文件中所包含的头文件路径需要使用gcc的“-I”选项来指定,可参考gcc的info文档)
6.   libtest.a : sum.o memcp.o
              $(AR) $(ARFLAGS) $@ $^
7.   “$^"代表所有通过目录搜索得到的依赖文件的完整路径名
8.   “$@"代表规则的目标
9.   VPATH = src:../headers
      foo.o : foo.c defs.h hack.h
      cc -c $(CFLAGS) $< -o $@
自动化变量“$<”代表规则中通过目录搜索得到的依赖文件列表的第一个依赖文件。
 
10. 编译时 -lNAME  会使得先查询“libNAME.so”, 如果没有找到,那么make将会按照以上的搜索顺序查找名字为“libNAME.a”的文件
11. 默认情况时,“.LIBPATTERNS”的值为:“lib%.so lib%.a”。这也是默认情况下在规则存在“-lNAME”格式的依赖时,链接生成目标时使用“libNAME.so”和“libNAME.a”的原因。
12. .PHONY: cleanall cleanobj cleandiff      伪目标

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值