资料
一个完整项目的编译流程流程
编译环境构建,输入的文件
autogen.sh
#!/bin/sh
autoreconf --install
在如下流程中:
- 在以上流程中configure.ac因为直接作为输入,所以不需要autoscan的流程
- 其他的流程会一次被autoreconf —install所触发
configure.ac
在configure.ac中完成一系列编译环境的构建及确认
- 基本设置:版本 编译语言 帮助脚本构建目录
- automake相关
- 基本的全局编译参数定义
- 静默模式关闭
- libtool相关
- lib库的一些编译属性的设置
- 编译环境构建
- m4宏的引入
- AX_XXX autoconf自己的编译宏引入方式
- pkg conf的宏
- _CFLAGS _LIBS
- 通过m4文件安装引入相关的宏定义
- _CFLAGS _LIBS
- 一些宏的代码引入
- AC_CONFIG_HEADERS([config.h])
- 编译目录中autoconf输出的makefile文件目录给定
【 总结 】AC_CONFIG_FILES(
Makefile
libyangmodelsdk/Makefile
yang/Makefile
)
configure.ac 通过宏讲编译需要的一些库引入编译环境中,Nakefile.am是给予这些宏完成编译选项定制及依赖的Makefile.am
通过前面所注入的一些列宏,构建属于自己所需要的编译变量
- 将编译变量挂在在automake的编译框架中
- 编译框架的构建
- lib库的编译框架
- 可执行文件的编译框架
- 配置文件
- 脚本
- 自己定制
【 总结 】
- Makefile 是直接驱动编译器完成编译工作的,所有的宏是之前configure.ac中根据实际需求完成定制的,./configure 过程中Makefile.am被转化成Makefile。
- Makefile.am中通过一些宏的导引,跟automake的框架完成交互,最终有构建出可以满足要求的makefile