ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自动生成依赖关系(中)

2021-10-23 22:02:51  阅读:116  来源: 互联网

标签:echo 文件 依赖 dep 生成 自动 test txt include


自动生成依赖关系(中)

1.makefile中的include关键字

  • 类似C语言中的include
  • 将其他文件的内容原封不动的搬入当前文件

Slide02

2.make对include关键字的处理方式

  • 在当前目录搜索或指定目录搜索目标文件
    • 搜索成功:将文件内容搬入当前makefile中
    • 搜索失败:产生警告
      • 以文件名作为目标查找并执行对应规则
      • 当文件名对应的规则不存在时,最终产生错误

3.下面代码如何执行?

.PHONY : all

include test.txt

all :
	@echo "this is $@"

test.txt :
	@echo "test.txt"
	@touch test.txt

4.makefile中命令的执行机制

  • 规则中的每个命令默认是在一个新的进程中执行(shell)
  • 可以通过接续符(;)将多个命令组合成一个命令
  • 组合的命令依次在同一个进程中被执行
  • set -e 指定发生错误后立即退出执行

5.下面的代码想实现功能?有没有问题?


.PHONY : all

all :
	set -e; \
	mkdir test; \
	cd test; \
	mkdir subtest


6.解决方案的初步思路

  • 通过gcc -MM和sed得到.dep依赖文件(目标的部分依赖)
    • 技术点:规则中命令的连续执行
  • 通过include指令包含所有的.dep依赖文件
    • 技术点:当.dep依赖文件不存在时,使用规则自动生成

.PHONY : all clean

CC := gcc
MKDIR := mkdir
RM := rm -rf

SRCS := $(wildcard *.c)
DEPS := $(SRCS:.c=.dep)

-include $(DEPS)

all :
	@echo "all"

%.dep : %.c
	@echo "Creat $@ ..."
	@set -e; \
	$(CC) -MM -E $^ | sed 's,\(.*\)\.o[ :]*,objs/\1.o : ,g' > $@

clean :
	$(RM) $(DEPS)

	

标签:echo,文件,依赖,dep,生成,自动,test,txt,include
来源: https://blog.csdn.net/LangLang_2020/article/details/120927010

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有