makefile知识小结

作为今天的学习记录:
  1. makefile是具备自己的环境变量,当然还有很多类型的变量,比方说,自定义和预定义变量。这里不得不说的是环境变量,在编写makefile的时候,我们总是想着:就一个makefile,然后可以用尽所有工程(这跟我们写移植性代码非常强的问题一样)。那么就需要清晰地考虑makefile的环境变量了。
    1. make进行递归调用(此时,有各种的subdir子目录),为了让subdir可以正确且按照我们的意愿去make(这里特指编译)。我们需要将maindir顶层目录的环境变量,通过各种方式(目前知道:makefile自带的具备环境变量属性的变量;或者通过export来传递变量属性,使得subdir获得maindir已经成功设置的环境变量)
  2. 多个目标(特指“终极目标”),像一个开源软件,总是会有各种test文档,这样附带了test_program,我们需要同时生成多个执行文件,这样求我们编写具备生成多个目标的makefile文件。
    1. 首先,可以直接使用makefile的伪目标,这样最简单。通过,make XX来决定

解决疑问:
  1. Makefile 中:= ?= += =的区别?解答链接
  2. makefile中,在规则的命令中使用-号,为了忽略错误继续执行,那么如果+号呢?点击链接
  3. 通用makefile文章里面,使用makefile.build时候,出现了.d格式文件,点击链接解析.d文件(依赖文件,给makefile使用)
.d dependencies
依赖文件。
是给Makefile用的。内容和Makefile的target相似:
假设hello.c里有
#include "hello.h"

hello.h里有
#include "foo.h"
#include "bar.h"

gcc -c -MMD hello.c就会产生hello.d

hello.o: hello.c hello.h foo.h bar.h

在Makefile里用-include 进来后
即使hello.c没有修改,即使hello.c没有直接include foo.h bar.h 只要hello.h foo.h bar.h中的任意一个修改都会重新编译hello.c
  1. 所谓的归档(使用gcc ar的时候),这意味着创建静态库,为了使多个.o合并在一起
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值