Installation 向Autoconf生成的配置脚本添加自定义安装目录选项

Installation 向Autoconf生成的配置脚本添加自定义安装目录选项,installation,autoconf,configure,automake,make-install,Installation,Autoconf,Configure,Automake,Make Install,configure脚本在帮助消息中始终包含以下内容: ... By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For bett

configure
脚本在帮助消息中始终包含以下内容:

... By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gedit-line-ending-style-plugin] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names ... ... 默认情况下,“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只读单机数据[前缀/etc] --sharedstatedir=DIR可修改体系结构独立数据[PREFIX/com] --localstatedir=DIR可修改的单机数据[前缀/var] --libdir=DIR对象代码库[EPREFIX/lib] --includedir=DIR C头文件[前缀/包含] --oldincludedir=DIR非gcc的C头文件[/usr/include] --datarootdir=DIR只读arch.-独立数据根[前缀/共享] --datadir=DIR只读架构独立数据[DATAROOTDIR] --infodir=DIR信息文档[DATAROOTDIR/info] --localedir=DIR依赖于区域设置的数据[DATAROOTDIR/locale] --mandir=DIR-man文档[DATAROOTDIR/man] --docdir=DIR文档根目录 [DATAROOTDIR/doc/gedit行结束样式插件] --htmldir=DIR html文档[DOCDIR] --dvidir=DIR dvi文档[DOCDIR] --pdfdir=DIR pdf文档[DOCDIR] --psdir=DIR ps文档[DOCDIR] 程序名称: --program prefix=为已安装的程序名添加前缀前缀 ... 我想做的是在本节中添加“plugindir”,如下所示:

... --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] --plugindir=DIR Gedit plugin files [LIBDIR/gedit-2/plugins] ... ... --dvidir=DIR dvi文档[DOCDIR] --pdfdir=DIR pdf文档[DOCDIR] --psdir=DIR ps文档[DOCDIR] --plugindir=DIR-Gedit插件文件[LIBDIR/Gedit-2/plugins] ... 这样用户就可以将
--plugindir=…
传递到配置脚本


如何执行此操作?

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

我认为你使用AC_SUBST的方法是正确的

此外,我认为您可以修改或扩展configure with AS_help_字符串的--help输出


请参阅:

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

有趣。我的
/usr/share/autoconf/autoconf/general.m4
文件的第1058行负责“安装目录的微调:”行。但是,我似乎无法轻松添加到
configure
脚本帮助文本的“安装目录”部分,而无需修改
general.m4
。但是,至少我现在知道了。我不确定你指的是gstreamer和xine的哪种方法。但是,我做的是修改了
general.m4
中的一行,将
AC_SUBST([plugindir],“${libdir}/gedit-2/plugins]”)添加到我的
configure.AC
。然后,在
Makefile.am
中的
plugin\u DATA
变量中指定要安装到“plugindir”的目标。它不像我最初想要的那样是用户可配置的,但是它工作得很好:gstreamer和xine都没有按照OP的要求来做。两者都设置了插件路径,用户无法指定。我能看到的允许用户在配置时指定插件路径的唯一方法是滥用AC_ARG_WITH,它将文档放在“可选包”下,而不是“安装目录的微调”。general.m4是autoconf的内部文件,不要弄乱它。链接已断开。但在我看来,每个人都使用
AC\u ARG\u和
。如果不修改Autoconf,则无法添加不带“with”或“enable”的参数。不需要第二个参数
pkgconfigdir=@pkgconfigdir@
不需要。最好在帮助中指定默认值。您可以使用单引号而不是转义
$
。的可能重复项