automake编译工程

首先准备工程完整清晰的目录,cd到要生成makefile的主目录,下面将分布说明怎样用automake编译工程,所有的1,2,3,4,5,6都是在主目录操作的。

1 输入:“autoscan” 生成configure.scan
2 输入:“mv configure.scan configure.ac”
3 输入:“vi configure.ac”

添加:AM_INIT_AUTOMAKE(hello,1.0)

AC_CONFIG_FILES([Makefile])

并添加
  AC_PROG_RANLIB
//有sub目录时记得都写出来 :例如只有一个文件夹Source,则:Makefile source/Makefile 上面不用更改只添加这两处。
//有源码的目录都要写下来,在有源码的地方都要写Makefile.am。
//如果有子目录,必须是在主目录的子目录里面写Makefile.am,不能是主目录的上层目录写Makefile.am否则会失败。

例如:
AC_PREREQ([2.63])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([Zlog.h])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE(zlog,1.0)
AC_CONFIG_FILES([Makefile
                                  source/Makefile])
(当生成.a文件时需要加上:AC_PROG_RANLIB)
AC_PROG_CXX
AC_PROG_CC
AC_PROG_RANLIB

4 输入:“aclocal“ 生成 aclocl.m4
5 输入:”autoconf“ 生成 configure
6 输入:vim Makefile.am

在主目录中:SUBDIRS = source(如果没有子目录则在主目录编写子目录内容)

SUBDIRS = src/handle_module/transcode src/handle_module/cover_standard src/heartbeat

在子目录中如source中或其他,举几个例子

//生成publicparty.a(这个是个公共库,不在主目录子目录的框架中,是个独立的makefile.am,和其他makefile.am无关)。

AM_CPPFLAGS = -I ./publicpartyAUTOMAKE_OPTIONS = foreign
CXXFLAGS += -g -Wall -lpthreadlib_LIBRARIES = libpublicparty.alibpublicparty_a_SOURCES = lvsm_datatime.cpp \lvsm_conf.cpp \lvsm_file.cpp \lvsm_log.cpp \lvsm_socket.cpp \lvsm_socketpair.cpp \lvsm_tcp.cpp \lvsm_udp.cpp \lvsm_thread.cpp \lvsm_public_extend.cppinclude_HEADERS = lvsm_info.h \lvsm_datatime.h \lvsm_conf.h \lvsm_file.h \lvsm_log.h \lvsm_socket.h \lvsm_socketpair.h \lvsm_tcp.h \lvsm_udp.h \lvsm_thread.h \lvsm_public_extend.hall-am:@echo -e "\\e[32m"      @echo "build lvsm:libpublicparty.a success."      @echo -e "\\e[0m"

//生成libtranscode.a

AM_CPPFLAGS = -I ../../../../publicparty -I ./transcode
LD_ADD = ../../../../publicparty/libpublicparty.a AUTOMAKE_OPTIONS = foreign
CXXFLAGS += -g -Wall -lpthreadlib_LIBRARIES = libtranscode.alibtranscode_a_SOURCES = lvsm_transcode.cppinclude_HEADERS = lvsm_transcode.h
libtranscode_a_LIBADD = ${LD_ADD}all-am:@echo -e "\\e[32m"      @echo "build lvsm:libtranscode.a success."      @echo -e "\\e[0m"

//生成libcoverstandard.a

AM_CPPFLAGS = -I ../../../../publicparty -I ./cover_standard
LD_ADD = ../../../../publicparty/libpublicparty.aAUTOMAKE_OPTIONS = foreign
CXXFLAGS += -g -Wall -lpthreadlib_LIBRARIES = libcoverstandard.alibcoverstandard_a_SOURCES = lvsm_cover_standard.cppinclude_HEADERS = lvsm_cover_standard.h
libcoverstandard_a_LIBADD = ${LD_ADD}all-am:@echo -e "\\e[32m"      @echo "build lvsm:libcoverstandard.a success."      @echo -e "\\e[0m"

//生成可执行程序lvsmbeatheart

AM_CPPFLAGS = -I ../../../publicparty -I ../handle_module/cover_standard -I ../handle_module/transcode -I ./heartbeat
LD_ADD = ../../../publicparty/libpublicparty.a \../handle_module/cover_standard/libcoverstandard.a \../handle_module/transcode/libtranscode.a \-lrt AUTOMAKE_OPTIONS = foreign
CXXFLAGS += -g -Wall -lpthread
bin_PROGRAMS = lvsmbeatheartlvsmbeatheart_SOURCES = lvsm_heartbeat.cpp \main.cpp
include_HEADERS = lvsm_heartbeat.h
lvsmbeatheart_LDADD = ${LD_ADD}all-am:@echo -e "\\e[32m"      @echo "build lvsm:lvsmbeatheart success."      @echo -e "\\e[0m"

7 输入:"autoheader" 生成 config.h.in
8 输入:"automake --add-missing" 生成 Makefile.in
9:输入:"./configure --prefix="要生成的可执行程序绝对目录名称""
有时会产生:
Makefile.am: required file `./NEWS' not found
Makefile.am: required file `./README' not found
Makefile.am: required file `./AUTHORS' not found
Makefile.am: required file `./ChangeLog' not found

则输入“touch NEWS README AUTHORS ChangeLog”

//总结
1)修改Makefile.am文件
2) 修改configure.ac文件,运行autoconf生成configure文件(它是由aclocal.m4与configure.ac生成的, aclocal.m4是由configure.ac运行aclocal生成的)
3)运行autoheader生成config.h.in。
4)运行automake --add-missing生成Makefile.in,Makefile.in是由automake在Makefile.am基础上生成的。
5) 运行./configure生成Makefile, config.h, Makefile是由configure 在Makefile.in上生成的, config.h是由config.h.in生成的

autoreconf -fi:当Makefile.am改变时 然后./configure

如有错误请指正:

交流请加QQ群:62054820
QQ:379969650.

automake编译工程相关推荐

  1. 【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )

    文章目录 一.创建 AIDL 文件 1.创建 AIDL 目录 2.创建 AIDL 文件 3.创建 Parcelable 类 4.AIDL 目录下声明 Parcelable 类 5.AIDL 中使用 P ...

  2. VC6命令行编译工程方法

    VC6命令行编译工程方法 昨天下载一个界面库wxWidgets,编译里面的库很痛苦,有好几个工程,我的在一边等待,痛苦!!于是上网找到命令行编译的方法,可以写一个批处理文件,呵呵,想起以前经理编译工程 ...

  3. Myeclipse编译工程用Weblogic发布的时候jdk版本问题

    最近在用Myeclipse编译的代码在Weblogic上发布的时候总是出错,调查发现原来的jdk版本的问题. 我的情况是这样的: 开发的时候我是用tomcat来发布测试的,没有任何问题,但是实际发布的 ...

  4. eclipse不能自动编译工程的解决方法

    任何时候看 Problems 找到正确原因,解决问题就没错的 =========================== eclipse出现不编译工程的现象.怎么刷新classes目录下也是空的. 具体都 ...

  5. 如何使用MDK建立STM32H7双核编译工程

    用MDK为多核的MCU创建编译工程要略比单核MCU复杂一些.本文以STM32H745双核MCU为例示范如何创建一个工程.其实,STM32CubeMX已支持自动生成MDK编译工程了,但其生成的文件树结构 ...

  6. Signal Tap Logic Analyzer的stp文件制作及添加到编译工程

    1)在Quartus中打开Signal Tap Logic Analyzer 2)新建新的stp文件 3)如下为新的stp文件中,不同的观测模块命名,这样方便分模块debug抓取问题,如下为制作的CE ...

  7. makefile文件:编译工程文件

    其本质是用来编译工程文件(内部可以理解为g++命令),用make命令,实现自动化编译.格式如下: 目标:依赖 (tab) 命令 介绍makefile的最初级版本 当前目录下有 main.cpp tem ...

  8. 【ZYNQ】Petalinux 编译工程报错

    Petalinux 在运行命令 petalinux-build 编译工程的时候产生如下错误 查看报错信息如下 /home/zcc/my/linux-xlnx-xilinx-v2017.4 is not ...

  9. windows编译openssh(automake编译)

    openssh 地址:https://gitee.com/mirrors/openssh-portable.git 使用automake编译 安装msys2,在清华镜像https://mirrors. ...

最新文章

  1. map(&:name)在Ruby中是什么意思?
  2. Linux C编程--进程介绍3--进程终止和等待
  3. Python编程基础:第十一节 for循环For Loops
  4. powerbi add visual diagram
  5. java集合性能_Java集合性能分析-疯狂Java讲义
  6. ajax改变div内容,jquery ajax双击div可直接修改div中的内容
  7. ios 拍照 实现 连拍_如何在iOS设备上使用连拍模式拍照
  8. [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门
  9. 容器编排技术 -- Kubernetes Deployment
  10. tm图像融合编程matlab,遥感习题
  11. 2013.01.16 Python的面向对象编程
  12. DIDAO.Common --- 项目中的常用类及其中函数
  13. Day21 linux安装RPM包
  14. Office2016+Visio2016安装过程
  15. c语言基础知识点 面试题,C语言面试基础知识题
  16. 室内定位常用方法总结
  17. android属于数据库管理系统,详细谈谈Android系统中的SQLite数据库的应用
  18. 函数空间(巴纳赫空间、欧几里得空间、希尔伯特空间)
  19. 围观 | 互联网大厂食堂PK:工作不是重点,食堂战胜一切!
  20. unity lua 交互比较好的文章

热门文章

  1. 简单随机选人网站设计
  2. 淘宝卖家打造爆款时需要考虑到哪些重要因素?
  3. java i18n utf_struts2.0乱码 在struts.xml里面设置struts.i18n.encoding=utf-8依然出现乱码是怎么回事呀...
  4. Adobe 安装程序无法初始化,请下载Adobe Support Advisor检测该问题
  5. MySQL安装--无法初始化
  6. [jzoj 1273] 袁绍的刁难 {推理}
  7. 2017.08.05
  8. unity3d环境搭建
  9. SQL之ADD_MONTHS函数用法
  10. C#像素鸟(独自一鸟闯天下)