使用autoconf及automake自动生成makefile实战

本文介绍了使用GNU autoconf 及automake这两个软件时,如何把程序安裝到系统中,从而提高我们的开发效率!

| 导语 我们在Linux下进行软件开发的过程中,经常需要写makefile文件,使用GNU autoconf 及 automake 这两个软件,用户只要使用 “./configure”, “make”, “make install” 就可以把程序安裝到系统中,从而提高我们的开发效率。

本文由腾讯WeTest授权发布,商业转载请联系腾讯WeTest授权,非商业转载请注明出处。

 

假设我们开发的过程中文件组织格式是这样的,bin文件用来存放生成的二进制文件,include目录存放相关的头文件,src目录存放相关的实现文件。

想要生成makefile我们只需以下几步。

1.首先运行autoscan命令,生成configure.scan文件

 

2.把configure.scan重命名为configure.ac,打开之后文件内容为

  1 #                                               -*- Autoconf -*-
  2 # Process this file with autoconf to produce a configure script.
  3 
  4 AC_PREREQ([2.63])
  5 AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
  6 AC_CONFIG_SRCDIR([src/main.cpp])
  7 AC_CONFIG_HEADERS([config.h])
  8                                                                                                            
  9 # Checks for programs.
 10 AC_PROG_CXX
 11 AC_PROG_CC
 12 
 13 # Checks for libraries.
 14 
 15 # Checks for header files.
 16 
 17 # Checks for typedefs, structures, and compiler characteristics.
 18 
 19 # Checks for library functions.
 20 
 21 AC_OUTPUT

我们把他编辑为

  1 #                                               -*- Autoconf -*-
  2 # Process this file with autoconf to produce a configure script.
  3 
  4 AC_PREREQ([2.63])
  5 AC_INIT([test], [1.0], [michealshen@tencent.com])
  6 AC_CONFIG_SRCDIR([src/main.cpp])
  7 AC_CONFIG_HEADERS([config.h])
  8 AM_INIT_AUTOMAKE
  9 # Checks for programs.
 10 AC_PROG_CXX
 11 AC_PROG_CC
 12 
 13 # Checks for libraries.
 14 
 15 # Checks for header files.
 16 
 17 # Checks for typedefs, structures, and compiler characteristics.
 18 
 19 # Checks for library functions.
 20 
 21 AC_OUTPUT(Makefile src/Makefile)  

注意要把第八行的AM_INIT_AUTOMAKE加上,否则后面automake的时候会提示报错。

3.然后我们运行aclocal以及autoconf命令,生成acloacl.m4以及configure文件。

4.然后我们需要编辑一下我们的Makefile.am文件,这里除了顶层目录需要之外,src中的每个目录也是需要的。

顶层目录的Makefile.am为

1 AUTOMAKE_OPTIONS=foreign
2 SUBDIRS=src    

 Src目录中为

1 INCLUDES=-I$(top_srcdir)/include 
2 bin_PROGRAMS=$(top_srcdir)/bin/test
3 __top_srcdir__bin_test_SOURCES=test.cpp main.cpp  

5.大功快要告成了,接下来我们执行automake --add-missing用来生成我们最重要的Makefile.in文件。

6.为了区分,我们新建一个build目录用来执行make命令。

Ok,done。

 

关于腾讯WeTest (wetest.qq.com)

 

腾讯WeTest是腾讯游戏官方推出的一站式游戏测试平台,用十年腾讯游戏测试经验帮助广大开发者对游戏开发全生命周期进行质量保障。腾讯WeTest提供:适配兼容测试;云端真机调试;安全测试;耗电量测试;服务器性能测试;舆情监控等服务。

最新文章
1客户案例研究:专家安全扫描,守护金融银行小程序安全和私密性 WeTest私有化部署的定制扫描平台让金融银行客户能无成本接入扫描系统并迅速上手使用。客户能方便快捷地根据定制手册进行自助扫描,根据生成的扫描报告,详细洞察漏洞,快速识别并准确定位问题根源。
2客户案例研究:专家渗透测试,洞察电子商务小程序重大交易漏洞 通过WeTest渗透测试服务,某知名零售公司旗下的在线购物类小程序中发现了8处安全风险,我们的安全专家为客户提供了详细的漏洞报告,提供了较为清晰完整的安全加固方案。在回归测试中,中危以上风险均被解决。
3自查小程序4大安全隐患!文末免费赠送小程序安全扫描专业版! 腾讯WeTest现面向小程序开发者开放免费申请使用小程序安全扫描专业版,助您提前发现全面的安全漏洞。扫描文中问卷二维码或点击问卷链接,即可报名参与免费领取活动。
4浅谈渗透测试服务在泛互行业带来的价值 在泛互联网行业中,渗透测试服务对于保障企业的网络安全至关重要。
5云手机卡顿/无特定设备/商店登录受限怎么办?WeTest专有云帮您解决! 公有云满足了大量小微企业、个人的测试需求;随着客户深入使用,也遇到了一系列新问题。本篇将对几个常见问题予以解答
购买
客服
反馈