CMake找到Boost但导入的目标不适用于Boost版本

时间:2017-02-08 21:00:34

标签: boost cmake

我使用CMake找到Boost。找到了Boost,但CMake出错

  

导入的目标不适用于Boost版本

请参阅下面的完整错误(来自macOS)。我做错了什么?

CMake Warning at /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:743 (message):
  Imported targets not available for Boost version 106300
Call Stack (most recent call first):
  /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:842 (_Boost_COMPONENT_DEPENDENCIES)
/Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:1395 (_Boost_MISSING_DEPENDENCIES)
CMakeLists.txt:6 (find_package)

Boost version: 1.63.0
Found the following Boost libraries:
  thread
CMake Warning at /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:743 (message):
  Imported targets not available for Boost version 106300
Call Stack (most recent call first):
  /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:842 (_Boost_COMPONENT_DEPENDENCIES)
  /Applications/CMake.app/Contents/share/cmake-3.6/Modules/FindBoost.cmake:1395 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:7 (find_package)

2 个答案:

答案 0 :(得分:94)

你的CMake版本太旧了。更新CMake,它会工作。

CMake无法检测不同Boost库之间的依赖关系。它们已在FindBoost中明确实施 对于每个Boost版本,这些信息都由CMake维护者添加,它将成为下一个CMake版本的一部分。因此,您必须确保您的CMake版本在您尝试查找的Boost版本之后发布。

Boost 1.63要求CMake 3.7或更高版本 Boost 1.64要求CMake 3.8或更高版本 升压1.65和1.65.1要求CMake 3.9.3或更高版本 Boost 1.66需要CMake 3.11或更新版本 Boost 1.67需要CMake 3.12或更新版本 Boost 1.68,1.69要求CMake 3.13或更高版本 Boost 1.70需要CMake 3.14或更新版本。

答案 1 :(得分:1)

我只想发布以下工作,因为它比我正在处理的系统上升级CMake要容易得多,因为我没有root / sudo访问权限。在调用CMake时直接设置BOOST_INCLUDEDIRBOOST_LIBRARYDIR

cmake  -DBOOST_INCLUDEDIR=... -DBOOST_LIBRARYDIR=... ...

如果Boost更改了CMake随附的模块中硬编码的列表与您正在使用的boost版本之间的依赖关系,则可能无效。你需要30秒才能尝试从30秒开始从源头安装cmake。