我使用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)
答案 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_INCLUDEDIR
和BOOST_LIBRARYDIR
。
cmake -DBOOST_INCLUDEDIR=... -DBOOST_LIBRARYDIR=... ...
如果Boost更改了CMake随附的模块中硬编码的列表与您正在使用的boost版本之间的依赖关系,则可能无效。你需要30秒才能尝试从30秒开始从源头安装cmake。