4

配置我的 CMake 项目时,我不断遇到这个问题:

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

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

CXX_VISIBILITY_PRESET
VISIBILITY_INLINES_HIDDEN

为了兼容性,CMake 不会为此目标兑现它们。此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

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

4

1 回答 1

2

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

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

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

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

cmake_policy(SET CMP0063 NEW)

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

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

于 2015-10-19T07:41:38.790 回答