- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
永远的Autotools——GNUBuildSystem简介-LUGUSTC
永远的 Autotools——GNU Build System 简介(一);一点声明;引子:开发一个C语言的项目;引子:开发一个C语言的项目;引子:开发一个C语言的项目;科普:make 工具;引子:开发一个C语言的项目;引子:开发一个C语言的项目;引子:开发一个C语言的项目;引子:开发一个C语言的项目;Autotools 是什么?;Autotools 是什么?;科普:GNU 工具链;Autotools 包括的程序;Autotools 功能举例;最简易使用方法:前提;最简易使用方法:配置文件;理解两类配置文件;理解两类配置文件;理解两类配置文件;理解两类配置文件;一般处理流程;一般处理流程;一般处理流程;最简单操作流程;编写两类配置文件:configure.ac;顾名思义,该文件是一堆宏的集合,需要经过宏处理器(GNU M4)处理展开
展开后是 shell 脚本
M4 很古老,语法很奇怪,间接导致 configure.ac 语法有些难理解
宏的性质导致我们可以在 configure.ac 中直接编写 shell 脚本进行自定义处理
;好消息是,你不需要从头开始手动写;我们有autoscan 这个工具!
在项目根目录运行 autoscan,自动生成 configure.scan,这通常是使用 Autotools 万里长征的第一步
编辑 configure.scan 得到能用的 configure.ac
请看示例
;注意事项:
AM_INIT_AUTOMAKE([]) 宏内使用 foreign 参数可避免 GNU 的严格文件要求
需要在 AC_CONFIG_FILES([]) 宏内填入所有 Makefile.am 所在位置
最后调用 AC_OUTPUT 宏输出结果
有各类宏可以作为参数,请见参考手册
;说明:
顾名思义,它可以用来生成 Makefile
所以可以在里面使用 Makefile 语法
基础的 Makefile.am 语法类似一系列有特定名称的变量的赋值语句;请看示例
超前缀_前缀_名称_后缀 = 值 值 值 值
↑大概类似这样。注意如果值太多,换行需要加反斜杠转义!
;编写说明:
传统做法是在所有有源文件的文件夹内放置一个 Makefile.am 进行递归处理;你可以自行选择是否采纳
如果有子目录,请在 Makefile.am 第一行使用
SUBDIRS = aaa bbb src
进行递归处理
可以使用 AM_CPPFLAGS = -I.. -DAABBCC 向编译器传递参数;请一定添加 -I$(top_srcdir)
可以使用 LDADD = -lrt -lz 添加链接库信息(相当于 -L 参数,区别在于可以配合libtool使用;详情请见 libtool 的使用)
;编写说明(二):
使用 XXXX_PROGRAMS 指定最终需要生成的可执行文件名;使用 可执行文件名_SOURCES 可进一步指定生成可执行文件所需的源文件名。例:
(当前目录有 editor.c common.c test_c.c editor.h)
(当前目录下有 scripts 子目录)
AM_CFLAGS = -I.. -I$(top_srcdir) -I.
LDADD = $(top_srcdir)/lib/libpro.la
bin_PROGRAMS = editor test_c
editor_SOURCES = editor.c common.c
editor_LDADD = -lz
test_c_DEPENDENCIES = test.stamp
test.stamp:
@echo #built on $$(date) $(srcdir)/scripts/test.sh
EXTRA_DISTS = README
noinst_HEADERS = editor.h
;编写说明(三):
使用变量名的“递归”进行处理步骤的说明
变量名中如果有特殊字符,一律用下划线代替
;实战:从零开始;有条件有时间的话,请一定看一遍官方使用手册再来使用;能够少走很多弯路。(见演示文稿后的参考文献)
去找找其它使用 Autotools 的中小型项目的配置文件作参考
遇到问题请使用英文在 Google 搜索
autoconf 的宏与 automake 的前后缀参数很多,功能强大;有需要请查阅资料
;最简单操作流程;最简单操作流程;下期预告;扩展阅读与参考文献;扩展阅读与参考文献;Q A;谢 谢 !
文档评论(0)