Hi, ECM's KDECompilerSettings.cmake contains: # Default to hidden visibility for symbols set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
This raises a warning [1] for CMake 3.3+ and ignores this. Don't we want to set the old policy CMP0063 for now? Or even prepare for removal of CMP0063 (see [2])? I know, that would not be very soon. [1] share/ECM/modules/ECMAddTests.cmake:97 (add_executable): Policy CMP0063 is not set: Honor visibility properties for all target types. Run "cmake --help-policy CMP0063" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Target "PluginsTest" of type "EXECUTABLE" has the following visibility properties set for CXX: CXX_VISIBILITY_PRESET VISIBILITY_INLINES_HIDDEN For compatibility CMake is not honoring them for this target. [2] CMP0063 ------- Honor visibility properties for all target types. The ``<LANG>_VISIBILITY_PRESET`` and ``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 ``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 3.3.0 warns when the policy is not set and uses ``OLD`` behavior. Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW`` explicitly. .. note:: The ``OLD`` behavior of a policy is ``deprecated by definition`` and may be removed in a future version of CMake. -- regards, Jaroslaw Staniek KDE: : A world-wide network of software engineers, artists, writers, translators : and facilitators committed to Free Software development - http://kde.org Calligra Suite: : A graphic art and office suite - http://calligra.org Kexi: : A visual database apps builder - http://calligra.org/kexi Qt Certified Specialist: : http://www.linkedin.com/in/jstaniek