find_package(Boost) 返回空的 Boost_LIBRARIES

inf*_*ged 5 boost

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
Run Code Online (Sandbox Code Playgroud)

不需要

-- 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
Run Code Online (Sandbox Code Playgroud)

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

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

  Could not find the following Boost libraries:

          boost_program_options
Run Code Online (Sandbox Code Playgroud)

请参阅 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*
Run Code Online (Sandbox Code Playgroud)

小智 3

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

Mac 高塞拉利昂/CMake 3.10.1。

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