在 Autoconf 的发展过程中,关于 configure.in 和 configure.ac配置文件的命名确实经历了变化,以下是详细解释:
文件名的历史演变
(1) configure.in(旧版命名)
- 早期 Autoconf(1990年代至2000年代初)默认使用 configure.in 作为配置输入文件。
- 问题:.in 后缀易与其他模板文件(如 Makefile.in)混淆,且不符合现代习惯。
(2) configure.ac(现代命名)
- Autoconf 2.50+(2001年后)推荐使用 configure.ac,原因:
清晰性:.ac 明确表示是 Autoconf 的配置文件。
避免冲突:与 Automake 的 .am 文件命名风格一致(如 Makefile.am)。 - 现状:官方文档和现代项目普遍使用 configure.ac。
为什么网上仍有 configure.in 的讨论?
- 遗留项目:旧代码或教程可能沿用历史命名。
- 兼容性:Autoconf 仍支持 configure.in,但会输出警告:
误导性资料:部分未更新的网络资源可能未提及命名变更。$ autoreconf configure.in: warning: prefer named directories: --datarootdir
如何选择文件名?
场景 | 推荐文件名 | 注意事项 |
---|---|---|
新项目 | configure.ac | 符合现代 Autoconf 标准 |
维护旧项目 | configure.in | 无需强制重命名,但建议更新 |
混合构建系统 | configure.ac | 与 Automake/Libtool 更好兼容 |
文件生成与重命名流程
生成模板:
autoscan # 生成 configure.scan
重命名(二选一):
mv configure.scan configure.ac # 推荐
# 或
mv configure.scan configure.in # 兼容旧版
编辑文件:
根据需求修改宏(如添加 AC_INIT, AC_CONFIG_FILES 等)。
官方建议
Autoconf 手册 明确推荐 configure.ac:
_"The preferred name is configure.ac; configure.in is accepted for backward compatibility."_
警告提示:若使用 configure.in,运行 autoreconf 时会提示:
warning: prefer 'configure.ac' over 'configure.in'
总结
现代实践:始终使用 configure.ac,除非维护遗留代码。
历史背景:configure.in 是旧时代的产物,但工具链仍支持。
工具兼容性:autoconf、automake、libtool 均优先处理 configure.ac。
若你从零开始项目,直接采用 configure.ac 即可避免兼容性问题。