10. env
ubuntu=1804
GNU Make 4.1
20. 简述
百度百科
https://baike.baidu.com/item/Makefile/4619787?fr=ge_ala
makefile 文件的格式:
目标:依赖
命令
软件编译的流程概述:
编译:编译源代码(包括预编译等等步骤)
链接:将编译后的代码链接到一起
PS:
makefile的管理规则是如果形成目标文件的各类依赖中存在更新(修改日期大更新),则根据依赖关系编译/链接相关文件。
假设形成一个test的可执行文件需要main.c的源码,如果main.c被修改,则日期会同步更新,那么test会从编译源码开始重新执行,如果main.c未被修改,则日期并不会比当前test中使用的源码更新,所以不需要重新生成test。
常用的自动化变量
$@ : 目标的完整名称
$< : 第一个依赖文件
$^ : 所有依赖文件
30. 实例
# 指定编译器,c编译器默认为cc
CC := gcc
# 通过源文件的名称得到所有依赖的文件名称
src := $(shell ls *.c)
objs := $(patsubst %.c,%.o,$(src))
# make会生成第一个碰到的target
.PHONY : all
all : test
# 这里为什么不直接使用test:xxx,二需要通过all转一下?
# 自己试一下就知道了,不转会导致cmd(即编译.o)默认执行,这会导致反复生成.o文件
# 生成的目标问价及其依赖,最终的目标需要多种.o依赖。
# $^ 表示所有依赖文件,每个依赖文件以空格隔开
test : $(objs)
$(CC) -o $@ $^
# 目标文件需要的.o文件需要依赖.c文件。
# 由于生成.o文件的命令格式是一样的,故可以使用如下格式同一执行。
%.o : %.c
$(CC) -o $@ -c $<
# -o 指定生成的文件名,-c 只编译不连接
# $@ 指目标文件的名称,即main.o等
# $< 指目标文件需要的依赖,即生成mian.o需要的main.c文件
.PHONY : clean
clean:
rm -f $(objs) test
PS:文章来源:https://www.toymoban.com/news/detail-667035.html
- .PHONY:目标文件,指的是不生成实体文件,即“伪目标”,新版make中可写可不写
- 上述实例未体现预编译、头文件等管理
90. 附件下载
https://download.csdn.net/download/yujianliam/88228850文章来源地址https://www.toymoban.com/news/detail-667035.html
到了这里,关于【makefile】自动化变量的简述及实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!