有些程序在发布的时候,除了编译的二进制可执行程序以外,还需要安装一些可执行的脚本。安装这些可执行脚本,有两种方式:
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
阅读(4673) | 评论(0) | 转发(0) |