【问题标题】:How to determine the Boost library names for CMake如何确定 CMake 的 Boost 库名称
【发布时间】:2015-01-01 04:30:59
【问题描述】:

我正在尝试找出 CMakeList.txt 中 Find 的哪些组件用于 boost 库。

我查看了这个目录/usr/local/include/boost。我随机挑选了一些文件夹并尝试使用FIND_PACKAGE。以下这些都很好。

FIND_PACKAGE(Boost COMPONENTS thread system log log_setup
                    signals graph memory_order program_options REQUIRED)

我使用的是property_tree。它不起作用并产生以下错误消息:

/Applications/CMake.app/Contents/share/cmake-3.1/Modules/FindBoost.cmake:1182 处的 CMake 错误(消息):

找不到请求的 Boost 库。

增强版本:1.55.0

Boost 包含路径:/usr/local/include

找不到以下静态 Boost 库:

    boost_property_tree

谁能解释我如何或在哪里可以找到适合 boost 的库名称?

【问题讨论】:

    标签: boost cmake


    【解决方案1】:

    FIND_PACKAGECOMPONENTS 部分仅搜索已编译的库。它无法检查构成 Boost 主要部分的仅头文件库。只有少数库需要链接(主要是那些执行特定于平台的事情的库)。

    从您的示例中,只有threadsignals(与仅标题的signals2 相比)、systemprogram_options 需要预先构建,然后与您的程序链接。其余的,包含相关的头文件就足够了。

    因此,将${Boost_INCLUDE_DIRS} 添加到目标的包含目录就足够了。

    请参阅此处以获取这些库的列表Which boost libraries are header-only?

    【讨论】:

      【解决方案2】:

      如果 boost 库被编译,那么组件名称基本上是没有前缀和后缀的库的小写名称(例如 boost_system-vc141-mt-x64-1_66.lib 它将是 'system')

      另见此处:https://cmake.org/cmake/help/v3.10/module/FindBoost.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-18
        • 2019-12-13
        • 2018-07-10
        • 1970-01-01
        相关资源
        最近更新 更多