配置我的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)
。
答案 0 :(得分:0)
当CMake的行为发生变化时,这些policy warnings会引入新的CMake版本。所以这个警告只是说你必须选择你想要的行为。
当引入新策略时,较新的CMake版本将开始警告向后兼容行为。
这些警告通常会在您使用此类功能时检测到。在您的情况下 - 政策CMP0063
- 我怀疑您已为某个图书馆目标设置了ENABLE_EXPORTS
。
所以 - 对于你的问题你想要哪一个 - 我也建议
cmake_policy(SET CMP0063 NEW)
因为OLD
仅适用于您依赖CXX_VISIBILITY_PRESET
和VISIBILITY_INLINES_HIDDEN
属性而非的情况,因为“来源可能会被编译为静态库或对象库,然后在以后链接到共享库“。
有关详细信息CXX_VISIBILITY_PRESET
和VISIBILITY_INLINES_HIDDEN
,请参阅