【问题标题】:Distributing scripts using autotools使用自动工具分发脚本
【发布时间】:2011-07-26 07:25:46
【问题描述】:

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

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

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

AC_OUTPUT

在脚本目录中,我确实有以下 Makefile.am:

dist_bin_SCRIPTS = blah
CLEANFILES = $(bin_SCRIPTS)

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

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

【问题讨论】:

  • 也许它正在安装在 /usr/local/bin 中?
  • 不,只是一个错字。修复,谢谢。它只是不会安装在前缀中。

标签: autotools autoconf


【解决方案1】:

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

您的Makefile 应该是

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

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

dist_bin_SCRIPTS = blah

并省略 CLEANFILESAC_CONFIG_FILES 行。

现在这不是你真正的错误。查看您的 github 文件,我可以看到 scripts 没有出现在您的根 Makefile.amSUBDIRS 变量中。因此make install 不会递归到该子目录,也不会安装脚本。

【讨论】:

  • 谢谢!作品。我怎么能错过!
  • 谢谢,dist_bin_SCRIPTS = blah 是解决方案 :)
【解决方案2】:

您确定需要指定:

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

?

对我来说,autotools 会生成 blah.in,因为他们认为,你的 blah 脚本就是一个 makefile。试着去掉这行,告诉你会发生什么。

【讨论】:

  • 试过 dist clean、autoreconf、make。在这种情况下,scripts/blah 甚至不会从 .in 文件中创建。
  • 你可以在这里试试github.com/lzap/vide(它的scripts/videx启动脚本没有被安装)
  • 你可以AC_CONFIG_FILES任何模板。它不一定是Makefile.in
猜你喜欢
  • 2015-08-14
  • 1970-01-01
  • 2021-04-09
  • 2011-06-05
  • 1970-01-01
  • 2016-02-09
  • 2022-06-14
  • 2011-01-10
  • 2015-10-22
相关资源
最近更新 更多