如何使用automake来管理你的编译

来源:互联网 发布:windows优化大师v7.99 编辑:程序博客网 时间:2024/06/11 18:38

原文作者:赵杨

很多入门级Linux编程书籍并没有透露:其实你不用手动编写Makefile文件,GNU老早就提供了一套好用的工具链,可以很方便的生成Makefile文件。 �0�2 你一定知道Linux下很多软件包,特别是GNU的,安装一般只需要执行命令:./configure; make install; 即可方便的完成源码的编译和安装。听说这叫做符合GNU规范的软件源码包 �0�2 这篇短文就是想让我们自己的软件源码包也能达到这个目标。

先混个眼熟,这些工具(命令)依次是:
autoscan
aclocal
autoconf
autoheader
automake

实际使用时,这几个命令的执行顺序也是以上这个顺序。 2 只是调用这几个命令过程中需要我们根据实际情况改一下两个文件:configure.in和Makefile.am

第一步,调用autoscan ,会生成个configure.scan文件,将其改名为configure.in,并改文件内容如下:

 -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(gameserver, 1.0, qjzy2008@163.com ) 
AM_INIT_AUTOMAKE(gameserver, 1.0) 
AC_CONFIG_SRCDIR([main.cpp])
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.
AC_TYPE_SIZE_T

# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

第二步,新建Makefile.am文件(命令vim Makefile.am),文件内容如下:

AUTOMAKE_OPTIONS = foreign
noinst_PROGRAMS = gateserver
gateserver_SOURCES = main.cpp ../common/gateway/gateway.h\
../common/gateway/gateway.cpp \
../common/gateway/session.h \
../common/gateway/session.cpp \
LIBS = -lzmq -lboost_system -lboost_thread -lglog

Makefile.am文件中noinst_PROGRAMS = gateserver 代表生成程序名称,程序名称_SOURCES配置所需要的源码文件,LIBS配置依赖的库。

第三步,依次调用命令:aclocal; autoconf; autoheader; automake –add-missing;

完成后自动生成了:configure和Makefile。

原创粉丝点击