代码之家  ›  专栏  ›  技术社区  ›  Daniel Trebbien

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

  •  6
  • Daniel Trebbien  · 技术社区  · 15 年前

    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
    ...
    

    我想做的是将“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]
    ...
    

    这样用户就可以通过 --plugindir=... 配置脚本。

    我该怎么做?

    3 回复  |  直到 10 年前
        1
  •  0
  •   SiggyF    10 年前

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

        2
  •  3
  •   Roland Illig    11 年前

    输入以下行 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
    
        3
  •  0
  •   hookenz    14 年前

    我认为你在AC-SUBST的正确轨道上。

    另外,我认为您可以修改或扩展configure的--help输出,并将其扩展为\uhelp_字符串。

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

    推荐文章