find_package(Boost) 返回空的 Boost_LIBRARIES

Posted

技术标签:

【中文标题】find_package(Boost) 返回空的 Boost_LIBRARIES【英文标题】:find_package(Boost) returns empty Boost_LIBRARIES 【发布时间】:2017-08-12 08:36:40 【问题描述】:

cmake 版本 3.8.2

我有一个奇怪的问题。当我执行find_package(Boost) 时,Boost_LIBRARIES 为空。但是当我执行find_package(Boost REQUIRED filesystem) 时,Boost_LIBRARIES 变量会显示相应的库。

在这两种情况下,都找到了 Boost,因为它显示 Boost 版本是 1.64。

需要的

-- Boost version: 1.64.0
-- Found the following Boost libraries:
--   filesystem
--   system
       Boost_INCLUDE_DIRS: /usr/local/include
       OpenCV_INCLUDE_DIRS: /usr/local/include;/usr/local/include/opencv
       Boost_LIBRARIES: /usr/local/lib/libboost_filesystem.so;/usr/local/lib/libboost_system.so
       OpenCV_LIBRARIES: opencv_calib3d;opencv_core;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab

不需要

-- Boost version: 1.64.0
       Boost_INCLUDE_DIRS: /usr/local/include
       OpenCV_INCLUDE_DIRS: /usr/local/include;/usr/local/include/opencv
       Boost_LIBRARIES: 
       OpenCV_LIBRARIES: opencv_calib3d;opencv_core;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab

boost 库是否应该像 opencv 一样只显示库而不是整个路径?

虽然我在同一个文件夹中有 program_options,但 Boost 找不到它并且 cmake 会抛出错误。

  Could not find the following Boost libraries:

          boost_program_options

请看 ll。

truncated ll output.....
-rw-r--r-- 1 root root 1558464 Aug 12 06:23 /usr/local/lib/libboost_program_options.a
lrwxrwxrwx 1 root root      34 Aug 12 06:23 /usr/local/lib/libboost_program_options.so -> libboost_program_options.so.1.64.0*
-rwxr-xr-x 1 root root  658920 Aug 12 06:23 /usr/local/lib/libboost_program_options.so.1.64.0*

【问题讨论】:

【参考方案1】:

无论 REQUIRED 是否存在,它始终为空。

Mac High Sierra/CMake 3.10.1。

这似乎是 FindBoost.cmake 的一个错误

【讨论】:

cmake 是否显示 Boost 版本,如 Boost 版本:1.64.0?顺便说一句,您应该在评论中写下您的帖子,因为它不是答案。 @infoclogged 是的。 CMake 找到了正确的 boost 版本并将其显示在控制台中。 这可能就是答案。 现在我使用的是 1.66,但我仍然有这个问题。 @neckTwi 我没有这个问题,当我写 REQUIRED 关键字时。当我不写 REQUIRED 关键字时,“仅”找不到 boost 库。

以上是关于find_package(Boost) 返回空的 Boost_LIBRARIES的主要内容,如果未能解决你的问题,请参考以下文章

clion中cmake导入的是哪个目录

CMake配置工程链接库

无法在 CMAKE 中链接 Boost

无法使用 Boost Spirit X3 解析空的 C++ 结构

Boost Read_graphml没有正确读取xml它给出了所有顶点但它们都是空的

Linux下使用CMake进行编译的时候寻找Boost库