手动再将 configure.scan 文件重命名为 configure.in 文件:
mv configure.scan configure.in
我们在上一步生成的 configure.in 文件内容为:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
在 autoscan 生成的 configure.scan 文件中,AC_ 前缀是 Autoconf 宏(Autoconf Macros)的标准命名约定,具有特定含义:
- AC_ 前缀的含义
Autoconf 宏:AC_ 开头的宏是 Autoconf 提供的内置宏,用于检测系统特性、设置编译环境或生成配置脚本。
例如:AC_PROG_CC(检查 C 编译器)、AC_CHECK_HEADERS(检查头文件)等。
标准化:AC_ 前缀是 Autoconf 的保留命名空间,避免与用户自定义宏冲突。- 其他常见前缀
AM_:Automake 宏(用于 Makefile 规则,如 AM_INIT_AUTOMAKE)。
AX_:Autoconf 扩展宏(来自第三方工具或用户自定义宏)。
LT_:Libtool 宏(用于库编译,如 LT_INIT)。- 为什么需要这些前缀?
明确来源:通过前缀区分宏的来源(Autoconf/Automake/自定义)。
避免冲突:防止用户定义的宏与内置宏重名。
维护兼容性:确保不同版本的 Autoconf 行为一致。
为了方便说明,下面我用 vi 打开该文件,并通过 :set number 命令显示了行号,在需要修改的位置使用红色先进行了标记:
针对上面红色标记的位置进行修改:
- 第5行红线上面的内容修改为测试文件名 main.c ,也就是自己的源文件名;
AC_INIT(main.c)
- 在第5行和第6行之间插入:
//源文件名, 该源文件的版本号 AM_INIT_AUTOMAKE(main.c, 1.0)
- 注释掉原来红色标记的第6行和第7行;
- 在第20行指定输出的文件名: Makefile
AC_OUTPUT(Makefile)
修改之后的内容如下:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT(main.c)
AM_INIT_AUTOMAKE(main.c, 1.0)
#AC_CONFIG_SRCDIR([main.c])
#AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)