【问题标题】:Checking for header-only library in autoconf在 autoconf 中检查仅标头库
【发布时间】:2013-07-26 07:49:17
【问题描述】:

我知道如何在我的 configure.ac 文件中检查函数、库和模块。但我不知道如何检查是否存在仅标头库。

假设我想用 C++ 编写一个项目并且我想使用一个头库,例如一个 C++ 模板。例如,提升哈希。它是 Boost 对 std::hash 的扩展。

检查 configure.ac 是否安装了 Boost Hash 的标准方法是什么?我在寻找答案,但我发现的只是检查特定的头文件或库,而我需要的是检查是否存在 头文件库

在 Autoconf 中是否有标准的方法可以做到这一点,或者我需要手动检查我需要的标题,一个一个?

我发现了几个 M4 宏来测试是否存在 Boost 库,但这是特定于 Boost 的解决方案。我如何处理其他头库,比如我自己编写的头库?

【问题讨论】:

    标签: c++ templates header autotools autoconf


    【解决方案1】:

    这主要取决于您的需求...但是,检查每个头文件并不是一个好主意(因为,在提升的情况下,可能需要很长时间 :)。

    如果您的软件需要这个库,您可以检查最重要的标题。您甚至可以尝试构建一个示例程序,以检查一切是否正常。例如,它可能会#include smth 并且只打印一个库版本(如果需要,可以进一步检查)......如果失败,您必须发出错误。如果这个库是可选的,你可以发出警告/信息/随便什么,并在你生成的config.h 文件中定义HAS_BLAH_BLAH,然后在#include 之前检查这个定义——但无论如何,尝试构建更简单的例子—— - 这比检查所有库的标题是否存在要好...

    【讨论】:

    • 非常好的主意...但是为此编写一个带有参数的通用宏可能是值得的。或者允许头库以类似于 pkgconfig 文件的方式提供接口。我会尝试:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2015-01-23
    相关资源
    最近更新 更多