[ Prev ] [ Index ] [ Next ]

Automake

Created 星期日 11 四月 2010

在configure.ac中,如果用到gtkmm和glademm,可以用语句

PKG_CHECK_MODULES(PTABLE, [gtkmm-2.4 >= 2.8 libglademm-2.4 >= 2.6 ])
其中PTABLE为工程的名字。

每次执行make,它会检查文件的存在性和最后修改时间,决定寻那些文件是不要构建(或重构),并执行相关的命令。

GNU Build System

参看automake的use cases,Generalities.

基本安装

1 解压
2 进入新建的目录后执行./configure
可以用--prefix指定安装的目录,默认为/usr/local/
3 make 进行编绎
4 su命令以root用户执行make install 安装。
默认情况安装到/usr/local目录下。

Makefile中的目标

make all 相当于make
make install 安装,还有 make uninstall
make clean 清除构建树中由make all 生成的文件
make distclean 附带清除./configure生成的文件
make dist 从源文件中生成tar压缩软件包

标准目录

其中的一些

`prefix' `/usr/local'
`exec_prefix' `${prefix}'
`bindir' `${exec_prefix}/bin'
`libdir' `${exec_prefix}/lib'
...
`includedir' `${prefix}/include'
`datarootdir' `${prefix}/share'
`datadir' `${datarootdir}'
`mandir' `${datarootdir}/man'
`infodir' `${datarootdir}/info'
`docdir' `${datarootdir}/doc/${PACKAGE}'

标准的配置参数

CC,CFLAG, CXX, CXXFLAGS,LDFLAGS,CPPFLAGS(C/C++预处理参数)

VPATH 构建

GNU Build System有两个目录,源树和构建树,源树以'configure'所在的目录为根目录,构建树以执行'configure'所在的目录为根目录。


Makefile

在Makefile.am 或 AC_SUBST定义的变量会覆盖automake开始创建的的。
使用变量: $(变量名),"##"后是注释。

automake严格级别

(strictness)
foreign gnu gnits cygnus

名字规则

Uniform
automake要创建的对象称作"primary",例如"PRGORAMS"是构建应用程序的primary,
primary的前缀指定要构建对象安装的目录,primary前如果加前缀"EXTRA_"表示可构建也可不构建。
primary前一定要加前缀,前缀的"dir"要去除。
可以额外确定目录,名字以dir作为后缀。
例如

xmldir = $(datadir)/xml
xml_DATA = file.xml

一些primary
PROGRAMS,LIBRARIES,DATA,HEADERS,MANS,SOURCES

子目录

SUBDIRS




生成configure

autoreconf --install

共享库

安装后运行
su
ldconfig
否则程序找不到该共享库