摆脱 CMake CMP0063 警告

Bra*_*cia 5 visibility cmake deprecation-warning

配置 CMake 项目时,我不断遇到此问题:

example/CMakeLists.txt:74 (ADD_EXECUTABLE) 处的 CMake 警告 (dev):
未设置策略 CMP0063:尊重所有目标类型的可见性属性。运行“cmake --help-policy CMP0063”以获取策略详细信息。使用 cmake_policy 命令设置策略并抑制此警告。


“EXECUTABLE”类型的目标“Protonect”为 CXX 设置了以下可见性属性:

CXX_VISIBILITY_PRESET
VISIBILITY_INLINES_HIDDEN
Run Code Online (Sandbox Code Playgroud)

为了兼容性,CMake 不会为此目标尊重它们。此警告是针对项目开发人员的。使用 -Wno-dev 来抑制它。

我知道我想打电话cmake_policy(SET CMP0063 NEW)- 我正在这样做,但我不确定我应该如何使用add_executable(Protonect).

Flo*_*ian 2

当 CMake 的行为发生更改时,新的 CMake 版本会引入此类策略警告。所以这个警告只是说你必须选择你想要的行为。

当引入新策略时,较新的 CMake 版本将开始警告向后兼容行为。

这些警告通常会检测您何时使用此类功能。就你而言 - 政策CMP0063- 我怀疑你已经ENABLE_EXPORTS为你的图书馆目标之一设定了。

所以 - 对于你的问题你想要哪一个 - 我也会推荐

cmake_policy(SET CMP0063 NEW)
Run Code Online (Sandbox Code Playgroud)

因为OLD仅适用于您依赖它CXX_VISIBILITY_PRESET并且VISIBILITY_INLINES_HIDDEN属性被尊重的情况,因为“源可能被编译为静态库或对象库的一部分,然后稍后链接到共享库”。

有关更多详细信息CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN另请参阅