【问题标题】:Get rid of CMake CMP0063 warning摆脱 CMake CMP0063 警告
【发布时间】:2016-01-15 20:38:33
【问题描述】:

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

示例/CMakeLists.txt:74 (ADD_EXECUTABLE) 中的 CMake 警告(开发):
未设置策略 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)

【问题讨论】:

    标签: cmake visibility deprecation-warning


    【解决方案1】:

    当 CMake 的行为发生变化时,这些policy warnings 会随着新的 CMake 版本引入。所以这个警告只是说你必须选择你想要的行为。

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

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

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

    cmake_policy(SET CMP0063 NEW)
    

    因为 OLD 仅适用于您依赖 CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN 属性的情况,支持“源可以作为静态库或对象库的一部分进行编译,并且然后稍后链接到共享库”。

    更多详情CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN另见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 2017-01-25
      相关资源
      最近更新 更多