在哪里使用GNU autoconf / automake放置辅助脚本?
我正在开发一个将与GNU autoconf / automake一起分发的项目,并且我有一组bash脚本,它们称为awk脚本。我希望bash脚本以$ PATH结尾,而不是awk脚本。我应该如何将它们插入项目中?是否应该将它们与其他二进制文件放在一起?
另外,有没有一种方法可以在安装后确定文件的最终位置?我认为/ usr / local / bin并不总是在可执行文件最终出现的地方...
解决方案
在Makefile.am中添加类似的内容
scriptsdir = $(prefix)/bin scripts_DATA = awkscript1 awkscript2
在这种情况下,它将在$ {prefix)/ bin中安装awkscript(我们也可以使用$ {bindir))。
注意:不要忘记第一个名称应为name + dir(脚本-> scriptsdir),第二个名称应为name + _DATA(脚本-> scripts_DATA)。
如果awk脚本不会进入主bin目录(前缀/ bin),那么我们需要将它们放在lib的适当子目录中,但可能放在libexec或者share中(因为awk脚本可能与平台无关)。
正确:软件不一定必须以/ usr / local / bin结尾;在我的机器上,/ usr / local / bin由MIS管理,因此我安装的所有软件都在/ usr / gnu /下。我使用:./configure --prefix = / usr / gnu将软件安装在我想要的位置。
我们可以将PREFIX的值嵌入bash脚本中-有效地,我们将"编译"脚本以包括安装位置。在构建测试期间要注意一些问题,我们可能需要先相对于当前目录定位脚本,然后相对于PREFIX定位脚本。
乔纳森(Jonathan),回答另一个问题:如果要在构建时替换prefix的值,则需要:
- 将脚本" myscript"重命名为" myscript.in"
- 添加规则configure.ac以在底部生成它
- 使用我制作的名为AS_AC_EXPAND的宏
- 像这样使用它:AS_AC_EXPAND(BINDIR,$ bindir)
- 在" myscript.in"中,我们现在可以使用@ BINDIR @,它将扩展到最终将安装脚本的完整路径。
请注意,我们不应该直接使用PREFIX,任何安装目录都可以更改,因此我们确实想使用传递的值来配置bindir并将其扩展。