summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Help/release/3.2.0.rst328
1 files changed, 174 insertions, 154 deletions
diff --git a/Help/release/3.2.0.rst b/Help/release/3.2.0.rst
index 142d408440..c6a8adde1d 100644
--- a/Help/release/3.2.0.rst
+++ b/Help/release/3.2.0.rst
@@ -7,131 +7,103 @@ CMake 3.2.0 Release Notes
Changes made since CMake 3.1.0 include the following.
-* A new :command:`continue` command was added that can be called inside loop
- contexts to end the current iteration and start the next one at the top of
- the loop block.
-
-* A :module:`FindGSL` module was introduced to find the
- GNU Scientific Library.
-
-* The :module:`FindIntl` module was added to find the Gettext ``libintl``
- library.
-
-* A :module:`FindJsonCpp` module was introduced to find the
- JsonCpp package.
-
-* The :command:`ctest_coverage` learned to support Javascript coverage.
-
-* The :manual:`cmake(1)` ``-E tar`` command now supports creating
- ``.xz``-compressed archives with the ``J`` flag.
-
-* On OS X with Makefile and Ninja generators, when a compiler is found
- in ``/usr/bin`` it is now mapped to the corresponding compiler inside
- the Xcode application folder, if any. This allows such build
- trees to continue to work with their original compiler even when
- ``xcode-select`` switches to a different Xcode installation.
-
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- is now aware of features supported by GNU compilers on OS X.
+New Features
+============
-* The :command:`break` command now rejects calls outside of a loop
- context or that pass arguments to the command.
- See policy :policy:`CMP0055`.
+Syntax
+------
-* Add :variable:`CMAKE_MATCH_COUNT` for the number of matches made in the last
- regular expression.
+* CMake learned to support unicode characters
+ :ref:`encoded as UTF-8 <CMake Language Encoding>`
+ on Windows. This was already supported on platforms whose
+ system APIs accept UTF-8 encoded strings.
+ Unicode characters may now be used in CMake code, paths to
+ source files, configured files such as ``.h.in`` files, and
+ other files read and written by CMake. Note that because CMake
+ interoperates with many other tools, there may still be some
+ limitations when using certain unicode characters.
-* The :manual:`cmake(1)` ``-E tar`` command learned a new
- ``--files-from=<file>`` option to specify file names using
- lines in a file to overcome command-line length limits.
+Commands
+--------
-* The :manual:`cmake(1)` ``-E tar`` command learned a new
- ``--mtime=<date>`` option to specify the modification time
- recorded in tarball entries.
+* The :command:`add_custom_command` and :command:`add_custom_target`
+ commands learned a new ``BYPRODUCTS`` option to specify files
+ produced as side effects of the custom commands. These are not
+ outputs because they do not always have to be newer than inputs.
* The :command:`add_custom_command` and :command:`add_custom_target`
commands learned a new ``USES_TERMINAL`` option to request that
the command be given direct access to the terminal if possible.
The :generator:`Ninja` generator will places such commands in the
- ``console`` pool. Build targets provided by CMake that are meant
- for individual interactive use, such as ``install``, are now
+ ``console`` :prop_gbl:`pool <JOB_POOLS>`. Build targets provided by CMake
+ that are meant for individual interactive use, such as ``install``, are now
placed in this pool.
-* The :module:`CPackRPM` module learned options to set per-component
- descriptions and summaries. See the
- :variable:`CPACK_RPM_<component>_PACKAGE_DESCRIPTION` and
- :variable:`CPACK_RPM_<component>_PACKAGE_SUMMARY` variables.
+* A new :command:`continue` command was added that can be called inside loop
+ contexts to end the current iteration and start the next one at the top of
+ the loop block.
-* The :module:`CPackRPM` module learned options to specify
- requirements for pre- and post-install scripts. See the
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_PRE` and
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_POST` variables.
+* The :command:`file(LOCK)` subcommand was created to allow CMake
+ processes to synchronize through file and directory locks.
-* The :module:`CPackRPM` module learned options to specify
- requirements for pre- and post-uninstall scripts. See the
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_PREUN` and
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_POSTUN` variables.
+* The :command:`file(STRINGS)` now supports UTF-16LE, UTF-16BE,
+ UTF-32LE, UTF-32BE as ``ENCODING`` options.
-* The :module:`CTestCoverageCollectGCOV` module was introduced as an
- alternative to the :command:`ctest_coverage` command for collecting
- ``gcov`` results for submission to CDash.
+* The :command:`install(EXPORT)` command now works with an absolute
+ ``DESTINATION`` even if targets in the export set are installed
+ with a destination or :ref:`usage requirements <Target Usage Requirements>`
+ specified relative to the install prefix. The value of the
+ :variable:`CMAKE_INSTALL_PREFIX` variable is hard-coded into the installed
+ export file as the base for relative references.
+
+* The :command:`try_compile` command source file signature now honors
+ link flags (e.g. :variable:`CMAKE_EXE_LINKER_FLAGS`) in the generated
+ test project. See policy :policy:`CMP0056`.
-* The :command:`ctest_coverage` learned to support Delphi coverage.
+* The :command:`try_run` command learned to honor the ``LINK_LIBRARIES``
+ option just as :command:`try_compile` already does.
-* On OS X, commands supporting network communication, such as
- :command:`file(DOWNLOAD)`, :command:`file(UPLOAD)`, and
- :command:`ctest_submit`, now support SSL/TLS even when CMake
- is not built against OpenSSL. The OS X native SSL/TLS
- implementation is used by default. OS-configured certificate
- authorities will be trusted automatically.
+Variables
+---------
-* When CMake is built with OpenSSL on systems other than Windows
- and OS X, commands supporting network communication via ``https``,
- such as :command:`file(DOWNLOAD)`, :command:`file(UPLOAD)`, and
- :command:`ctest_submit`, now search for OS-configured certificate
- authorities in a few ``/etc`` paths to be trusted automatically.
+* The :variable:`CMAKE_MATCH_COUNT` variable was introduced to record the
+ number of matches made in the last regular expression matched in an
+ :command:`if` command or a :command:`string` command.
-* On Windows, commands supporting network communication, such as
- :command:`file(DOWNLOAD)`, :command:`file(UPLOAD)`, and
- :command:`ctest_submit`, now support SSL/TLS even when CMake
- is not built against OpenSSL. The Windows native SSL/TLS
- implementation is used by default. OS-configured certificate
- authorities will be trusted automatically.
+Properties
+----------
-* The :command:`add_custom_command` and :command:`add_custom_target`
- commands learned a new ``BYPRODUCTS`` option to specify files
- produced as side effects of the custom commands. These are not
- outputs because they do not always have to be newer than inputs.
+* An :prop_tgt:`ANDROID_API_MIN` target property was introduced to
+ specify the minimum version to be targeted by the toolchain.
+
+* A :prop_sf:`VS_SHADER_FLAGS` source file property was added to specify
+ additional shader flags to ``.hlsl`` files, for the Visual Studio
+ generators.
+
+Modules
+-------
* The :module:`ExternalData` module learned to support
:ref:`Custom Fetch Scripts <ExternalData Custom Fetch Scripts>`.
This allows projects to specify custom ``.cmake`` scripts for
fetching data objects during the build.
-* The :module:`ExternalProject` module ``ExternalProject_Add`` function
- learned a new ``CMAKE_CACHE_DEFAULT_ARGS`` option to initialize cache
- values in the external project without setting them on future builds.
-
* The :module:`ExternalProject` module learned options to create
independent external project step targets that do not depend
on the builtin steps.
* The :module:`ExternalProject` module :command:`ExternalProject_Add`
- command learned a ``TEST_EXCLUDE_FROM_MAIN`` option to exclude tests
- from the main build.
+ command learned a new ``CMAKE_CACHE_DEFAULT_ARGS`` option to
+ initialize cache values in the external project without setting
+ them on future builds.
-* The :module:`ExternalProject` module ``ExternalProject_Add`` command
- learned an ``UPDATE_DISCONNECTED`` option to avoid automatically
- updating the source tree checkout from version control.
-
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- is now aware of features supported by Microsoft Visual Studio (``MSVC``).
-
-* The :command:`file(LOCK)` subcommand was created to allow CMake
- processes to synchronize through file and directory locks.
+* The :module:`ExternalProject` module :command:`ExternalProject_Add`
+ command learned a new ``TEST_EXCLUDE_FROM_MAIN`` option to exclude
+ tests from the main build.
-* The :command:`file(STRINGS)` now supports UTF-16LE, UTF-16BE,
- UTF-32LE, UTF-32BE as ``ENCODING`` options.
+* The :module:`ExternalProject` module :command:`ExternalProject_Add`
+ command learned a new ``UPDATE_DISCONNECTED`` option to avoid
+ automatically updating the source tree checkout from version control.
* The :module:`FindCUDA` module learned about the ``cusolver``
library in CUDA 7.0.
@@ -139,6 +111,15 @@ Changes made since CMake 3.1.0 include the following.
* The :module:`FindGit` module learned to find the ``git`` command-line tool
that comes with GitHub for Windows installed in user home directories.
+* A :module:`FindGSL` module was introduced to find the
+ GNU Scientific Library.
+
+* A :module:`FindIntl` module was introduced to find the
+ Gettext ``libintl`` library.
+
+* A :module:`FindJsonCpp` module was introduced to find the
+ JsonCpp package.
+
* The :module:`FindLATEX` module learned to support components.
* The :module:`FindMPI` module learned to find MS-MPI on Windows.
@@ -154,18 +135,43 @@ Changes made since CMake 3.1.0 include the following.
``OPENSSL_SSL_LIBRARY``, respectively, to allow applications to
link to one without the other.
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- is now aware of features supported by GNU 4.4 to 4.6 compilers.
+* The :module:`WriteCompilerDetectionHeader` module learned to
+ create a define for portability of the ``cxx_thread_local`` feature.
+ The define expands to either the C++11 ``thread_local`` keyword, or a
+ pre-standardization compiler-specific equivalent, as appropriate.
-* The :command:`install(EXPORT)` command now works with an absolute
- ``DESTINATION`` even if targets in the export set are installed
- with a destination or usage requirements specified relative to the
- install prefix. The value of the :variable:`CMAKE_INSTALL_PREFIX`
- variable is hard-coded into the installed export file as the base
- for relative references.
+* The :module:`WriteCompilerDetectionHeader` module learned to create
+ multiple output files per compiler and per language, instead of creating
+ one large file.
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- is now aware of features supported by GNU compiler version 5.0.
+CTest
+-----
+
+* The :command:`ctest_coverage` command learned to support Delphi coverage.
+
+* The :command:`ctest_coverage` command learned to support Javascript coverage.
+
+* The :module:`CTestCoverageCollectGCOV` module was introduced as an
+ alternative to the :command:`ctest_coverage` command for collecting
+ ``gcov`` results for submission to CDash.
+
+CPack
+-----
+
+* The :module:`CPackRPM` module learned options to set per-component
+ descriptions and summaries. See the
+ :variable:`CPACK_RPM_<component>_PACKAGE_DESCRIPTION` and
+ :variable:`CPACK_RPM_<component>_PACKAGE_SUMMARY` variables.
+
+* The :module:`CPackRPM` module learned options to specify
+ requirements for pre- and post-install scripts. See the
+ :variable:`CPACK_RPM_PACKAGE_REQUIRES_PRE` and
+ :variable:`CPACK_RPM_PACKAGE_REQUIRES_POST` variables.
+
+* The :module:`CPackRPM` module learned options to specify
+ requirements for pre- and post-uninstall scripts. See the
+ :variable:`CPACK_RPM_PACKAGE_REQUIRES_PREUN` and
+ :variable:`CPACK_RPM_PACKAGE_REQUIRES_POSTUN` variables.
* The :module:`CPackRPM` module learned a new
:variable:`CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX` variable to
@@ -176,74 +182,88 @@ Changes made since CMake 3.1.0 include the following.
:variable:`CPACK_RPM_RELOCATION_PATHS` variable to
specify multiple relocation prefixes for a single rpm package.
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- is now aware of features supported by Oracle SolarisStudio (``SunPro``).
+Other
+-----
-* The :command:`try_compile` command source file signature now honors
- link flags (e.g. :variable:`CMAKE_EXE_LINKER_FLAGS`) in the generated
- test project. See policy :policy:`CMP0056`.
+* The :manual:`cmake(1)` ``-E tar`` command now supports creating
+ ``.xz``-compressed archives with the ``J`` flag.
-* The :command:`try_run` command learned to honor the ``LINK_LIBRARIES``
- option just as :command:`try_compile` already does.
+* The :manual:`cmake(1)` ``-E tar`` command learned a new
+ ``--files-from=<file>`` option to specify file names using
+ lines in a file to overcome command-line length limits.
-* The implementation of CMake relies on some C++ compiler features which are
- not supported by some older compilers. As a result, those old compilers
- can no longer be used to build CMake itself. CMake continues to be able to
- generate Makefiles and project files for users of those old compilers
- however. The compilers known to no longer be capable of building CMake
- are:
-
- * MSVC 6 and 7.0 - superceded by VisualStudio 7.1 and newer compilers.
- * GCC 2.95 - superceded by GCC 3 and newer compilers.
- * Borland compilers - superceded by other Windows compilers.
- * Compaq compilers - superceded by other compilers.
- * Comeau compilers - superceded by other compilers.
- * SGI compilers - IRIX was dropped as a host platform.
-
- When building using SolarisStudio 12, the default ``libCStd`` standard
- library is not sufficient to build CMake. The SolarisStudio distribution
- supports compiler options to use ``STLPort4`` or ``libstdc++``. An
- appropriate option to select the standard library is now added
- automatically when building CMake with SolarisStudio compilers.
+* The :manual:`cmake(1)` ``-E tar`` command learned a new
+ ``--mtime=<date>`` option to specify the modification time
+ recorded in tarball entries.
-* A :prop_tgt:`ANDROID_API_MIN` target property was introduced to
- specify the minimum version to be targeted by the toolchain.
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+ is now aware of features supported by more compilers, including:
-* A :prop_sf:`VS_SHADER_FLAGS` source file property was added to specify
- additional shader flags to ``.hlsl`` files, for the Visual Studio generators.
+ * Apple Clang (``AppleClang``) for Xcode versions 4.4 though 6.1.
+ * GNU compiler versions 4.4 through 5.0 on UNIX and Apple (``GNU``).
+ * Microsoft Visual Studio (``MSVC``) for versions 2010 through 2015.
+ * Oracle SolarisStudio (``SunPro``) version 12.4.
-* The :module:`WriteCompilerDetectionHeader` module learned to
- create a define for portability of the cxx_thread_local feature. The define
- expands to either the C++11 ``thread_local`` keyword, or a
- pre-standardization compiler-specific equivalent, as appropriate.
+New Diagnostics
+===============
+
+* The :command:`break` command now rejects calls outside of a loop
+ context or that pass arguments to the command.
+ See policy :policy:`CMP0055`.
-* On Windows, CMake learned to support international characters.
- This allows use of characters from multiple (spoken) languages
- in CMake code, paths to source files, configured files such as
- ``.h.in`` files, and other files read and written by CMake.
- Because CMake interoperates with many other tools, there may
- still be some limitations when using certain international
- characters.
+Deprecated and Removed Features
+===============================
- Files written in the :manual:`cmake-language(7)`, such as
- ``CMakeLists.txt`` or ``*.cmake`` files, are expected to be
+* Files written in the :manual:`cmake-language(7)`, such as
+ ``CMakeLists.txt`` or ``*.cmake`` files, are now expected to be
encoded as UTF-8. If files are already ASCII, they will be
compatible. If files were in a different encoding, including
Latin 1, they will need to be converted.
- The Visual Studio generators now write solution and project
+* The implementation of CMake now relies on some C++ compiler features which
+ are not supported by some older compilers. As a result, those old compilers
+ can no longer be used to build CMake itself. CMake continues to be able to
+ generate Makefiles and project files for users of those old compilers
+ however. Compilers known to no longer be capable of building CMake are:
+
+ * Visual Studio 6 and 7.0 -- superseded by VisualStudio 7.1 and newer.
+ * GCC 2.95 -- superseded by GCC 3 and newer compilers.
+ * Borland compilers -- superseded by other Windows compilers.
+ * Compaq compilers -- superseded by other compilers.
+ * SGI compilers -- IRIX was dropped as a host platform.
+
+Other Changes
+=============
+
+* On Windows and OS X, commands supporting network communication
+ via ``https``, such as :command:`file(DOWNLOAD)`,
+ :command:`file(UPLOAD)`, and :command:`ctest_submit`, now support
+ SSL/TLS even when CMake is not built against OpenSSL.
+ The Windows or OS X native SSL/TLS implementation is used by default.
+ OS-configured certificate authorities will be trusted automatically.
+
+ On other platforms, when CMake is built with OpenSSL, these
+ commands now search for OS-configured certificate authorities
+ in a few ``/etc`` paths to be trusted automatically.
+
+* On OS X with Makefile and Ninja generators, when a compiler is found
+ in ``/usr/bin`` it is now mapped to the corresponding compiler inside
+ the Xcode application folder, if any. This allows such build
+ trees to continue to work with their original compiler even when
+ ``xcode-select`` switches to a different Xcode installation.
+
+* The Visual Studio generators now write solution and project
files in UTF-8 instead of Windows-1252. Windows-1252 supported
Latin 1 languages such as those found in North and South America
and Western Europe. With UTF-8, additional languages are now
supported.
-* The :module:`WriteCompilerDetectionHeader` module learned to create
- multiple output files per compiler and per language, instead of creating
- one large file.
-
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- is now aware of features supported by Apple Clang (``AppleClang``).
-
* The :generator:`Xcode` generator no longer requires a value for
the :variable:`CMAKE_MAKE_PROGRAM` variable to be located up front.
It now locates ``xcodebuild`` when needed at build time.
+
+* When building CMake itself using SolarisStudio 12, the default ``libCStd``
+ standard library is not sufficient to build CMake. The SolarisStudio
+ distribution supports compiler options to use ``STLPort4`` or ``libstdc++``.
+ An appropriate option to select the standard library is now added
+ automatically when building CMake with SolarisStudio compilers.