有没有办法摆脱“新 Boost 版本可能有不正确或缺失的依赖项和导入的目标”警告?

Jig*_*orp 13 boost cmake

我正在使用 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 的同时禁用此警告?

小智 13

cmake ... -DBoost_NO_WARN_NEW_VERSIONS=1
Run Code Online (Sandbox Code Playgroud)


Oct*_*los 9

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,你也不会再看到警告。


Nat*_*man 5

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

它不会改变任何东西,只需继续或降级您的升压安装即可。

  • 那么,如何删除该警告呢? (8认同)