使用autotools分发脚本

时间:2011-07-26 07:25:47

标签: autotools autoconf

我想用我的应用分发我的启动脚本。它被称为“blah”,它位于我项目的脚本/文件夹中。我在configure.ac中有这个:

... 
AC_CONFIG_FILES([
    Makefile
    scripts/Makefile
    ....
])

AC_CONFIG_FILES([scripts/blah], [chmod +x scripts/blah])

AC_OUTPUT

在scripts目录中,我有以下Makefile.am:

dist_bin_SCRIPTS = blah
CLEANFILES = $(bin_SCRIPTS)

在同一个目录中,我确实有“blah.in”文件。

但是当我做“make install”时它会创建脚本/ blah,bot不会将它安装到/ usr / local / bin目录。我的设置有什么问题?感谢

2 个答案:

答案 0 :(得分:8)

如果您AC_CONFIG_FILES([scripts/blah], ...)script/blah创建script/blah.in,那么您应该只分发script/blah.in(这会自动发生,因为使用AC_CONFIG_FILES会产生副作用)而不是分发script/blah

您的Makefile应该阅读

bin_SCRIPTS = blah   # not dist_bin_SCRIPTS
CLEANFILES = $(bin_SCRIPTS)

如果您只想按原样分发和安装脚本,而不使用configure生成脚本,请仅使用

dist_bin_SCRIPTS = blah

并省略CLEANFILES以及AC_CONFIG_FILES行。

现在这不是你真正的错误。查看您的github文件,我可以看到scripts未出现在根SUBDIRS的{​​{1}}变量中。因此Makefile.am不会递归到该子目录中,也不会安装脚本。

答案 1 :(得分:0)

您确定需要指定:

AC_CONFIG_FILES([scripts/blah], [chmod +x scripts/blah])

对我来说,autotools生成blah.in,因为他们认为,你的脚本是一个makefile。尝试删除此行,告诉发生了什么。