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

qqrboqgw  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(541)

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

kknvjkwl1#

您的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或更高版本。
Boost 1.77需要CMake 3.21.3或更高版本。
Boost 1.78需要CMake 3.22.2或更高版本。
Boost 1.79需要CMake 3.23.2或更高版本。
Boost 1.80需要CMake 3.24.2或更高版本。

不使用查找增强

从版本1.77开始,Boost提供了一个BoostConfig.cmake,它取代了FindBoost和所需的更改。

find_package(Boost CONFIG)

不排除FindBoost文件,只搜索配置文件。
为了兼容性,CMake将继续提供FindBoost。

iszxjhcz

iszxjhcz2#

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

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

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

相关问题