• AutoConf自动生成Makefile(基于helloworld简单例子)


    新建一个简单的helloworld工程文件夹,目录结构如下

    hello.h代码:

    #include<stdio.h>
    void fprint()
    {
        printf("hello world!
    ");
    }

    hello.c代码:

    #include“hello.h”
    int main()
    {
        fprint();
        return 0;
    }

    利用AutoConf工具套件来自动生成Makefile

    1. 进入helloworld/目录,运行autoscan

    生成autoscan.log和configure.scan文件

    2. 修改configure.scan为configure.in,并在其中添加如下语句

    11行:  M_INIT_AUTOMAKE(hello,1.0.0)

    21行:  AC_OUTPUT(Makefile)

    3. 新建文件 NEWS README ChangeLog AUTHORS

    NEWS: 用来记录package对用户可见的修改,最新的修改信息在top顶端,格式不固定

    README: 对package的总体介绍

    ChangeLog: 重要的文件,有固定格式,记录package的改动

    AUTHORS: package贡献的作者,联系方式

     4. 运行aclocal命令,产生文件aclocal.m4以及文件夹autom4te.cache/

    5. 运行autoheader,生成config.h.in文件

    6. 运行autoconf命令,生成configure二进制命令

    7. 新建Makefile.am文件,并在其中添加

    bin_PROGRAMS = hello

    hello_SOURCES = hello.c hello.h

    8. 运行automake -a 命令,生成Makefile.in文件

    9. 运行./configure,生成Makefile

    学习记录:

    如果源文件改动后,需要重新生成configure、Makefile、可执行文件命令

    方法一: 利用autoreconf命令,重新生成configure二进制文件;但不推荐此方法,因为autoreconf命令中并处理automake命令的--add-missing参数。(例子略)

    方法二: 利用AM_MAINTAINER_MODE,打开configure文件的maintainer mode模式,新建bootstrap脚本

     (1)在configure.in中添加:AM_MAINTAINER_MODE (这一步好像无关紧要,因为我没有做,最后也重新生成了)

     (2)新建bootstrap.sh文件,代码如下图,并赋予可执行权限:chmod u+x bootstrap.sh

    每当改变源代码后,./bootstrap.sh即可更新全部文件,生成新的可执行命令

    网上有两篇博客很好的解释了这个过程:

    http://www.cnblogs.com/iTsihang/archive/2012/12/01/2797011.html

    http://blog.csdn.net/fuli1215/article/details/6399175

     

    后面,再来分析大型工程项目以及交叉编译的项目 自动生成Makefile的过程。

    自我寄语:保持每天学一点,进步一点,只有学习进步才能让无助的自己变得更好更强大!

  • 相关阅读:
    event与WaitForSingleObject、MsgWaitForMultipleObjects等
    vc不包含MFC就不打印内存泄露?
    使用visual leak detector(vld)查找内存泄露
    C#里面中将字符串转为变量名
    如何编写nopCommerce插件
    object成员,不见了!
    NopCommerce 定制系列(一):增加 Sha256+Base64 加密
    c#中的二维数组与锯齿数组
    待搞清楚
    NopCommerce 2.5的部署
  • 原文地址:https://www.cnblogs.com/jrglinux/p/6964169.html
Copyright © 2020-2023  润新知