我试图在CMakeList.txt中为boost库找出哪些组件要使用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
有人能解释我怎么或者在哪里找到正确的boost库名称吗?
发布于 2014-11-05 07:54:07
COMPONENTS部分FIND_PACKAGE仅搜索已编译的库。它无法检查只包含Boost主要部分的标头库。只有少数库需要链接(主要是那些执行特定于平台的事情的库)。
从您的示例来看,只需要预先构建thread、signals (与只使用标头的signals2相比)、system和program_options,然后与程序进行链接。对于其余部分,包含相关的头文件就足够了。
因此,将${Boost_INCLUDE_DIRS}添加到目标的包含目录就足够了。
有关这些库的Which boost libraries are header-only?的库列表,请参见此处
发布于 2018-03-22 12:10:10
如果编译了boost库,那么组件名称基本上是没有前缀和后缀的库的小写名称(例如,对于boost_system- be 141-mt-x64-1_66.lib,它将是'system')
还请参阅此处:https://cmake.org/cmake/help/v3.10/module/FindBoost.html
https://stackoverflow.com/questions/26749461
复制相似问题