Automake使用网上与个人小结

运维 系统运维
现在googleMakefile和automake就能找到一些文章。以一个Hello程序描述为一个project生成Makefile的过程。下面是我对Automake一个小总结。

现在googleMakefile和Automake使用就能找到一些文章。以一个Hello程序描述为一个project生成Makefile的过程。这个例子其实在Infoautomake里能看到。大家把它翻成中文的,不错。但实际上按照这个例子来做的话,步骤都对,就是太简单,一些常用的设置需要写进去,但是没有提到,还是要自己info,google,try.

AutoMake使用小结
1.产生源代码
2.用autoscan产生configure.scan文件,编辑该文件产生新文件configure.in文件
3.执行aclocal,产生aclocal.m4
4.执行autoconf,产生configure
5.创建Makefile.am文件,并编辑成一定的样子
6.执行automake--add-missing,Automake会根据Makefile.am产生一些文件,其中包括最重要的Makefile.in
7.***执行./configure,产生Makefile文档
8.执行make,生成可执行文件
执行makeinstall,将可执行文件复制到系统路径下。

下面是我对Automake使用一个小总结。

1步骤总述
(1)autoscan生成configure.scan.

(2)在configure.scan基础上手动编辑,主要要添加的:AM_INIT_AUTOMAKE(myprojectname,version)AC_OUTPUT(***要生成的Makefile,包括子目录中的,中间用空格隔开),例如AC_OUTPUT(Makefilesubdir/Makefilesubdir1/Makefile)AC_PROG_RANLIB(意义见第四条末尾)

(3)aclocalautoconf生成configure脚本。

(4)这步我基本靠手,呵呵,有没有脚本来完成这个的?就是在每个***需要生成Makefile的目录中,写一个Makefile.am.最上层的要写明AUTOMAKE_OPTIONS=foreign如果这个目录没有要编译的文件,只包含了子目录,则只写个SUBDIRS=dir1就ok了。例如我的工程,最上层只是包含了源码目录,于是就写了
AUTOMAKE_OPTIONS=foreign
SUBDIRS=src
如果有文件要编译,则要指明target先。比如我的src目录底下既有文件,又有目录,而src的这层目录中的文件***是要编译成一个可执行文件,则src目录下的Makefile.am这么写。
bin_PROGRAMS=myprogram
SUBDIRS=sub1
myprogram_SOURCES=\a.cpp\
b.cpp\
#要编译的源文件。这儿的_SOURCES是关键字
EXTRA_DIST=\a.h\
b.h
#不用编成.o,但生成targetmyprogram也需要给编译器处理的头文件放这里
myprogram_LDADD=libsub1.a这个_LDADD是关键字,
#***生成myprogram这个执行文件,还要linksrc/sub1这个目录中的内容编成的一个lib:libsub1.a,myprogram_LDFLAGS=-lpthread-lglib-2.0-L/usr/bin$(all_libraries)
#myprogram还要link系统中的动态so,以此类推,需要连自编译的so,也写到这个关键字_LDFLAGS后面就好了。
AM_CXXFLAGS=-D_LINUX
#传递给g++编译器的一些编译宏定义,选项,
INCLUDES=-IPassport-Isub1/-I/usr/include/glib-2.0\-I/usr/lib/glib-2.0/include$(all_includes)
#传递给编译器的头文件路径。

下面是sub1种生成lib的Makefile.am
noinst_LIBRARIES=libprotocol.a#不是生成可执行文件,而是静态库,target用noinst_LIBRARIESlibprotocol_a_SOURCES=\
alib.cpp
EXTRA_DIST=mylib.h\alib.h
INCLUDES=-I../$(all_includes)
AM_CXXFLAGS=-D_LINUX-DONLY_EPOLL-D_SERVER
ok,***补上AC_PROG_RANLIB涵义,如果要自己生成lib,然后link到最终的可执行文件中,则要加上这个宏,否则不用。

2.剩下的就是automake--add-missingOk,Makefile.in应该放到各个目录下了。
Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=547235

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenquan_75/archive/2007/09/04/1771502.aspx

【编辑推荐】

  1. Autoconf使用关于autoconf安装条件介绍 
  2. Autoconf使用生成Makefile的方法及其规则
  3. autoconf安装关于可移植的源代码详解
  4. Autoconf教程关于UNIX文件系统概述
  5. Autoconf教程关于安全管理介绍
责任编辑:chenqingxiang 来源: 互联网
相关推荐

2009-01-06 09:34:39

乔布斯苹果档案

2010-06-22 23:52:42

Automake使用

2017-09-12 09:22:51

LinuxMakefileautoconf工具

2010-06-22 17:45:34

Linux Autom

2010-06-22 17:09:52

Linux Autom

2013-05-16 11:16:45

Linux软件安装卸载

2015-11-10 17:56:23

2009-08-31 17:57:25

Windows7网上银行电子商务

2015-11-10 18:15:53

2013-08-24 14:41:45

2023-10-17 16:04:00

2021-03-19 07:23:23

Go架构Go工程化

2009-08-24 17:45:39

Java与C#的区别

2010-06-22 17:28:35

Linux Autom

2021-04-09 07:13:56

LinkedIn个人信息泄露

2009-04-08 10:20:43

Oracle插入查询

2016-08-11 11:25:30

2011-06-21 10:24:21

思杰云计算

2024-02-26 07:39:16

2015-06-10 10:54:24

自定义路PHP
点赞
收藏

51CTO技术栈公众号