AC_CONFIG_FILES 宏详解
AC_CONFIG_FILES
是 GNU Autoconf 工具中的一个重要宏,用于指定在配置过程中需要由configure生成的文件。AC_CONFIG_FILES
是 Autoconf 自动化构建系统的核心部分之一。
基本用法
AC_CONFIG_FILES([file...], [commands], [init-cmds])
- file…: 要生成的文件列表,通常以
.in
结尾的文件为模板 - commands (可选): 生成文件后要执行的额外命令
- init-cmds (可选): 初始化命令,在生成文件前执行
典型示例
AC_CONFIG_FILES([Makefile src/Makefile man/Makefile])
这表示 configure 脚本将从 Makefile.in
, src/Makefile.in
和 man/Makefile.in
生成相应的 Makefile 文件。
工作原理
- configure 脚本会查找
.in
文件作为模板 - 替换模板中的变量(如
@VARIABLE@
)为实际值 - 生成最终输出文件
高级用法
带命令的配置
AC_CONFIG_FILES([config.h], [chmod +w config.h])
这会在生成 config.h 后使其可写。
多文件配置
AC_CONFIG_FILES([
Makefile
src/Makefile
include/config.h
])
条件生成文件
if test "$enable_foo" = yes; then
AC_CONFIG_FILES([foo/Makefile])
fi
注意事项
- 模板文件通常以
.in
为后缀 - 替换的变量形式为
@VARIABLE_NAME@
- 通常在
configure.ac
文件的末尾调用此宏 - 与
AC_OUTPUT
宏有相似功能(AC_OUTPUT
是AC_CONFIG_FILES
的旧版本)
与 AC_OUTPUT 的关系
在现代 Autoconf 中,AC_CONFIG_FILES
是推荐使用的宏,而 AC_OUTPUT
是其前身。两者功能相似,但 AC_CONFIG_FILES
提供了更灵活的接口。
AC_CONFIG_FILES
通常与 AC_CONFIG_HEADERS
(用于生成头文件) 和 AC_CONFIG_LINKS
(用于创建符号链接) 一起使用。