Chinaunix首页 | 论坛 | 博客
  • 博客访问: 871478
  • 博文数量: 87
  • 博客积分: 3324
  • 博客等级: 中校
  • 技术积分: 1003
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-17 11:37
文章分类

全部博文(87)

文章存档

2014年(3)

2013年(5)

2012年(21)

2011年(13)

2010年(7)

2009年(9)

2008年(4)

2007年(14)

2006年(11)

分类: C/C++

2007-05-14 18:37:12

通过定制Makefile.am里面的内容可以实现将不同的程序文件、库文件、数据文件等安装到布通目录里去。automake默认给Makefile.am定义了一些目录,来把一些文件安装到指定的目录下,这些默认的目录变量如下:
bindir
libdir
includedir
datarootdir
.....
等等

我们在编写Makefile.am文件的时候,使用 bin_PROGRAMS=来把指定的程序安装到bin目录下,也就是bindir下。
使用lib_LIBRARIES来把指定的静态库安装到lib目录下,也就是libdir下。
那么我们想把可执行程序或者库安装在自定义的目录下的时候,由于不是系统默认的,所以必须提供对应的dir变量才可以。例如我们要把一些可执行程序安装的test目录下,那么除了要用test_PROGRAMS来指定这些程序,还要定义testdir变量。一般可以这样定义:
testdir=$(prefix)/test,这样在运行make install的时候,test_PROGRAMS所包含的文件将被安装到安装目下的test子目录里。对于库,使用test_LIBRARIES,并且定义testdir。(如果同时存在test_PROGRAMS和test_LIBRARIES,那么我估计这些程序和库文件都会被安装到testdir下。我没有测试过,有人测试过可以告诉我一下 ).

对于我们不需要安装的程序或者库,使用noinst_前缀即可,例如我们只要编译不要安装的程序使用noinst_PROGRAMS来指明,对于只要编译不要安装的静态库使用 noinst_LIBRARIES来指明, 对于只要编译不要安装的动态库使用 noinst_LTLIBRARIES来指明。

如果有不需要编译的可执行程序或者脚本也需要安装,那么可以通过dist_bin_PROGRAMS(要安装到bin目录的文件)来指定,如果是要安装到别目录的可执行程序,例如前面定义过test_PROGRAMS,那么想安装到test目录,可以使用dist_test_PROGRAMS。

阅读(2014) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~