diff options
author | Brad King <brad.king@kitware.com> | 2019-06-04 13:55:17 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-06-04 14:37:29 (GMT) |
commit | 4272297b6ea84eec87d596f970b5ba4f9516f424 (patch) | |
tree | 5e0e3dc6760fd9c16288598e82d834b9aaaeaa8b | |
parent | 01d5730411561b7278d0350dffb8b7dd89ac8970 (diff) | |
download | CMake-4272297b6ea84eec87d596f970b5ba4f9516f424.zip CMake-4272297b6ea84eec87d596f970b5ba4f9516f424.tar.gz CMake-4272297b6ea84eec87d596f970b5ba4f9516f424.tar.bz2 |
Help: Organize and revise 3.15 release notes
Add section headers similar to the 3.14 release notes and move each
individual bullet into an appropriate section. Revise a few bullets.
-rw-r--r-- | Help/release/3.15.rst | 440 |
1 files changed, 231 insertions, 209 deletions
diff --git a/Help/release/3.15.rst b/Help/release/3.15.rst index 5366ec7..2cff419 100644 --- a/Help/release/3.15.rst +++ b/Help/release/3.15.rst @@ -7,125 +7,190 @@ CMake 3.15 Release Notes Changes made since CMake 3.14 include the following. -* The :command:`execute_process` command gained a `COMMAND_ECHO` option - and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable - to enable echoing of the command-line string before execution. +New Features +============ -* New target property :prop_tgt:`ADDITIONAL_CLEAN_FILES` and directory property - :prop_dir:`ADDITIONAL_CLEAN_FILES` were added. They allow to register - additional files that should be removed during the clean stage. +Generators +---------- -* Directory property :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` was marked - deprecated. The new directory property :prop_dir:`ADDITIONAL_CLEAN_FILES` - should be used instead. +* The :generator:`Xcode` generator now supports per-target schemes. + See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and + :prop_tgt:`XCODE_GENERATE_SCHEME` target property. -* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the - compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`. +* The :generator:`Green Hills MULTI` generator has been updated: -* :command:`add_library` command ``ALIAS`` option learned to support - import libraries of the ``UNKNOWN`` type. + * It now supports the :command:`add_custom_command` and + :command:`add_custom_target` commands. + + * It is now available on Linux. + +Languages +--------- + +* Preliminary support for the ``Swift`` language was added to the + :generator:`Ninja` generator: + + * Use the :envvar:`SWIFTC` environment variable to specify a compiler. + + * The :prop_tgt:`Swift_DEPENDENCIES_FILE` target property and + :prop_sf:`Swift_DEPENDENCIES_FILE` source file property were added + to customize dependency files. -* AppleClang compiler have learned how to compile C++20. + * The :prop_tgt:`Swift_MODULE_NAME` target property was added to + customize the Swift module name. -* Support for the Clang-based ARM compiler was added with compiler id ``ARMClang``. + * The :prop_sf:`Swift_DIAGNOSTICS_FILE` source property was added to + indicate where to write the serialised Swift diagnostics. + + The Swift support is experimental, not considered stable, and may change + in future releases of CMake. + +Compilers +--------- * The ``Clang`` compiler variant on Windows that targets the MSVC ABI but has a GNU-like command line is now supported. -* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered - deprecated. Support still exists but will be removed in future versions. - -* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support for - multiple targets, e.g. ``cmake --build . --target Library1 Library2``. +* Support for the Clang-based ARM compiler was added with compiler id + ``ARMClang``. -* The :manual:`cmake(1)` ``-E tar`` tool now continues adding files to an - archive, even if some of the files aren't readable. This behavior is more - consistent with the classic ``tar`` tool. +* Support was added for the IAR compiler architectures Renesas RX, + RL78, RH850 and Texas Instruments MSP430. -* The :manual:`cmake(1)` ``-E tar`` tool now parses all flags, and if an - invalid flag was provided, a warning is issued. -* The :manual:`cmake(1)` ``-E tar`` tool now displays an error if no action - flag was specified, along with a list of possible actions: ``t`` (list), - ``c`` (create) or ``x`` (extract). +* Support was added for the IAR compilers built for Linux (IAR BuildLx). -* The :manual:`cmake(1)` ``-E tar`` tool allow for extract (``-x``) or list - (``-t``) only specific files or directories. To select pathnames append - a space-separated list of file names or directories. - When extracting selected files or directories, you must provide their exact - pathname, as printed by list (``-t``) +Command-Line +------------ -* The :manual:`cmake(1)` ``-E tar`` tool now support Zstandard compression - algorithm with ``--zstd`` option. Zstandard was designed to give - a compression ratio comparable to that of the DEFLATE (zip) algorithm, - but faster, especially for decompression. +* The :envvar:`CMAKE_GENERATOR` environment variable was added + to specify a default generator to use when :manual:`cmake(1)` is + run without a ``-G`` option. Additionally, environment variables + :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`, + and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure + the generator. -* A :variable:`CMAKE_FRAMEWORK` variable was added to - initialize the :prop_tgt:`FRAMEWORK` property on all - targets. +* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support + for multiple targets, e.g. ``cmake --build . --target Library1 Library2``. + It now also has a short form ``-t`` alias, e.g. + ``cmake --build . -t Library1 Library2``. -* A new ``--install`` option was added to :manual:`cmake(1)`. +* The :manual:`cmake(1)` command gained a new ``--install`` option. This may be used after building a project to run installation without using the generated build system or the native build tool. +* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``. + +* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool learned + to support removing multiple directories. + +* The :manual:`cmake(1)` ``-E tar`` tool has been improved: + + * It now continues adding files to an archive even if some of the files + are not readable. This behavior is more consistent with the + classic ``tar`` tool. + + * It now parses all flags, and if an invalid flag was provided, a + warning is issued. + + * It now displays an error if no action flag was specified, along with a + list of possible actions: ``t`` (list), ``c`` (create) or ``x`` (extract). + + * It now supports extracting (``-x``) or listing (``-t``) only specific + files or directories. + + * It now supports Zstandard compression with a ``--zstd`` option. + Zstandard was designed to give a compression ratio comparable to that + of the DEFLATE (zip) algorithm, but faster, especially for decompression. + +Commands +-------- + +* The :command:`add_custom_command` and :command:`add_custom_target` commands + gained a new ``JOB_POOL`` option that works with the :generator:`Ninja` + generator to set the pool variable on the build statement. + +* The :command:`add_library` command ``ALIAS`` option learned to support + import libraries of the ``UNKNOWN`` type. + * The :command:`cmake_parse_arguments` command gained an additional ``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report keyword arguments that were given by the caller with no values. -* The :manual:`cmake(1)` ``--target`` parameter gained shorter - version ``-t``, e.g. ``cmake --build . -t Library1 Library2`` is - equivalant to ``cmake --build . --target Library1 Library2``. - -* The :cpack_gen:`CPack IFW Generator` gained a new - :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the - installer stylesheet. +* The :command:`execute_process` command gained a ``COMMAND_ECHO`` option + and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable + to enable echoing of the command-line string before execution. -* The :command:`ctest_submit` command learned a new option: ``BUILD_ID``. - This can be used to store the ID assigned to this build by CDash to a - variable. +* The :command:`file(INSTALL)` command learned a new argument, + ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and + install symlinks. -* The :command:`ctest_update` command learned to honor a new variable: - :variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify - the current version of your source tree rather than using the update - command to discover the current version that is checked out. +* :command:`list` learned new sub-commands: + ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``. -* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>`` - :manual:`generator expressions <cmake-generator-expressions(7)>` were added. +* The :command:`message` command learned new types: + ``NOTICE``, ``VERBOSE``, ``DEBUG`` and ``TRACE``. -* The :envvar:`CMAKE_GENERATOR` environment variable was added - to specify a default generator to use when :manual:`cmake(1)` is - run without a ``-G`` option. Additionally, environment variables - :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`, - and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure - the generator. +* The :command:`string` learned a new sub-command ``REPEAT``. -* An explicit deprecation diagnostic was added for policy ``CMP0066`` - (``CMP0065`` and below were already deprecated). - The :manual:`cmake-policies(7)` manual explains that the OLD behaviors - of all policies are deprecated and that projects should port to the - NEW behaviors. +Variables +--------- * The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding :prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support arguments to the emulator. -* The :module:`FindEnvModules` module was added to use Lua- and TCL-based - environment modules in :ref:`CTest Scripts <CTest Script>`. +* The :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable was added to tell + :command:`find_package` calls to look for a package configuration + file first even if a find module is available. -* The :command:`export(PACKAGE)` command now does nothing unless - enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`. - See policy :policy:`CMP0090`. +* The :variable:`CMAKE_FRAMEWORK` variable was added to initialize the + :prop_tgt:`FRAMEWORK` property on all targets. -* The :command:`file(INSTALL)` command learned a new argument, - ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and - install symlinks. +* The :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING` variable and + :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target property were added to + enable the Just My Code feature of the Visual Studio Debugger when + compiling with MSVC cl 19.05 and higher. -* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands - were changed to ignore empty arguments with a warning instead of treating - them as a relative path and removing the contents of the current directory. +* The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and + :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to + select the runtime library used by compilers targeting the MSVC ABI. + See policy :policy:`CMP0091`. + +* The :variable:`CMAKE_PROJECT_INCLUDE` and + :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables were added to allow + injection of custom code at the sites of :command:`project` calls + without knowing the project name a priori. + +Properties +---------- + +* The :prop_tgt:`ADDITIONAL_CLEAN_FILES` target property and + :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property were added. + They allow to register additional files that should be removed during + the clean stage. + +* The :prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` properties + may now be set on :ref:`Interface Libraries`. The headers specified by those + properties can be installed using the :command:`install(TARGETS)` command by + passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively. + +* The :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to + tell :ref:`Visual Studio Generators` to add references to ``nuget`` + packages. + +* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added to allow + managed Visual Studio project files to import external ``.props`` files. + +* The :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to + tell :ref:`Visual Studio Generators` whether to deploy an artifact + to the WinCE or Windows Phone target device. + +Modules +------- -* The :module:`FindBoost` module was reworked to expose a more - consistent user experience between its config and module modes - and with other find modules in general. +* The :module:`FindBoost` module was reworked to expose a more consistent + user experience between its "Config" and "Module" modes and with other + find modules in general. * A new imported target ``Boost::headers`` is now defined (same as ``Boost::boost``). @@ -135,46 +200,33 @@ Changes made since CMake 3.14 include the following. ``Boost_VERSION_PATCH``, and ``Boost_VERSION_COUNT`` were added. - * The internal logic for determining the value for - ``Boost_FOUND``, for version and component checks, and - for reporting the result to the user was replaced with - the :module:`FindPackageHandleStandardArgs` module. (This - fixed a bug that sometimes printed wrong status - messages in config mode.) - * The ``QUIET`` argument passed to :command:`find_package` is no - longer ignored in config mode. - - * *Known issue*: The CMake package shipped with Boost ``1.70.0`` - ignores the ``QUIET`` argument passed to :command:`find_package`. - This is fixed in the next Boost release. + longer ignored in config mode. Note that the CMake package shipped with + Boost ``1.70.0`` ignores the ``QUIET`` argument passed to + :command:`find_package`. This is fixed in the next Boost release. - * The input switch ``Boost_DETAILED_FAILURE_MSG`` was - removed. + * The input switch ``Boost_DETAILED_FAILURE_MSG`` was removed. * ``Boost_VERSION`` now reports the version in ``x.y.z`` format in module mode. See policy :policy:`CMP0093`. * The :module:`FindCups` module now provides imported targets. +* The :module:`FindEnvModules` module was added to use Lua- and TCL-based + environment modules in :ref:`CTest Scripts <CTest Script>`. + * The :module:`FindGLEW` module now provides an interface more consistent with what upstream GLEW provides in its own CMake package files. -* Variable :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` was added to tell - :command:`find_package` calls to look for a package configuration - file first even if a find module is available. +* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS` + property of imported targets with other (non-library) linker flags. * The :module:`FindPostgreSQL` module learned to find debug and release variants separately. * Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` - have changed default strategy for lookup. See policy :policy:`CMP0094`. - -* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` - gain a new variable to control frameworks lookup on macOS. - -* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` - gain a new way to control lookup strategy. + gained additional lookup strategies and controls, and a new default. + See policy :policy:`CMP0094`. * Modules :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3` gain a new target (respectively ``Python::Module``, ``Python2::Module`` @@ -183,143 +235,113 @@ Changes made since CMake 3.14 include the following. * Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` gain capability to control how virtual environments are handled. +* The :module:`UseSWIG` module learned to manage alternate library names + by passing ``-interface <library_name>`` for ``python`` language or + ``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG`` + compiler. + +Generator Expressions +--------------------- + * The :manual:`generator expressions <cmake-generator-expressions(7)>` ``C_COMPILER_ID``, ``CXX_COMPILER_ID``, ``CUDA_COMPILER_ID``, ``Fortran_COMPILER_ID``, ``COMPILE_LANGUAGE``, ``COMPILE_LANG_AND_ID``, and ``PLATFORM_ID`` learned to support matching one value from a comma-separated list. -* A new ``COMPILE_LANG_AND_ID`` generator expression was introduced to +* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>`` + :manual:`generator expressions <cmake-generator-expressions(7)>` were added. + +* The ``$<COMPILE_LANG_AND_ID:...>`` generator expression was introduced to allow specification of compile options for target files based on the :variable:`CMAKE_<LANG>_COMPILER_ID` and :prop_sf:`LANGUAGE` of each source file. -* A new ``$<FILTER:list,INCLUDE|EXCLUDE,regex>`` +* A ``$<FILTER:list,INCLUDE|EXCLUDE,regex>`` :manual:`generator expression <cmake-generator-expressions(7)>` has been added. -* New ``$<TARGET_FILE_BASE_NAME:...>``, ``$<TARGET_LINKER_FILE_BASE_NAME:...>`` - and ``$<TARGET_PDB_FILE_BASE_NAME:...>`` - :manual:`generator expressions <cmake-generator-expressions(7)>` have been - added to retrieve the base name of various artifacts. - -* New ``$<TARGET_FILE_PREFIX:...>``, ``$<TARGET_LINKER_FILE_PREFIX:...>``, - ``$<TARGET_FILE_SUFFIX:...>`` and ``$<TARGET_LINKER_FILE_SUFFIX:...>`` - :manual:`generator expressions <cmake-generator-expressions(7)>` have been - added to retrieve the prefix and suffix of various artifacts. - -* The :generator:`Green Hills MULTI` generator now supports - :command:`add_custom_command` and :command:`add_custom_target` - -* The :generator:`Green Hills MULTI` generator is now available on Linux. - -* Support was added for the IAR compiler architectures Renesas RX, - RL78, RH850 and Texas Instruments MSP430. -* The IAR compilers built for Linux (IAR BuildLx) now work as well. - -* ``INTERFACE`` library can now have :prop_tgt:`PUBLIC_HEADER` and - :prop_tgt:`PRIVATE_HEADER` properties set. The headers specified by those - properties can be installed using the :command:`install(TARGETS)` command by - passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively. - -* :command:`list` learned new sub-commands ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``. - -* The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and - :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to - select the runtime library used by compilers targeting the MSVC ABI. - See policy :policy:`CMP0091`. - -* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS` - no longer contains warning flags like ``/W3`` by default. - See policy :policy:`CMP0092`. +* A ``$<REMOVE_DUPLICATES:list>`` + :manual:`generator expression <cmake-generator-expressions(7)>` + has been added. -* The :command:`message` command learned new types: ``NOTICE``, ``VERBOSE``, - ``DEBUG`` and ``TRACE``. +* The ``$<SHELL_PATH:...>`` :manual:`generator expression + <cmake-generator-expressions(7)>` gained support for a list of paths. -* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``. +* New ``$<TARGET_FILE*>`` :manual:`generator expressions + <cmake-generator-expressions(7)>` were added to retrieve the prefix, base + name, and suffix of the file names of various artifacts: -* The commands :command:`add_custom_command` and :command:`add_custom_target` - gained a new ``JOB_POOL`` option that works with the :generator:`Ninja` - generator to set the pool variable on the build statement. + * ``$<TARGET_FILE_PREFIX:...>`` + * ``$<TARGET_FILE_BASE_NAME:...>`` + * ``$<TARGET_FILE_SUFFIX:...>`` + * ``$<TARGET_LINKER_FILE_PREFIX:...>`` + * ``$<TARGET_LINKER_FILE_BASE_NAME:...>`` + * ``$<TARGET_LINKER_FILE_SUFFIX:...>`` + * ``$<TARGET_PDB_FILE_BASE_NAME:...>`` -* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS` - property of imported targets with other (non-library) linker flags. +* The ``$<TARGET_OBJECTS:...>`` :manual:`generator expression + <cmake-generator-expressions(7)>` is now supported on ``SHARED``, + ``STATIC``, ``MODULE`` libraries and executables. -* A variable :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` was added to allow - injection of custom code before the :command:`project` call. +CTest +----- -* A variable :variable:`CMAKE_PROJECT_INCLUDE` was added to allow injection - of custom code into the project without knowing the project name a priori. +* The :command:`ctest_submit` command learned a new option: ``BUILD_ID``. + This can be used to store the ID assigned to this build by CDash to a + variable. -* The ``TARGET_OBJECTS`` :manual:`generator expression <cmake-generator-expressions(7)>` - is now supported on ``SHARED``, ``STATIC``, ``MODULE`` libraries and executables. +* The :command:`ctest_update` command learned to honor a new variable: + :variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify + the current version of your source tree rather than using the update + command to discover the current version that is checked out. -* The :manual:`cmake(1)` ``-E remove_directory`` command learned to support - removing multiple directories. +CPack +----- -* A new ``$<REMOVE_DUPLICATES:list>`` - :manual:`generator expression <cmake-generator-expressions(7)>` - has been added. +* The :cpack_gen:`CPack IFW Generator` gained a new + :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the + installer stylesheet. -* The :generator:`Xcode` generator now requires at least Xcode 5. +Deprecated and Removed Features +=============================== * The :manual:`cmake-server(7)` mode has been deprecated and will be removed from a future version of CMake. Please port clients to use the :manual:`cmake-file-api(7)` instead. -* The ``$<SHELL_PATH:...>`` :manual:`generator expression - <cmake-generator-expressions(7)>` gained support for a list of paths. - -* The :command:`string` learned a new sub-command ``REPEAT``. - -* SunPro compiler have learned how to compile C++14. - -* Preliminary support for the Swift language with the :generator:`Ninja` - generator was added. Use the :envvar:`SWIFTC` environment variable to - specify a compiler. +* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property is now + deprecated. Use the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property + instead. -* Support to emit an output file map was added to enable Swift compilation. - -* A target property :prop_tgt:`Swift_DEPENDENCIES_FILE` was added to targets to - indicate where to save the target swift dependencies file. If one is not - specified, it will default to `<TARGET>.swiftdeps`. - -* A target property :prop_tgt:`Swift_MODULE_NAME` was added to targets to - indicate the Swift module name. If it is not specified, it will default to - the name of the target. - -* A source property :prop_sf:`Swift_DEPENDENCIES_FILE` was added to sources to - indicate where to save the target swift dependencies file. If one is not - specified, it will default to `<OBJECT>.swiftdeps`. +* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered + deprecated. Support still exists but will be removed in future versions. -* A source property :prop_sf:`Swift_DIAGNOSTICS_FILE` was added to sources to - indicate where to write the serialised Swift diagnostics. +* The :command:`export(PACKAGE)` command now does nothing unless + enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`. + See policy :policy:`CMP0090`. -* The :module:`UseSWIG` module learned to manage alternate library names by - passing ``-interface <library_name>`` for ``python`` language or - ``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG`` - compiler. +* The :generator:`Xcode` generator now requires at least Xcode 5. -* A :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to - tell :ref:`Visual Studio Generators` to add references to nuget - packages. +* An explicit deprecation diagnostic was added for policy ``CMP0066`` + (``CMP0065`` and below were already deprecated). + The :manual:`cmake-policies(7)` manual explains that the OLD behaviors + of all policies are deprecated and that projects should port to the + NEW behaviors. -* For the :ref:`Visual Studio Generators`, - :ref:`Makefile Generators`, and the :generator:`Ninja` generators - the Just My Code feature of the Visual Studio Debugger can be - leveraged by turning on the :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target - property. Its default value is provided by the variable - :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING`. +Other Changes +============= -* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added which allows - to import external .props files in managed Visual Studio targets. +* CMake learned how to compile C++14 with the IBM AIX XL compiler + and the SunPro compiler and to compile C++20 with the AppleClang compiler. -* A :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to - tell :ref:`Visual Studio Generators` whether to deploy an artifact - to the WinCE or Windows Phone target device. +* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS` + no longer contains warning flags like ``/W3`` by default. + See policy :policy:`CMP0092`. -* The :generator:`Xcode` generator now supports per-target schemes. - See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and - :prop_tgt:`XCODE_GENERATE_SCHEME` target property. +* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the + compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`. -* IBM AIX XL compiler have learned how to compile C++14. +* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands + were changed to ignore empty arguments with a warning instead of treating + them as a relative path and removing the contents of the current directory. |