分类: LINUX
2010-03-03 13:54:06
在前文《简单工程Makefile的自动生成》中,我们详细讲解了使用automake工具来生成工程Makefile的过程。
具体可参见:http://blog.chinaunix.net/u2/84258/showart_1830402.html
下面我们就使用过程中需要注意的一些细节和技巧,做一个简单的总结。
1.编译生成可以安装的静态库。
lib_LIBRARIES = libtest.a
libtest_a_SOURCE = ./src/test.c \
./src/test.h
2.编译生成可以安装的动态库。
lib_LTLIBRARIES = libtest.la
libtest_la_SOURCE = ./src/test.c \
3.指定要发布的头文件
include_HEADERS = ./include/test.h
或者
pkginclude_HEADERS = ./include/test.h
NOTE:如果定义在include_HEADERS, 将来test.h头文件会安装在路径 $(includedir)下,默认为/usr/include/,
如果定义在pkginclude_HEADERS,将来test.h头文件会安装在路径 $(pkgincludedir)下,默认为/usr/include/test/,
当然,可以在Makefile.am中自定义includedir和pkgincludedir。
4.打包额外的文件
EXTRA_DIST = ./extra_data/mytest.data
make dist,可以打包进pkg中
5.添加额外的库
data_DATA = ./extra_lib/libmylib.so
make install,会将库libmylib.so安装进入$(datadir)路径下。
automake还允许自定义安装路径和文件,如下:
mylibdir = $(datadir)/mylib
mylib_DATA = ./extra_lib/libmylib.so
附录:
1 默认的路径定义如下
prefix /usr/local
exec_prefix ${prefix}
bindir ${exec_prefix}/bin
libdir ${exec_prefix}/lib
pkglibdir $(libdir)/$(PACKAGE)
. . .
includedir ${prefix}/include
pkgincludedir ${includedir}
datarootdir ${prefix}/share
datadir ${datarootdir}
mandir ${datarootdir}/man
infodir ${datarootdir}/info
docdir ${datarootdir}/doc/${PACKAGE}
2 automake中文手册
3 automake 英文文档
|