参照 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 即可