CMP0063

从 3.3 版开始添加。

针对所有目标类型,尊重可见性属性。

目标属性 <LANG>_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN 会在动态链接过程中影响符号的可见性。这些属性在首次引入时仅影响共享库、模块库以及拥有 ENABLE_EXPORTS 属性的,带有插件的可执行文件中的源代码编译。这对于共享库和可执行文件(以及插件)的基本用例已经足够。但是,一些源代码可能需要先编译成静态库或对象库,然后才能链接到共享库中。CMake 3.3 及更高版本更愿意尊重在所有目标类型中编译的源代码的这些属性。此策略保持了只期待属性对某些目标类型起作用的项目的兼容性。

针对此策略,OLD 行为会忽略静态库、对象库以及不含导出的可执行文件的可见性属性。NEW 行为针对所有目标类型尊重可见性属性。

此策略是在 CMake 3.3 版本中引入的。它可通过 cmake_policy()cmake_minimum_required() 来设置。如果没有设置,CMake 会发出警告并使用 OLD 行为。

注意

OLD 策略的行为 默认 弃用 并且可能会在将来版本的 CMake 中删除。