自动生成 Makefile 尝试

本文记录了使用Autotools工具集(包括autoscan、automake、autoconf等)进行项目配置和构建的过程。从源代码开始,逐步介绍了如何生成configure脚本及Makefile,并解决了在使用过程中的常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  参照 http://www.laruence.com/2009/11/18/1154.html  和 http://blog.youkuaiyun.com/shanshanpt/article/details/17200035 吧。  这两位先生写的很好。

今天只是实践了一下, 具体原理还没完全搞明白。 里面有很多之前没关注的知识点。先把实践心得写下,后续继续弄明白来龙去脉,再回过头来修改补充本文。

首先写一个 源代码 ~, 比如 helloworld.c

而后, 根据教程,我执行了一下 autoscan ,弹提示失败:大概类似如下

Unescaped left brace in regex is deprecated, passed through in regex;
marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/
at /usr/local/bin/automake line 361
而后修改了 文件,去掉了其中的 左括号{。新版的 perl 不支持 左花括号 的使用。
/usr/local/bin/automake 


扫描成功后,得到了一个 configure.scan 文件以及一个 autoscan.log. 不过 这个log 文件是 空的。 这个 configure.scan 就是 后面 autoconf 用到的 configure.ac 的初稿, 其内部自动添加了很多 m4 的宏。

修改 configure.scan 为 configure.ac , 而后修改其中的内容:

AC_PREREQ 这个是 版本号, AC_INIT 这个初始化需填写,版本号自己随意定。 后面的 AC_CONFIG_SRCDIR 以及 AC_CONFIG_HEADERS 这两项都保留。 后i满加上 AM_INIT_AUTOMAKE(helloworld, 2.0)  。 最后修改一下 AC_OUTPUT

而后,执行 aclocal , 处理 configure.ac 

执行 autoheader , 生成头文件 config.h.in 与 configure.ac 里面的 AC_CONFIG_HEADER 一样

执行 autoconf ,生成 configure 可执行文件。

接下来 , 编写 Makefile.am ,而后执行 automake --add-missing 完毕, 生成 Makefile.in


执行 ./configure , 生成 Makefile , 在执行 make 即可



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值