【分析总结框架记录】如何使用automake来管理你的编译
2015-06-26 11:31
465 查看
原文作者:赵杨
很多入门级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。
很多入门级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。
相关文章推荐
- ENode框架使用场景简述
- container_of()宏
- Java中SortedSet
- Chapter 51.依赖管理
- 【转】U盘中文件被隐藏后的修复方法
- 微信考勤玩法曝光!
- OC-Xml文件解析
- 应届生经典面试题:说说进程与线程的区别与联系
- Thread的run()与start()的区别
- TCP与UDP区别
- 高效工作的秘诀——Doit.im使用总结报告
- 【分析总结框架记录】异步操作
- Mac Apache 启动Web工程(webserver):
- 大型网站架构体系的演变
- ConcurrentHashMap之实现细节
- 显示和隐藏系统任务栏的类
- 学习C++ -> 构造函数与析构函数
- 3Sum
- 浅谈JavaScript异常处理语句
- 【分析总结框架记录】对通信数据包进行打包