using automake

以前都是手写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等。

写得比较粗略,详细查看这个文档

相关文章

Tags: ,

围观完了 留个脚印