Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1006236
  • 博文数量: 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++

2013-01-06 10:12:46

有些程序在发布的时候,除了编译的二进制可执行程序以外,还需要安装一些可执行的脚本。安装这些可执行脚本,有两种方式:

1.安装可执行脚本到bin目录或者是sbin目录

比如我这里有个脚本在源代码目录的./tools/cm.pl。那么在Makefile.am中增加如下语句:

dist_bin_SCRIPTS=./tools/cm.pl

将会把cm.pl脚本安装到目标安装目录的bin子目录下。如果你想安装到sbin目录下,请使用

dist_sbin_SCRIPTS=./tools/cm.pl


2.安装到其他目录下

这个时候,可以使用install-data-hook目标或者install-exec-hook。由于automake生成的makefile在执行安装的时候,是先执行可执行文件的安装的,即install-exec,后执行数据文件的安装,即install-data。所以install-exec-hook目标下的命令是在安装完可执行文件以后去执行的,而install-data-hook下的命令是安装完数据文件以后,去执行的。

比如我这里想把cm.pl安装的安装目录下的tools子目录下,则在Makefile.am中使用如下的语句:

install-exec-hook:     
        mkdir -p $(prefix)/tools
        cp ./tools/cm.pl $(prefix)/tools
        chmod a+x $(prefix)/tools/cm.pl

或者使用install-data-hook替换install-exec-hook也是可以的。

另外,也可以使用这样的方法,就是把cm.pl当数据文件来安装,使用install-data-hook仅仅做文件执行权限的更改,但是这样比较麻烦。不推荐。这样做的代码如下:

toolsdir = $(prefix)/tools
tools_DATA = ./tools/cm.pl
install-data-hook:
        chmod a+x $(toolsdir)/cm.pl
阅读(4547) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~