禁用 CMake 弃用警告

问题描述 投票:0回答:1

我正在使用带有

add_subdirectory
的第三方项目,另一个项目声明
cmake_minimum_required(VERSION 2.8.11)
,并且使用最近的 CMake 我得到:

CMake Deprecation Warning at External/libmsym/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.               
                                
  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

由于这是一个单独的项目(它作为 git 子模块获取)并且我没有写入权限,因此我无法真正按照建议解决问题。如果这是通过

ExternalProject
配置的,我可以使用
PATCH_COMMAND
功能,但我不认为在这种情况下我可以做类似的事情。除了为此挑剔创建一个分叉之外,还有其他方法可以禁用此警告或覆盖子目录中的
cmake_minimum_required
语句吗?

编辑:显然

CMAKE_WARN_DEPRECATED
-Wno-deprecated
可以做到这一点,但前者有一些奇怪(它必须保存在缓存中才能工作,请参阅Cannot set CMAKE_WARN_DEPRECATED inside the CMakeLists.txt),其中使得在本地切换特定的
add_subdirectory
变得很麻烦。

cmake
1个回答
0
投票

据我所知,您无法禁用此警告。这是使用

add_subdirectory
的缺点。他们的代码在某种程度上成为你的代码。它们的缓存变量与您的缓存变量混合。等等

这就是为什么像 vcpkg 和 conan 这样的包管理器非常好。使用

find_package
让您不必太关心项目 CMake 代码的质量。或者,如果他们使用的是真正旧式的 CMake(如本例所示)。

如果你需要的话,他们还有办法修补项目(我知道 vcpkg 可以,我假设 conan 也可以)。

此类功能可能会添加到

add_subdirectory
。毕竟在 3.25 中,他们添加了
SYSTEM
参数,以方便通过
add_subdirectory
使用第三方库。

但目前的答案是你要么必须修复项目,要么使用包管理器(这实际上只是为你隐藏警告,除非有人已经在他们的端口中修补了警告)。

© www.soinside.com 2019 - 2024. All rights reserved.