初学AutoMake

这个东西的战略意义大于实际意义,嗯,还是从一个简单的例子开始作介绍,从写一个自己的HelloWorld程序开始:

  1. 查看自己的automake有木有安装,aclocal --version; autoconf --version; automake --version,没有的话,装一个
  2. 新建一个文件夹test,在该文件夹下写一个hello world的程序
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout<<"hello world"<<endl;                                                                                                               
        return 0;
    }
    
    保存为helloWorld.cpp
  3. 执行autoscan,生成一个configure.scan的文件
    文件的内容如下:
    #                                               -*- 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([helloWorld.cpp])
    AC_CONFIG_HEADERS([config.h])
    
    # Checks for programs.
    AC_PROG_CXX
    
    # Checks for libraries.
    
    # Checks for header files.
    
    # Checks for typedefs, structures, and compiler characteristics.
    
    # Checks for library functions.
    
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT

    现在修改这个文件,简单说说这个文件的前几行:第一行表示autoconf的版本必须达到2.69,第二行需要自己修改一下,第一个参数填写自己想要生成的软件包的名字,这里可以叫做HELLO,第二个参数填写你的软件包的版本,这里填写为1.0,最后一个参数是如果别人使用你的软件,发现bug的报告地址,填上自己的邮箱即可,例如:
    AC_INIT([HELLO], [1.0], [yaolu1103@gmail.com]) 
    第三行是代码文件的地址,在这里可以不做修改;第四行是是否生成config.h,会生成一些configure.in生成的宏,只有在需要这些宏的情况下可以保留;
    基本的应用这些就够了,但是我们还需要添加一行:
    AM_INIT_AUTOMAKE(HELLO, 1.0)

    现在修改过后的configure.scan文件大概长得是这样的:
    #                                               -*- Autoconf -*-                                                                             
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ([2.69])
    AC_INIT([HELLO], [1.0], [yaolu1103@gmail.com])
    AC_CONFIG_SRCDIR([helloWorld.cpp])
    AM_INIT_AUTOMAKE(HELLO, 1.0)
    AC_CONFIG_HEADER([config.h]) 
    # Checks for programs.
    AC_PROG_CXX
    
    # Checks for libraries.
    
    # Checks for header files.
    
    # Checks for typedefs, structures, and compiler characteristics.
    
    # Checks for library functions.
    
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT

    将configure.scan重命名为configure.in。
  4. 如果header没有注释,需要执行autoheader,否则跳过此步
  5. 书写Makefile.am文件:
    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=HelloWorld
    HelloWorld_SOURCES=helloWorld.cpp
  6. 执行aclocal,完成之后再执行autoconf,最后执行automake --add-missing
  7. 剩下的就和安装GNU的软件过程一样啦,./configure && make

基本的使用就是这样,最后,还能使用make dist命令给自己HelloWorld软件打个包,很有成就感~
后续需要学习构建更为复杂一些的automake,根据多个模块生成自己的软件,且听下回分解。

参考链接:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值