导言
以前经常用Makefile
,但是仅是用而已,没有从头折腾过,所以,谈不上很深的理解。
最近针对一些场景做了一些实践,对于Makefile
中经常遇到的各种变量类型,和目标依赖关系,以及与make
并行编译的关系,谈点自己的后知后觉 😃
变量类型
按照较为顺畅的逻辑,从变量存在的开头到结尾,介绍Makefile
中的几种变量类型,以及它们的一些典型的使用场景。
- 环境变量
- 内置变量
CC
、CXX
编译程序变量等- 编译选项变量
CFLAGS
、链接选项变量LDFLAGS
等- 建议使用此内置变量,以利于可读性和规范性
- 入参变量
可以作为某些特性是否开启的定制,例如,是否生成DEBUG版本,
- export共享变量
可以传递给
make
子过程,包含其它组件进行集成编译
- 立即变量
var := somevalue
适合记录某个恒定值,例如,编译开始时间等
- 延迟变量