【问题标题】:How to get a configure script to look for a library如何获取配置脚本来查找库
【发布时间】:2010-12-02 20:13:49
【问题描述】:

我正在尝试编写一个 configure.ac 文件,以便生成的配置脚本搜索包含给定静态库的库目录,例如libsomething.a.我怎样才能做到这一点?目前我只检查一个位置:

AC_CHECK_FILE([/usr/local/lib/libsomething.a],[AC_SUBST(libsomething,"-L/usr/local/lib -lsomething")],[AC_SUBST(libcfitsio,'')])

但我希望它尝试自动找到它。如果该库不在默认位置之一,我想配置说未找到该库,并且可以像通常那样使用 --use-something=path 指定自定义位置。所以我还需要检查是否提供了 --use-something=path 。我在创建配置文件方面还很陌生,而且 M4 文档不是很容易理解,所以非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: autoconf configure


    【解决方案1】:

    configure 的工作不是搜索安装库的位置。它应该只确保它们对链接器可用。如果用户将它们安装在不同的位置,他知道如何调用./configure CPPFLAGS=-I/the/location/include LDFLAGS=-L/the/location/lib 以便工具找到库(这在configure--help 输出和标准INSTALL 文件中进行了解释)。

    另外,--with-package--enable-package 宏不应该用于指定路径,这与许多第三方宏的做法相反。 GNU Coding Standards 明确禁止这种用法:

    不要使用--with 选项 指定用于查找的文件名 某些文件。那超出了范围 --with 选项的用途。

    CPPFLAGSLDFLAGS 已经在这里解决问题,为什么要重新开发和维护另一个机制?

    【讨论】:

      【解决方案2】:

      解决这个问题的最佳方法是查看其他执行类似操作的 autoconf 宏。 Autoconf 宏是 Bourne shell 脚本和 M4 代码的混合体,因此它们可以真正解决任何可计算的问题。

      这是我为 MySQL++ 编写的宏的链接:mysql++.m4

      【讨论】:

      • 感谢示例脚本 - 我能够使用它来解决它!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 2016-07-18
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多