diff options
Diffstat (limited to 'Help')
-rw-r--r-- | Help/manual/cmake-policies.7.rst | 1 | ||||
-rw-r--r-- | Help/policy/CMP0063.rst | 26 | ||||
-rw-r--r-- | Help/prop_tgt/LANG_VISIBILITY_PRESET.rst | 6 | ||||
-rw-r--r-- | Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst | 6 | ||||
-rw-r--r-- | Help/release/dev/extend-visibility-properties.rst | 7 |
5 files changed, 42 insertions, 4 deletions
diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 2cc3a47..c5970bb 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -120,3 +120,4 @@ All Policies /policy/CMP0060 /policy/CMP0061 /policy/CMP0062 + /policy/CMP0063 diff --git a/Help/policy/CMP0063.rst b/Help/policy/CMP0063.rst new file mode 100644 index 0000000..298e9c2 --- /dev/null +++ b/Help/policy/CMP0063.rst @@ -0,0 +1,26 @@ +CMP0063 +------- + +Honor visibility properties for all target types. + +The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and +:prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties affect visibility +of symbols during dynamic linking. When first introduced these properties +affected compilation of sources only in shared libraries, module libraries, +and executables with the :prop_tgt:`ENABLE_EXPORTS` property set. This +was sufficient for the basic use cases of shared libraries and executables +with plugins. However, some sources may be compiled as part of static +libraries or object libraries and then linked into a shared library later. +CMake 3.3 and above prefer to honor these properties for sources compiled +in all target types. This policy preserves compatibility for projects +expecting the properties to work only for some target types. + +The ``OLD`` behavior for this policy is to ignore the visibility properties +for static libraries, object libraries, and executables without exports. +The ``NEW`` behavior for this policy is to honor the visibility properties +for all target types. + +This policy was introduced in CMake version 3.3. CMake version +|release| warns when the policy is not set and uses ``OLD`` behavior. Use +the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW`` +explicitly. diff --git a/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst b/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst index dfed1c4..5d34e20 100644 --- a/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst +++ b/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst @@ -5,7 +5,9 @@ Value for symbol visibility compile flags The ``<LANG>_VISIBILITY_PRESET`` property determines the value passed in a visibility related compile option, such as ``-fvisibility=`` for ``<LANG>``. -This property only has an affect for libraries and executables with -exports. This property is initialized by the value of the +This property affects compilation in sources of all types of targets +(subject to policy :policy:`CMP0063`). + +This property is initialized by the value of the :variable:`CMAKE_<LANG>_VISIBILITY_PRESET` variable if it is set when a target is created. diff --git a/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst b/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst index 9a1c9c1..adbbc71 100644 --- a/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst +++ b/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst @@ -5,7 +5,9 @@ Whether to add a compile flag to hide symbols of inline functions The ``VISIBILITY_INLINES_HIDDEN`` property determines whether a flag for hiding symbols for inline functions, such as ``-fvisibility-inlines-hidden``, -should be used when invoking the compiler. This property only has an affect -for libraries and executables with exports. This property is initialized by +should be used when invoking the compiler. This property affects compilation +in sources of all types of targets (subject to policy :policy:`CMP0063`). + +This property is initialized by the value of the :variable:`CMAKE_VISIBILITY_INLINES_HIDDEN` variable if it is set when a target is created. diff --git a/Help/release/dev/extend-visibility-properties.rst b/Help/release/dev/extend-visibility-properties.rst new file mode 100644 index 0000000..6b4489d --- /dev/null +++ b/Help/release/dev/extend-visibility-properties.rst @@ -0,0 +1,7 @@ +extend-visibility-properties +---------------------------- + +* The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and + :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now + affect compilation in sources of all target types. See + policy :policy:`CMP0063`. |