给Autoconf生成的configure脚本添加自定义安装目录选项

7

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=DIR 非gcc的C头文件[/usr/include] --datarootdir=DIR 只读arch-independent data [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 安装的程序名称前缀 ...

我要做的是在此部分中添加"plugindir",如下所示:

...
  --dvidir=DIR            DVI文档[DOCDIR]
  --pdfdir=DIR            PDF文档[DOCDIR]
  --psdir=DIR             PS文档[DOCDIR]
  --plugindir=DIR         Gedit插件文件[LIBDIR/gedit-2/plugins]
...

这样用户就可以向配置脚本传递--plugindir=...

我该怎么做?


可能是Make install, but not to default directories?的重复问题。 - jww
3个回答

4

请将以下行放在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

1
第二个参数不是必需的。pkgconfigdir = @pkgconfigdir@ 不是必需的。在帮助中指定默认值很好。您可以使用单引号而不是转义 $ - proski

0

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


有趣。我的 /usr/share/autoconf/autoconf/general.m4 文件的第 1058 行负责 "Fine tuning of the installation directories:" 这一行。然而,似乎我不能轻松地在不修改 general.m4 的情况下添加到 configure 脚本帮助文本的 "installation directories" 部分。但是,至少我现在知道了。 - Daniel Trebbien
1
我不确定您所指的gstreamer和xine的哪种方法。但是,我的做法是从general.m4中适应了一行代码,将AC_SUBST([plugindir], ['${libdir}/gedit-2/plugins'])添加到我的configure.ac中。然后,在Makefile.am中的plugin_DATA变量中指定我要安装到“plugindir”的目标。虽然它不像我最初想要的那样用户可配置,但它运行良好:http://code.google.com/p/gedit-line-ending-style-plugin/source/browse/trunk/src/Makefile.am - Daniel Trebbien
无论是gstreamer还是xine都不能满足OP的要求。两者都设置插件路径,没有任何用户指定的方式。我唯一能想到的允许用户在配置时指定插件路径的方法是滥用AC_ARG_WITH,这将把文档放在“可选包”而不是“安装目录的微调”下。 - jtniehof
general.m4 是 autoconf 的内部文件,请勿更改。链接已失效。但从我所见,每个人都使用 AC_ARG_WITH。如果没有修改 Autoconf,则无法添加不带 "with" 或 "enable" 的参数。 - proski

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接