CMP0063¶
从 3.3 版开始添加。
针对所有目标类型,尊重可见性属性。
目标属性 <LANG>_VISIBILITY_PRESET
和 VISIBILITY_INLINES_HIDDEN
会在动态链接过程中影响符号的可见性。这些属性在首次引入时仅影响共享库、模块库以及拥有 ENABLE_EXPORTS
属性的,带有插件的可执行文件中的源代码编译。这对于共享库和可执行文件(以及插件)的基本用例已经足够。但是,一些源代码可能需要先编译成静态库或对象库,然后才能链接到共享库中。CMake 3.3 及更高版本更愿意尊重在所有目标类型中编译的源代码的这些属性。此策略保持了只期待属性对某些目标类型起作用的项目的兼容性。
针对此策略,OLD
行为会忽略静态库、对象库以及不含导出的可执行文件的可见性属性。NEW
行为针对所有目标类型尊重可见性属性。
此策略是在 CMake 3.3 版本中引入的。它可通过 cmake_policy()
或 cmake_minimum_required()
来设置。如果没有设置,CMake 会发出警告并使用 OLD
行为。
注意
OLD
策略的行为 默认 已 弃用
并且可能会在将来版本的 CMake 中删除。