diff options
author | Brad King <brad.king@kitware.com> | 2019-10-04 15:41:08 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-10-07 14:45:05 (GMT) |
commit | a933d8d84e527b04920773d296b09bdcc0872ecf (patch) | |
tree | c27700b310bfda5bface01a9fe4bd28fd0b64f39 /Help | |
parent | 9c9a6e6023013ababfcc59ca9931c78c0512df1c (diff) | |
download | CMake-a933d8d84e527b04920773d296b09bdcc0872ecf.zip CMake-a933d8d84e527b04920773d296b09bdcc0872ecf.tar.gz CMake-a933d8d84e527b04920773d296b09bdcc0872ecf.tar.bz2 |
Help: Organize and revise 3.16 release notes
Add section headers similar to the 3.15 release notes and move each
individual bullet into an appropriate section. Revise a few bullets.
Drop bullets covering internal interfaces.
Diffstat (limited to 'Help')
-rw-r--r-- | Help/release/3.16.rst | 313 |
1 files changed, 178 insertions, 135 deletions
diff --git a/Help/release/3.16.rst b/Help/release/3.16.rst index 760335d..8d8490e 100644 --- a/Help/release/3.16.rst +++ b/Help/release/3.16.rst @@ -7,30 +7,26 @@ CMake 3.16 Release Notes Changes made since CMake 3.15 include the following. -* The :command:`find_package` command has learned to check the following - variables to control searching +New Features +============ - * :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` - Controls the searching the - cmake user registry. +Languages +--------- -* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` has been deprecated. - Instead use :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` +* CMake learned to support the Objective C (``OBJC``) and Objective C++ + (``OBJCXX``) languages. They may be enabled via the :command:`project` + and :command:`enable_language` commands. When ``OBJC`` or ``OBJCXX`` + is enabled, source files with the ``.m`` or ``.mm``, respectively, + will be compiled as Objective C or C++. Otherwise they will be treated + as plain C++ sources as they were before. -* A new target property, :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH`, was - added which removes compiler-defined rpaths from a target. This property is - initialized by :variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH`. +Compilers +--------- -* A new test property, :prop_test:`SKIP_REGULAR_EXPRESSION`, has been added. - This property is similar to :prop_test:`FAIL_REGULAR_EXPRESSION` and - :prop_test:`PASS_REGULAR_EXPRESSION`, but with the same meaning as - :prop_test:`SKIP_RETURN_CODE`. This is useful, for example, in cases where - the user has no control over the return code of the test. For example, in - Catch2, the return value is the number of assertion failed, therefore it is - impossible to use it for :prop_test:`SKIP_RETURN_CODE`. +* The ``Clang`` compiler is now supported on ``Solaris``. -* The command :command:`add_test` learned the option ``COMMAND_EXPAND_LISTS`` - which causes lists in the ``COMMAND`` argument to be expanded, including - lists created by generator expressions. +Platforms +--------- * On AIX, executables using the :prop_tgt:`ENABLE_EXPORTS` target property now produce a linker import file with a ``.imp`` extension in addition @@ -50,97 +46,27 @@ Changes made since CMake 3.15 include the following. ``-Wl,-brtl`` to their link flags (e.g. in the :variable:`CMAKE_EXE_LINKER_FLAGS` variable). -* When using :prop_tgt:`AUTOMOC`, CMake now generates the ``-p`` path prefix - option for ``moc``. This ensures that ``moc`` output files are identical - on different build setups (given, that the headers compiled by ``moc`` are - in an :command:`include directory <target_include_directories>`). - Also it ensures that ``moc`` output files will compile correctly when the - source and/or build directory is a symbolic link. - - The ``moc`` path prefix generation behavior can be configured by setting - the new :variable:`CMAKE_AUTOMOC_PATH_PREFIX` variable and/or - :prop_tgt:`AUTOMOC_PATH_PREFIX` target property. - -* :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` now support - :manual:`generator expressions <cmake-generator-expressions(7)>`. - -* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands, which - do nothing while returning exit codes of 0 and 1, respectively. - -* The :manual:`cmake(1)` ``-C <initial-cache>`` option now evaluates the - initial cache script with :variable:`CMAKE_SOURCE_DIR` and - :variable:`CMAKE_BINARY_DIR` set to the top-level source and build trees. - -* The Qt Compressed Help file is now named ``CMake.qch``, which no longer - contains the release version in the file name. When CMake is upgraded - in-place, the name and location of this file will remain constant. - Tools such as IDEs, help viewers, etc. should now be able to refer to this - file at a fixed location that remains valid across CMake upgrades. - -* ``RPATH`` entries are properly escaped in the intermediary CMake install script. - See policy :policy:`CMP0095`. +Command-Line +------------ -* CPack learned :variable:`CPACK_INSTALL_CMAKE_CONFIGURATIONS` to control - what configurations going to be packaged for multi-configuration generators. +* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands, + which do nothing while returning exit codes of 0 and 1, respectively. -* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the - new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable. - -* The :cpack_gen:`CPack Archive Generator` learned to generate `.tar.zst` - packages with Zstandard compression. - -* :manual:`ctest(1)` ``--build-makeprogram`` now specifies the make program - used when configuring a project with the Ninja and Makefiles generators - in addition to building it. - -* :manual:`ctest(1)` now has the ability to serialize tests based on hardware - requirements for each test. See :ref:`ctest-hardware-allocation` for - details. - -* Variable :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` has been - introduced to optionally initialize the - :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property. - -* An explicit deprecation diagnostic was added for policy ``CMP0067`` - (``CMP0066`` 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. - -* The :command:`doxygen_add_docs` command from the :module:`FindDoxygen` - module gained a new ``USE_STAMP_FILE`` option. When this option present, - the custom target created by the command will only re-run Doxygen if any - of the source files have changed since the last successful run. - -* The :generator:`Eclipse CDT4` extra generator gained a new - :variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` option to specify - the resource encoding. - -* The :module:`ExternalProject` module's ``ExternalProject_Add`` command - has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules. See - policy :policy:`CMP0097`. - -* The :module:`FindGnuTLS` module now provides an imported target. - -* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro - now defines a ``<prefix>_MODULE_NAME`` result variable containing the - first matching module name. - -* Modules :module:`FindPython3` and :module:`FindPython` gain the capability - to control which ``ABIs`` will be searched. +* :manual:`cmake(1)` gained a ``--trace-redirect=<file>`` command line + option that can be used to redirect ``--trace`` output to a file instead + of ``stderr``. -* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` - gain the capability to specify directly artifacts. +Commands +-------- -* Modules :module:`FindPackageHandleStandardArgs` gains the capability to - specify a message giving the reason for the failure. +* The :command:`add_test` command learned the option ``COMMAND_EXPAND_LISTS`` + which causes lists in the ``COMMAND`` argument to be expanded, including + lists created by generator expressions. * The :command:`file` command learned a new sub-command, ``GET_RUNTIME_DEPENDENCIES``, which allows you to recursively get the list of libraries linked by an executable or library. This sub-command is intended as a replacement for :module:`GetPrerequisites`. -* The :module:`GetPrerequisites` module has been deprecated, as it has been - superceded by :command:`file(GET_RUNTIME_DEPENDENCIES)`. * The :command:`find_file`, :command:`find_library`, :command:`find_path`, :command:`find_package`, and :command:`find_program` commands have learned to @@ -161,59 +87,176 @@ Changes made since CMake 3.15 include the following. * :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the searching the standard system environment variables. -* The :module:`FindGTest` module has been updated to recognize - MSVC build trees generated by GTest 1.8.1. +* The :command:`find_package` command has learned to check the following + variables to control searching + + * :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` - Controls the searching the + cmake user registry. * The :command:`message` command learned indentation control with the new :variable:`CMAKE_MESSAGE_INDENT` variable. -* CMake learned to support the Objective C (``OBJC``) and Objective C++ - (``OBJCXX``) languages. They may be enabled via the :command:`project` - and :command:`enable_language` commands. When ``OBJC`` or ``OBJCXX`` - is enabled, source files with the ``.m`` or ``.mm``, respectively, - will be compiled as Objective C or C++. Otherwise they will be treated - as plain C++ sources as they were before. +* The :command:`target_precompile_headers` command was added to specify + a list of headers to precompile for faster compilation times. -* New variables :variable:`CMAKE_<LANG>_LINK_LIBRARY_FLAG`, - :variable:`CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG`, and - :variable:`CMAKE_<LANG>_LINK_LIBRARY_SUFFIX` allow control of the - flag used to specify linking to a library on a per-language basis. - This is useful for mixed-language projects where the different - drivers may use different flags. +Variables +--------- -* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to tell - generators to use a list of precompile headers for faster compilation - times. +* The :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` variable has been + introduced to optionally initialize the + :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property. -* The :command:`project` no longer strips leading zeros in version components. - See policy :policy:`CMP0096`. +* The :variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` variable was added to + specify the resource encoding for the the :generator:`Eclipse CDT4` extra + generator. -* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool, - when given the path to a symlink to a directory, now removes just - the symlink. It no longer removes content of the linked directory. +Properties +---------- -* The ``Clang`` compiler is now supported on ``Solaris``. +* The :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` target properties + now support :manual:`generator expressions <cmake-generator-expressions(7)>`. -* :manual:`cmake(1)` gained a ``--trace-redirect=<file>`` command line option - that can be used to redirect ``--trace`` output to a file instead - of ``stderr``. +* The :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH` target property was + added to remove compiler-defined ``RPATH`` entries from a target. + This property is initialized by the + :variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH` variable. + +* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to specify + a list of headers to precompile for faster compilation times. + Set it using the :command:`target_precompile_headers` command. * The :prop_tgt:`UNITY_BUILD` target property was added to tell generators to batch include source files for faster compilation times. -* :prop_tgt:`VS_CONFIGURATION_TYPE` now supports +* The :prop_tgt:`VS_CONFIGURATION_TYPE` target property now supports :manual:`generator expressions <cmake-generator-expressions(7)>`. * The :prop_tgt:`VS_DPI_AWARE` target property was added to tell :ref:`Visual Studio Generators` to set the ``EnableDpiAwareness`` property in ``.vcxproj`` files. -* On Windows, existing auto generated exports are now only updated if the - modified time stamp of the exports is not newer than any modified time stamp - of the input files. +* The :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING` target property was + added to tell the :generator:`Xcode` generator to set the value of the + ``Allow debugging when using document Versions Browser`` schema option. + +Modules +------- + +* The :module:`FindDoxygen` module :command:`doxygen_add_docs` command + gained a new ``USE_STAMP_FILE`` option. When this option present, + the custom target created by the command will only re-run Doxygen if + any of the source files have changed since the last successful run. + +* The :module:`FindGnuTLS` module now provides an imported target. + +* The :module:`FindPackageHandleStandardArgs` module + :command:`find_package_handle_standard_args` command gained + a new ``REASON_FAILURE_MESSAGE`` option to specify a message + giving the reason for the failure. + +* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro + now defines a ``<prefix>_MODULE_NAME`` result variable containing the + first matching module name. + +* The :module:`FindPython3` and :module:`FindPython` modules gained + options to control which ``ABIs`` will be searched. + +* The :module:`FindPython3`, :module:`FindPython2`, and :module:`FindPython` + modules now support direct specification of artifacts via cache entries. + +Autogen +------- + +* When using :prop_tgt:`AUTOMOC`, CMake now generates the ``-p`` path prefix + option for ``moc``. This ensures that ``moc`` output files are identical + on different build setups (given, that the headers compiled by ``moc`` are + in an :command:`include directory <target_include_directories>`). + Also it ensures that ``moc`` output files will compile correctly when the + source and/or build directory is a symbolic link. + + The ``moc`` path prefix generation behavior can be configured by setting + the new :variable:`CMAKE_AUTOMOC_PATH_PREFIX` variable and/or + :prop_tgt:`AUTOMOC_PATH_PREFIX` target property. + +CTest +----- + +* :manual:`ctest(1)` now has the ability to serialize tests based on hardware + requirements for each test. See :ref:`ctest-hardware-allocation` for + details. + +* A new test property, :prop_test:`SKIP_REGULAR_EXPRESSION`, has been added. + This property is similar to :prop_test:`FAIL_REGULAR_EXPRESSION` and + :prop_test:`PASS_REGULAR_EXPRESSION`, but with the same meaning as + :prop_test:`SKIP_RETURN_CODE`. This is useful, for example, in cases where + the user has no control over the return code of the test. For example, in + Catch2, the return value is the number of assertion failed, therefore it is + impossible to use it for :prop_test:`SKIP_RETURN_CODE`. + +CPack +----- + +* CPack variable :variable:`CPACK_INSTALL_CMAKE_CONFIGURATIONS` was added to + control what configurations are to be packaged for multi-configuration + CMake generators. + +* The :cpack_gen:`CPack Archive Generator` learned to generate ``.tar.zst`` + packages with Zstandard compression. + +Deprecated and Removed Features +=============================== + +* An explicit deprecation diagnostic was added for policy ``CMP0067`` + (``CMP0066`` 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. + +* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` variable has been + deprecated. Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable + instead. + +* The :module:`GetPrerequisites` module has been deprecated, as it has been + superceded by :command:`file(GET_RUNTIME_DEPENDENCIES)`. + +* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the + new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable. + +Other Changes +============= + +* The :manual:`cmake(1)` ``-C <initial-cache>`` option now evaluates the + initial cache script with :variable:`CMAKE_SOURCE_DIR` and + :variable:`CMAKE_BINARY_DIR` set to the top-level source and build trees. + +* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool, + when given the path to a symlink to a directory, now removes just + the symlink. It no longer removes content of the linked directory. + +* The :manual:`ctest(1)` ``--build-makeprogram`` command-line option now + specifies the make program used when configuring a project with the + :generator:`Ninja` generator or the :ref:`Makefile Generators`. + +* The :module:`ExternalProject` module :command:`ExternalProject_Add` command + has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules. + See policy :policy:`CMP0097`. + +* The :module:`FindGTest` module has been updated to recognize + MSVC build trees generated by GTest 1.8.1. + +* The :command:`project` command no longer strips leading zeros in version + components. See policy :policy:`CMP0096`. + +* The Qt Compressed Help file is now named ``CMake.qch``, which no longer + contains the release version in the file name. When CMake is upgraded + in-place, the name and location of this file will remain constant. + Tools such as IDEs, help viewers, etc. should now be able to refer to this + file at a fixed location that remains valid across CMake upgrades. + +* ``RPATH`` entries are properly escaped in the generated CMake scripts + used for installation. See policy :policy:`CMP0095`. -* The Xcode generator learnt to set the value of the - ``Allow debugging when using document Versions Browser`` schema - option with the :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING` - target property. +* When using :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` on Windows the + auto-generated exports are now updated only when the object files + providing the symbols are updated. |