如果缺少系统库,请使用本地库

时间:2013-03-25 15:27:10

标签: autotools autoconf automake gsl

我正在使用Autoconf和Automake工具,在ordrer中开发/分发我的应用程序。

现在一切正常。

我的应用程序依赖于GSL(GNU Scientific Library),因此在我的configure.ac中,我通过执行以下操作来搜索它:

PKG_CHECK_MODULES([GSL],[gsl])

但如果缺少GSL,则该过程无法继续。

我的想法如下:在distrubution档案中包含gsl-1.15.tar.gz,如下所示:

  • /
    • 的3rdParty /
      • GSL-1.15.tar.gz
    • 的src /
      • ...
    • configure.ac

并且,假设最终用户没有互联网连接或root访问权限,如果缺少GSL,他就无法继续。

是否可以在configure.ac中写入如果缺少GSL,则提取3rdParty / gsl-1.15.tar.gaz并指向提取的“include”和“lib”目录。

有可能吗?

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

由于大多数软件包都是压缩的tarball,我不认为gsl被分发为另一个tarball - 只需将源代码放在子目录中。然后可以使用configure.ac中的AC_CONFIG_SUBDIRS配置GSL包。


PKG_CHECK_MODULES的默认操作是在未找到时中止。要改变这个:

PKG_CHECK_MODULES([GSL], [gsl >= 1.15], [gsl_pkg_local=;],
                  [gsl_pkg_local="yes"])

if test "x$gsl_pkg_local" != "xyes" ; then
    AC_CONFIG_SUBDIRS([gsl-1.15])
fi

这假设您在顶级有gsl-1.15目录。 gsl_pkg_local变量名称也没什么特别之处 - 所以你可以根据自己的需要改变这些东西。