【问题标题】:Adding a custom installation directory option to Autoconf-generated configure scripts向 Autoconf 生成的配置脚本添加自定义安装目录选项
【发布时间】:2011-04-02 02:36:43
【问题描述】:

configure 脚本总是在帮助消息中包含如下内容:

... 默认情况下,`make install' 将安装所有文件 `/usr/local/bin', `/usr/local/lib' 等你可以指定 使用 `--prefix' 的安装前缀,而不是 `/usr/local', 例如`--prefix=$HOME'。 为了更好地控制,请使用以下选项。 微调安装目录: --bindir=DIR 用户可执行文件 [EPREFIX/bin] --sbindir=DIR 系统管理员可执行文件 [EPREFIX/sbin] --libexecdir=DIR 程序可执行文件 [EPREFIX/libexec] --sysconfdir=DIR 只读单机数据[PREFIX/etc] --sharedstatedir=DIR 可修改架构独立数据 [PREFIX/com] --localstatedir=DIR 可修改单机数据[PREFIX/var] --libdir=DIR 目标代码库 [EPREFIX/lib] --includedir=DIR C 头文件 [PREFIX/include] --oldincludedir=非 gcc 的 DIR C 头文件 [/usr/include] --datarootdir=DIR 只读arch.-独立数据根[PREFIX/share] --datadir=DIR 只读架构独立数据 [DATAROOTDIR] --infodir=DIR 信息文档 [DATAROOTDIR/info] --localedir=DIR 区域设置相关数据 [DATAROOTDIR/locale] --mandir=DIR 手册文档 [DATAROOTDIR/man] --docdir=DIR 文档根目录 [DATAROOTDIR/doc/gedit-line-ending-style-plugin] --htmldir=DIR html 文档 [DOCDIR] --dvidir=DIR dvi 文档 [DOCDIR] --pdfdir=DIR pdf 文档 [DOCDIR] --psdir=DIR ps 文档 [DOCDIR] 节目名称: --program-prefix=PREFIX 在已安装程序名称前添加 PREFIX ...

我想做的是在此部分添加“plugindir”,如下所示:

... --dvidir=DIR dvi 文档 [DOCDIR] --pdfdir=DIR pdf 文档 [DOCDIR] --psdir=DIR ps 文档 [DOCDIR] --plugindir=DIR Gedit 插件文件 [LIBDIR/gedit-2/plugins] ...

以便用户能够将--plugindir=... 传递给配置脚本。

我该怎么做?

【问题讨论】:

标签: installation autoconf configure automake make-install


【解决方案1】:

将以下几行放在configure.ac 的开头附近:

AC_ARG_WITH([pkgconfigdir],
  [AS_HELP_STRING([--with-pkgconfigdir=DIR], [pkgconfig files])],
  [pkgconfigdir=$withval],
  [pkgconfigdir="\${libdir}/pkgconfig"])
AC_SUBST([pkgconfigdir], [$pkgconfigdir])

然后,在Makefile.am,你可以像这样引用目录:

pkgconfigdir = @pkgconfigdir@
pkgconfig_DATA = mylibrary.pc

【讨论】:

  • 不需要第二个参数。不需要pkgconfigdir = @pkgconfigdir@。很高兴在帮助中指定默认值。您可以使用单引号而不是转义 $
【解决方案2】:

如果我是正确的,这些路径是在 share/autoconf/autoconf/general.m4 文件中设置的。该列表是硬编码的,因此很难在列表中插入内容。您可以使用宏 AS_HELP_STRING 添加额外的帮助信息。 有一些添加插件目录的示例,例如gstreamergimp,但这些示例没有可配置的插件目录。

【讨论】:

  • 有趣。我的/usr/share/autoconf/autoconf/general.m4 文件的第1058 行负责“安装目录的微调:”行。但是,似乎我可以在不修改general.m4 的情况下轻松添加到configure 脚​​本帮助文本的“安装目录”部分。但是,至少我现在知道了。
  • 我不确定您指的是哪种 gstreamer 和 xine 方法。但是,我所做的是从general.m4 中改编了一行,将AC_SUBST([plugindir], ['${libdir}/gedit-2/plugins']) 添加到我的configure.ac 中。然后,我在Makefile.amplugin_DATA 变量中指定要安装到“plugindir”的目标。它不像我最初想要的那样由用户配置,但效果很好:code.google.com/p/gedit-line-ending-style-plugin/source/browse/…
  • gstreamer 和 xine 都没有按照 OP 的要求进行操作。两者都设置了插件路径,用户无需指定任何方式。我认为允许用户在配置时指定插件路径的唯一方法是滥用 AC_ARG_WITH,它将文档放在“可选包”而不是“微调安装目录”下。
  • general.m4是autoconf的内部文件,不要乱用。链接已失效。但据我所知,每个人都使用AC_ARG_WITH。如果不修改 Autoconf,就不可能添加不带“with”或“enable”的参数。
【解决方案3】:

我认为你在 AC_SUBST 上是正确的。

此外,我认为您可以使用 AS_HELP_STRING 修改或扩展 configure 的 --help 输出。

见:http://www.gnu.org/s/hello/manual/autoconf/Pretty-Help-Strings.html

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2011-01-04
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多