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.inman/Makefile.in 生成相应的 Makefile 文件。

工作原理

  1. configure 脚本会查找 .in 文件作为模板
  2. 替换模板中的变量(如 @VARIABLE@)为实际值
  3. 生成最终输出文件

高级用法

带命令的配置

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

注意事项

  1. 模板文件通常以 .in 为后缀
  2. 替换的变量形式为 @VARIABLE_NAME@
  3. 通常在 configure.ac 文件的末尾调用此宏
  4. AC_OUTPUT 宏有相似功能(AC_OUTPUTAC_CONFIG_FILES 的旧版本)

与 AC_OUTPUT 的关系

在现代 Autoconf 中,AC_CONFIG_FILES 是推荐使用的宏,而 AC_OUTPUT 是其前身。两者功能相似,但 AC_CONFIG_FILES 提供了更灵活的接口。

AC_CONFIG_FILES 通常与 AC_CONFIG_HEADERS (用于生成头文件) 和 AC_CONFIG_LINKS (用于创建符号链接) 一起使用。