我正在使用 CMake 和 Boost。我正在使用 Boost 1.68.0 和 CMake 3.11.0。我无法升级到较新版本的 CMake,因为 cotire 会阻止在 CMake 3.12.0 及更高版本上生成 moc 文件。但是,这会导致以下警告:New Boost version may have incorrect or missing dependencies and imported targets. 一切正常,它找到了正确的文件,但这个警告很烦人。有没有办法在保留当前版本的 Boost 和 CMake 的同时禁用此警告?
Ying Dai的解决方案非常好,我想对其进行一些扩展。在我的 .cmake 文件中进行字符串搜索后,我发现 FindBoost.cmake 包含这些行:
if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.79.0 AND NOT Boost_NO_WARN_NEW_VERSIONS)
message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
endif()
Run Code Online (Sandbox Code Playgroud)
我不想更改该文件,因为它稍后可能会被覆盖,也许我仍然希望默认情况下发出警告,因此我认为最优雅的修复方法是添加到set(Boost_NO_WARN_NEW_VERSIONS 1)项目的 CMakeLists.txt 中,所以我的看起来就像顶部的那样:
project("main")
set(CMAKE_CXX_STANDARD 20)
set(Boost_NO_WARN_NEW_VERSIONS 1)
Run Code Online (Sandbox Code Playgroud)
那么即使你使用 CMake gui,你也不会再看到警告。
当我尝试使用 Boost 1.80.0 和较旧的 CMake 版本构建一个简单的项目时,我遇到了这个确切的警告。事实证明,FindBoost.cmake3.24.2 之前版本中包含的文件不能正确支持 Boost 1.80.0。
在CMake 3.24.2 的发行说明中,我们找到了以下条目:
“FindBoost:添加对 Boost 1.80 的支持”
升级到3.24.2后,警告消失了。
小智 2
由于您已经安装了最新版本的 Boost,如果我们查看引发此错误的行,我们会发现:
if(NOT Boost_VERSION VERSION_LESS 107100)
message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
endif()
Run Code Online (Sandbox Code Playgroud)
它不会改变任何东西,只需继续或降级您的升压安装即可。
| 归档时间: |
|
| 查看次数: |
7614 次 |
| 最近记录: |