摆脱CMake CMP0063警告

时间:2015-10-17 00:53:25

标签: cmake visibility deprecation-warning

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

  

示例中的CMake警告(dev)/ CMakeLists.txt:74(ADD_EXECUTABLE):
   未设置策略CMP0063:所有目标的荣誉可见性属性    类型。运行" cmake --help-policy CMP0063"政策细节。使用    cmake_policy命令用于设置策略并禁止显示此警告。

     

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

CXX_VISIBILITY_PRESET
VISIBILITY_INLINES_HIDDEN
     

为了兼容性,CMake并不尊重这个目标。这个   警告是为项目开发人员。使用-Wno-dev来抑制它。

我知道我想拨打cmake_policy(SET CMP0063 NEW) - 我正在做的事情,但后来我不确定我应该如何使用add_executable(Protonect)

1 个答案:

答案 0 :(得分:0)

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

  

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

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

所以 - 对于你的问题你想要哪一个 - 我也建议

cmake_policy(SET CMP0063 NEW)

因为OLD仅适用于您依赖CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN属性而非的情况,因为“来源可能会被编译为静态库或对象库,然后在以后链接到共享库“。

有关详细信息CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN,请参阅