我正在尝试找出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
有谁可以解释我如何或在哪里可以找到适当的库名称进行提升?
答案 0 :(得分:20)
COMPONENTS
的{{1}}部分仅搜索已编译的库。它无法检查构成Boost主要部分的仅包含头的库。只有少数库需要链接(主要是那些执行特定于平台的事物)。
在您的示例中,只有FIND_PACKAGE
,thread
(与仅为标题的signals
相比),signals2
和system
需要构建事先,然后与您的程序链接。对于其余部分,包含相关的头文件就足够了。
因此,将program_options
添加到目标的包含目录就足够了。
请点击此处查看这些图书馆的图书馆列表Which boost libraries are header-only?
答案 1 :(得分:2)
如果编译了boost库,那么组件名称基本上是没有前缀和后缀的库的小写名称(例如对于boost_system-vc141-mt-x64-1_66.lib,它将是'system')