| 导语 我们在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提供:适配兼容测试;云端真机调试;安全测试;耗电量测试;服务器性能测试;舆情监控等服务。