如何确定CMake的Boost库名称

时间:2014-11-05 03:57:28

标签: boost cmake

我正在尝试找出Find库中CMakeList.txt中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库。

     

Boost版本:1.55.0

     

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

     

找不到以下静态Boost库:

    boost_property_tree

有谁可以解释我如何或在哪里可以找到适当的库名称进行提升?

2 个答案:

答案 0 :(得分:20)

COMPONENTS的{​​{1}}部分仅搜索已编译的库。它无法检查构成Boost主要部分的仅包含头的库。只有少数库需要链接(主要是那些执行特定于平台的事物)。

在您的示例中,只有FIND_PACKAGEthread(与仅为标题的signals相比),signals2system需要构建事先,然后与您的程序链接。对于其余部分,包含相关的头文件就足够了。

因此,将program_options添加到目标的包含目录就足够了。

请点击此处查看这些图书馆的图书馆列表Which boost libraries are header-only?

答案 1 :(得分:2)

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

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