2015-10-17 287 views
1

我不断地得到这个问题,当我的配置CMake的项目:摆脱CMake的CMP0063警告

CMake的警告(DEV)的例子/的CMakeLists.txt:74(ADD_EXECUTABLE):
政策CMP0063未设置:荣誉所有目标 类型的可见性属性。有关策略详细信息,请运行“cmake --help-policy CMP0063”。使用 cmake_policy命令设置策略并取消此警告。的类型“可执行”

目标“Protonect”具有以下能见度
属性CXX设置:

CXX_VISIBILITY_PRESET 
VISIBILITY_INLINES_HIDDEN 

出于兼容性CMake的不履行他们的这一目标。这个 警告是针对项目开发者的。使用-Wno-dev来抑制它。

我知道我想打电话给cmake_policy(SET CMP0063 NEW) - 我正在做,但当时我不知道我应该如何使用add_executable(Protonect)

回答

0

这些类型的policy warnings在CMake行为发生更改时引入了新的CMake版本。所以这个警告只是说你必须选择你想要的行为。

当新政策出台后,新的CMake版本将开始警告后向兼容的行为。

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

所以 - 你的问题哪一个你想要的 - 我还建议

cmake_policy(SET CMP0063 NEW) 

因为OLD只能适用情况下,你依赖于CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN性能荣获“来源可能被编译为静态库或对象库的一部分,然后再链接到共享库“。

有关详细信息CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN也看到