Step@88
-
2007-05-22
autotoolset使用(2) - [GNU]
关于两个主要文件的语法
1.
configure.ac 文件是m4的宏,并且也可以使用shell脚本语言 if else fi 等。configure.ac 中几个主要的宏:
//////////////////////////////////////////////////////////////////////
`AC_INIT(PACKAGE, VERSION, BUG-REPORT-ADDRESS)'
information on the package
checks for programs
checks for libraries
checks for header files
checks for types
checks for structures
checks for compiler characteristics
checks for library functions
checks for system services
`AC_CONFIG_FILES([FILE...])'
`AC_OUTPUT'///////////////////////////////////////////////////////////////////////
AC_INIT(NAME,version,email): 指定相应打包文件的名和版本 如 name-version.tar.gz
AC_CONFIG_SUBDIR(sourcefile): 参数sourcefile 一般是你的主程序
AM_INIT_AUTOMAKE
AC_PROG_CC,AC_PROG_CXX,AC_PROG_YACC,AM_PROG_LEX: 指定使用的编译器。
AC_CONFIG_HEADER(files): 指定配置的头文件(autoheader 生成 file.in)
AC_CHECK_FUNCS/FUNC ,AC_CHECK_LIB,AC_HEADER_STDC,AC_CHECK_HEADER: 指定要检查的函数,包 ,标准头文件,头文件。 指定后运行 autoheader 会生成相应 #define
AC_MSG_ERROR,AC_MSG_WARNING: 给出相应的错误信息
AC_ARG_ENABLE(feature,help-string,[a],[b]]) a=action if given b=action if not given : 判断配置是否用了 --enable-feature
AC_PROG_INSTALL : 指定要安装包
AC_CONFIG_FILES([Makefile]) : 指定各目录的Makefile文件
AC_OUTPUT : 结束由于configure.ac文件与shell脚本相同,应此可以定义相应的变量,测试等等。其中
VERSION="0.0.1-rc2"
AC_SUBST(VERSION) // 在Makefile.am中 @VERSION@ 将会被替换AM_CONDITIONAL(name ,value) 指定条件变量,name 可以在Makefile中通过 if else fi 来使用
// configure.ac 中的注释可以是# 或者 dnl
2.
Makefile.am 中的一些变量
SUBDIRS=dir1 dir2 dir3 : 指定编译进入的子目录,以及顺序
LDADD = -llibname1 -llibname2 : 指定ld的link库
LDFLAGS= -Ldir1 -Ldir2 : 指定ld的link目录
INCLUDES= -I dir1 -I dir2 : 指定编译器的头文件目录
AM_CFLAGS= xxxx : 指定 编译器的选项c++ AM_CXXCFLAGS ->c
对于每个程序
bin_PROGRAMS=prog1,prog2 (注意Makefile.am 只需指定一个)
prog1_SOURCES = foo1.cc foo2.cc ... header1.h header2.h ....
prog1_LDADD = -lbar1 -lbar2 -lbar3
prog1_LDFLAGS = -L/dir1 -L/dir2 -L/dir3 ...
prog1_DEPENDENCIES = dep1 dep2 dep3 ...对于每个库
lib_LIBRARIES = ... libfoo1.a ...
libfoo1_a_SOURCES = foo1.cc foo2.cc private1.h private2.h ...
libfoo1_a_LIBADD = obj1.o obj2.o obj3.o
libfoo1_a_DEPENDENCIES = dep1 dep2 dep3 ...EXTRA_DIST : 需要被编译进包的指定文件
include_HEADERS, man_MANS, info_TEXINFOS,bin_SCRIPTS,指定相应的文件到系统的相应地方
pkgdata_DATA: 安装文件到 %prefix%/share/program 一般是资源文件
EXTRA_DIST and noinst_HEADERS :指包括在版本中,但是不安装
Makefile.am 中可以定义变量如LIBS 当编译的库依赖其他库是可以定义此变量,可以写条件语句
随机文章:
gcc 做了些什么... 2007-12-23ld script 脚本浅析 2007-12-21objdump nm 命令 2007-12-19Latex 安装和使用以及中文问题 2007-05-27autotoolset使用(3) 2007-05-25
收藏到:Del.icio.us







