Makefile工程实践视频课程(第2季):使用Autotools自动生成Makefile-王利涛-专题视频课程...

Makefile工程实践视频课程(第2季):使用Autotools自动生成Makefile—3562人已学习
课程介绍    
201701191116554895.jpg
    手写makefile太难了!浪费时间不说,还容易出问题!本门课程通过Autotools三剑客:automake、autoconf、libtool的使用,介绍如何使用这些工具去自动生成一个项目的Makefile:包括flat、shallow、deep等各种项目目录结构。通过掌握makefile.am变量语法以及autoconf宏的配置使用,让您能够熟练掌握去生成、维护一个项目Makefile。
课程收益
    (1)学会使用Automake、Autoconf、libtool工具自动生成各种目录架构项目的Makefile。
    (2)学会使用autotools工具配置生成静态库、动态库、使用第三方静态库、动态库。
    (3)掌握项目软件包的打包、测试、发布,掌握Makefile级项目的维护能力。
讲师介绍
    王利涛 更多讲师课程
    6年嵌入式开发经验,在多家半导体公司从事芯片测试、验证、Linux驱动开发都工作。熟悉芯片设计流程、熟悉产品平台方案开发流程。
课程大纲
    1. 什么是Autotools、Automake、Autoconf和Libtool?  34:37
    2. Autotools发展史  26:32
    3. 使用变量、宏生成flat目录结构项目的Makefile  28:00
    4. shallow目录结构的Makefile  20:23
    5. 头文件管理、路径指定以及头文件对依赖关系的影响  38:13
    6. 构建目标文件  13:14
    7. 使用libtool构建动态链接库  34:15
    8. 使用第三方静态库、动态共享库  16:03
    9. deep目录结构的Makefile、库的多目录构建  20:03
    10. 软件打包、测试与发布  15:44
大家可以点击【 查看详情】查看我的课程
参与评论 您还未登录,请先 登录 后发表或查看评论
七、静态模式 静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先来看一下语法: ;: ;: ; ; ... targets定义了一系列的目标文件,可以有通配符。是目标的一个集合。 target-parrtern是指明了targets的模式,也就是的目标集模式。 prereq-parrterns是目标的依赖模式,它对target-parrtern形成的模式再进行一次依赖目标的定义。 这样描述这三个东西,可能还是没有说清楚,还是举个例子来说明一下吧。如果我们的;定义成“%.o”,意 思是我们的;集合中都是以“.o”结尾的,而如果我们的;定义成“%. c”,意思是对;所形成的目标集进行二次定义,其计算方法是,取;模式中的“%”(也就是去掉了[.o]这个结尾),并为其加上[.c]这个结尾,形成的新集合。 所以,我们的“目标模式”或是“依赖模式”中都应该有“%”这个字符,如果你的文件名中有“%”那么你可以使用反斜杠“\”进行转义,来标明真实的“%”字符。 看一个例子: objects = foo.o bar.o all: $(objects) $(objects): %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ 上面的例子中,指明了我们的目标从$object中获取,“%.o”表明要所有以“.o”结尾的目标,也就是“foo.o bar.o”,也就是变量$object集合的模式,而依赖模式“%.c”则取模式“%.o”的“%”,也就是“foo bar”,并为其加下“.c”的后缀,于是,我们的依赖目标就是“foo.c bar.c”。而命令中的“$<”和“$@”则是自动化变量,“$<”表示所有的依赖目标集(也就是“foo.c bar.c”),“$@”表示目标集(也就是“foo.o bar.o”)。于是,上面的规则展开后等价于下面的规则: foo.o : foo.c $(CC) -c $(CFLAGS) foo.c -o foo.o bar.o : bar.c $(CC) -c $(CFLAGS) bar.c -o bar.o 试想,如果我们的“%.o”有几百个,那种我们只要用这种很简单的“静态模式规则”就可以写完一堆规则,实在是太有效率了。“静态模式规则”的用法很灵活,如果用得好,那会一个很强大的功能。再看一个例子: files = foo.elc bar.o lose.o $(filter %.o,$(files)): %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ $(filter %.elc,$(files)): %.elc: %.el emacs -f batch-byte-compile $< $(filter %.o,$(files))表示调用Makefile的filter函数,过滤“$filter”集,只要其中模式为“%.o”的内容。其的它内容,我就不用多说了吧。这个例字展示了Makefile中更大的弹性。 八、自动生成依赖性 在Makefile中,我们的依赖关系可能会需要包含一系列的头文件,比如,如果我们的main.c中有一句“#include "defs.h"”,那么我们的依赖关系应该是: main.o : main.c defs.h

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

宅学部落-王利涛

just for test

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值