Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake找到Boost,但导入的目标不适用于Boost版本_Boost_Cmake - Fatal编程技术网

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

CMake找到Boost,但导入的目标不适用于Boost版本,boost,cmake,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 S

我使用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)

您的CMake版本太旧。更新CMake,它就会工作

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

Boost 1.63需要CMake 3.7或更新版本。
Boost 1.64需要CMake 3.8或更高版本。
Boost 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或更新版本。
Boost 1.71需要CMake 3.15.3或更新版本。
Boost 1.72需要CMake 3.16.2或更新版本。
Boost 1.73需要CMake 3.17.2或更新版本。
Boost 1.74需要CMake 3.19或更高版本。
Boost 1.75需要CMake 3.19.5或更新版本。
Boost 1.76需要CMake 3.20.3或更新版本

没有FindBoost 从1.70版开始,Boost提供了一个
BoostConfig.cmake
,它淘汰了FindBoost和所需的更改。使用

find_package(Boost CONFIG)

不排除FindBoost文件,只搜索配置文件,但由于它会破坏对1.70之前版本的支持,CMake正在等待完成这一步。不过,这是在将来的CMake发行版中摆脱版本混乱的方法。

我只是想发布以下解决方法,因为这比在我没有root/sudo访问权限的系统上升级CMake要容易得多。调用CMake时直接设置
BOOST\u INCLUDEDIR
BOOST\u LIBRARYDIR

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

如果Boost更改了CMake附带的模块中硬编码的列表与您正在使用的Boost版本之间的依赖关系,则这可能不起作用。尝试从源代码安装cmake需要30秒,而从源代码安装cmake需要30分钟。

您需要cmake 3.7进行最新的升级。我编辑了您的问题,因为每个升级版本都会问这个问题。也许更多的人会发现你的问题是这样的。非常感谢。CLion的2016.3捆绑版CMake 3.6.3使用此命令失败。现在我使用
/usr/bin/CMake
中的系统cmake3.7.2,有时你可能会很幸运。我收到了“导入的目标不可用”警告,但仍然可以构建我的项目(CMake 3.6.2,Boost 1.64.0)。我怀疑是因为我使用的库(文件系统、系统、python、单元测试框架)自1.62版本(CMake 3.6知道的最高版本)以来,依赖关系没有改变。我有Boost 1.64和CMake 3.8,但仍然得到消息1.68与3.12一起工作。另外,这是一个非常迟钝的系统。boost 1.67不适用于我的cmake 3.12,它是一个迟钝的系统,特别是如果没有类似“你需要一个更新版本的cmake来支持你的boost”这样的错误,那么它就成功了。但这不是一个普遍的解决办法。如果添加了新库或删除了现有库,则该功能将无法工作。