IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    using automake

    Yukang (moorekang@gmail.com)发表于 2010-08-21 00:00:00
    love 0
    以前都是手写makefile,没使用automake之类的工具,今天看了一些相关资料,简单地总结一下,留个备份。

    使用Makefile

    unix/linux下面使用相当广泛,对于简单一些的程序,手写makefile还是比较容易的,只要指定清目标文件, 最后可执行文件的依赖关系。使用一些高级一点的功能更方便,比如下面这个就比较好用,稍微编辑一下就可以用于常用的小工程。 这个Makefile把所有.cpp的文件编译成相应的.o文件,然后链接为Targetfile文件。

    CC = g++  -O2
    LD = g++
    TARGET = Targetfile
    SOURCES = $(wildcard *.cpp)
    OBJS = $(patsubst %.cpp,%.o,$(SOURCES))
    
    %.o:%.cpp
            $(CC) $(CFLAGS) -c $< -o $@
    
    Targetfile:$(OBJS)
            $(CC) $(OBJS) -lglut -lglui  -o Targetfile
    
    clean:
            @/bin/rm *.o

    使用automake等工具

    1. 首先运行autoscan,这之后会生成一个configure.scan文件,修改为configure.in,并编辑。典型的一个文件如下, AC_CONFIG_SRCDIR,AC_CONFIG_HEADER这两项还不知道干什么用的,如果不注释掉后面automake会出现错误,那就先注释掉吧。 重点修改AC_INIT,AC_INIT_AUTOMAKE。AC_CHECK那些不用管,后面提示-lglui提示要注意,这是需要链接的库文件,这里链接glui这个库。

    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ(2.61)
    AC_INIT(TSPdemo, 1.0, moorekang@gamil.com)
    AM_INIT_AUTOMAKE(TSPdemo, 1.0)
    #AC_CONFIG_SRCDIR([Elastic_Alg.cpp])
    #AC_CONFIG_HEADER([config.h])
    
    # Checks for programs.
    AC_PROG_CXX
    AC_PROG_CC
    
    # Checks for libraries.
    # FIXME: Replace `main' with a function in `-lglui':
    AC_CHECK_LIB([glui], [main])
    # FIXME: Replace `main' with a function in `-lglut':
    AC_CHECK_LIB([glut], [main])
    
    # Checks for header files.
    
    AC_HEADER_STDC
    AC_CHECK_HEADERS([stdlib.h])
    
    # Checks for typedefs, structures, and compiler characteristics.
    AC_HEADER_STDBOOL
    AC_C_CONST
    AC_C_INLINE
    AC_TYPE_SIZE_T
    
    # Checks for library functions.
    
    AC_CHECK_FUNCS([sqrt])
    #AC_CONFIG_FILES([makefile])
    AC_OUTPUT(Makefile)
    2. 编写Makefile.am,如下面这样。和makefile一样,写上可执行文件依赖于的源文件,_LDADD是要链接的库文件名。
    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=TSPdemo
    TSPdemo_SOURCES= Elastic_Alg.cpp  MyMap.cpp   mathlib.cpp \
    Elastic_Alg.h    MyMap.h      mathlib.h \
    LaoMan.cpp       SOM.cpp        pointdef.h \
    LaoMan.h         SOM.h      main.cpp
    TSPdemo_LDADD = -lglut
    3. 然后执行aclocal,和autoconf,最后automake —add-missing 生成configure文件。这就完成了,下面就是unix下编译安装软件的三个步骤了, ./configure,make,makeinstall等。 写得比较粗略,详细查看这个文档。


沪ICP备19023445号-2号
友情链接