|
|
@@ -7,15 +7,146 @@ CMake 3.10 Release Notes
|
|
|
|
|
|
Changes made since CMake 3.9 include the following.
|
|
|
|
|
|
+New Features
|
|
|
+============
|
|
|
+
|
|
|
+Platforms
|
|
|
+---------
|
|
|
+
|
|
|
+* The `flang`_ Fortran compiler is now supported, with compiler id ``Flang``.
|
|
|
+
|
|
|
+* A new minimal platform file for ``Midipix`` was added.
|
|
|
+
|
|
|
+* Support for the MSVC ARM64 architecture was added.
|
|
|
+ Visual Studio 2017 Update 4 and above offer an ARM64 toolchain.
|
|
|
+
|
|
|
+* Support for the IAR ARM Compiler was improved.
|
|
|
+
|
|
|
+.. _`flang`: https://github.com/flang-compiler/flang
|
|
|
+
|
|
|
+Generators
|
|
|
+----------
|
|
|
+
|
|
|
+* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned
|
|
|
+ to add compiler launcher tools like ccache along with the compiler for the
|
|
|
+ ``CUDA`` language (``C`` and ``CXX`` were supported previously). See the
|
|
|
+ :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
|
|
|
+ :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.
|
|
|
+
|
|
|
+* The :generator:`CodeBlocks` extra generator learned to optionally exclude
|
|
|
+ files from outside the project root directory from the generated project.
|
|
|
+ See the :variable:`CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES` variable.
|
|
|
+
|
|
|
+Commands
|
|
|
+--------
|
|
|
+
|
|
|
+* The :command:`cmake_host_system_information` command learned more keys
|
|
|
+ to get information about the processor capabilities and the host OS
|
|
|
+ version.
|
|
|
+
|
|
|
+* The :command:`configure_file` command learned to support indented
|
|
|
+ ``# cmakedefine`` and ``# cmakedefine01``. Spaces and/or tabs between
|
|
|
+ the ``#`` character and the ``cmakedefine``/``cmakedefine01`` words
|
|
|
+ are now understood and preserved in the output.
|
|
|
+
|
|
|
+* The :command:`execute_process` command gained a ``RESULTS_VARIABLE``
|
|
|
+ option to collect a list of results from all children in a pipeline
|
|
|
+ of processes when multiple ``COMMAND`` arguments are given.
|
|
|
+
|
|
|
+* The :command:`include_guard` command was introduced to allow guarding
|
|
|
+ CMake scripts from being included more than once. The command supports
|
|
|
+ ``DIRECTORY`` and ``GLOBAL`` options to adjust the corresponding include guard
|
|
|
+ scope. If no options given, include guard is similar to basic variable-based
|
|
|
+ check.
|
|
|
+
|
|
|
+* The :command:`string` command learned a new ``PREPEND`` subcommand.
|
|
|
+
|
|
|
+* The :command:`string(TIMESTAMP)` command now supports ``%A``
|
|
|
+ for full weekday name and ``%B`` for full month name.
|
|
|
+
|
|
|
+Variables
|
|
|
+---------
|
|
|
+
|
|
|
+* A :variable:`CMAKE_DIRECTORY_LABELS` variable was added to specify
|
|
|
+ labels for all tests in a directory.
|
|
|
+
|
|
|
+Properties
|
|
|
+----------
|
|
|
+
|
|
|
* A :prop_tgt:`<LANG>_CPPCHECK` target property and supporting
|
|
|
:variable:`CMAKE_<LANG>_CPPCHECK` variable were introduced to tell
|
|
|
the :ref:`Makefile Generators` and the :generator:`Ninja` generator to
|
|
|
run ``cppcheck`` with the compiler for ``C`` and ``CXX`` languages.
|
|
|
|
|
|
+* A :prop_dir:`LABELS` directory property was added to specify labels
|
|
|
+ for all targets and tests in a directory.
|
|
|
+
|
|
|
+* A :prop_dir:`TEST_INCLUDE_FILES` directory property was added to
|
|
|
+ list any number of files to be included when running tests with
|
|
|
+ :manual:`ctest(1)`. This generalizes the :prop_dir:`TEST_INCLUDE_FILE`
|
|
|
+ property.
|
|
|
+
|
|
|
+* The :prop_tgt:`VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>`
|
|
|
+ target property was added to support custom XML tags for reference
|
|
|
+ assemblies in C# targets.
|
|
|
+
|
|
|
* Source file properties :prop_sf:`VS_SHADER_OUTPUT_HEADER_FILE` and
|
|
|
:prop_sf:`VS_SHADER_VARIABLE_NAME` have been added to specify more
|
|
|
details of ``.hlsl`` sources with :ref:`Visual Studio Generators`.
|
|
|
|
|
|
+Modules
|
|
|
+-------
|
|
|
+
|
|
|
+* The :module:`FindCurses` module gained a ``CURSES_NEED_WIDE`` option
|
|
|
+ to request the wide-character variant.
|
|
|
+
|
|
|
+* The :module:`FindEXPAT` module now provides imported targets.
|
|
|
+
|
|
|
+* The :module:`FindFreetype` module now provides imported targets.
|
|
|
+
|
|
|
+* :module:`FindMPI` gained a number of new features, including:
|
|
|
+
|
|
|
+ * Language-specific components have been added to the module.
|
|
|
+ * Many more MPI environments are now supported.
|
|
|
+ * The environmental support for Fortran has been improved.
|
|
|
+ * A user now has fine-grained control over the MPI selection process,
|
|
|
+ including passing custom parameters to the MPI compiler.
|
|
|
+ * The version of the implemented MPI standard is now being exposed.
|
|
|
+ * MPI-2 C++ bindings can now be detected and also suppressed if so desired.
|
|
|
+ * The available Fortran bindings are now being detected and verified.
|
|
|
+ * Various MPI-3 information can be requested, including the library version
|
|
|
+ and Fortran capabilities of the individual bindings.
|
|
|
+ * Statically linked MPI implementations are supported.
|
|
|
+
|
|
|
+* A :module:`FindOpenACC` module was added to detect compiler support
|
|
|
+ for OpenACC. Currently only supports PGI, GNU and Cray compilers.
|
|
|
+
|
|
|
+* The :module:`FindOpenGL` module gained support for GLVND on Linux.
|
|
|
+
|
|
|
+* The :module:`FindOpenMP` module gained support for
|
|
|
+ language-specific components.
|
|
|
+
|
|
|
+* A :module:`FindPatch` module was added to find the ``patch``
|
|
|
+ command-line executable.
|
|
|
+
|
|
|
+* The :module:`FindProtobuf` module :command:`protobuf_generate_cpp` command
|
|
|
+ gained a ``DESCRIPTORS`` option to generate descriptor files.
|
|
|
+
|
|
|
+* The :module:`GoogleTest` module gained a new command
|
|
|
+ :command:`gtest_discover_tests` implementing dynamic (build-time) test
|
|
|
+ discovery. Unlike the source parsing approach, dynamic discovery executes
|
|
|
+ the test (in 'list available tests' mode) at build time to discover tests.
|
|
|
+ This is robust against unusual ways of labeling tests, provides much better
|
|
|
+ support for advanced features such as parameterized tests, and does not
|
|
|
+ require re-running CMake to discover added or removed tests within a test
|
|
|
+ executable.
|
|
|
+
|
|
|
+* The :module:`InstallRequiredSystemLibraries` module gained support
|
|
|
+ for installing Intel compiler runtimes.
|
|
|
+
|
|
|
+Autogen
|
|
|
+-------
|
|
|
+
|
|
|
* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC` with a
|
|
|
multi configuration generator (e.g. :generator:`Xcode`),
|
|
|
included ``*.moc``, ``moc_*.cpp`` and ``ui_*.h`` files are generated in
|
|
|
@@ -49,20 +180,33 @@ Changes made since CMake 3.9 include the following.
|
|
|
:prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` allows to enable or disable the
|
|
|
generation of the compiler pre definitions file ``moc_predefs.h``.
|
|
|
|
|
|
-* Added sha1sum, sha224sum, sha256sum, sha384sum and sha512sum
|
|
|
- as an equivalent to existing md5sum to cmake command mode.
|
|
|
+CTest
|
|
|
+-----
|
|
|
|
|
|
-* The :command:`cmake_host_system_information` command learned more keys
|
|
|
- to get information about the processor capabilities and the host OS
|
|
|
- version.
|
|
|
+* A :variable:`CTEST_LABELS_FOR_SUBPROJECTS` CTest module variable and CTest
|
|
|
+ script variable were added to specify a list of labels that should be
|
|
|
+ treated as subprojects by CDash. To use this value in both the CTest module
|
|
|
+ and the ctest command line :ref:`Dashboard Client` mode (e.g. ``ctest -S``)
|
|
|
+ set it in the ``CTestConfig.cmake`` config file.
|
|
|
|
|
|
-* A :variable:`CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES` variable was added
|
|
|
- to tell the :generator:`CodeBlocks` extra generator to exclude files
|
|
|
- from outside the project root directory from the generated project files.
|
|
|
+CPack
|
|
|
+-----
|
|
|
|
|
|
* CPack gained a ``FREEBSD`` generator for FreeBSD ``pkg(8)``, configured
|
|
|
by the :module:`CPackFreeBSD` module.
|
|
|
|
|
|
+* The CPack ``DEB`` generator, configured by the :module:`CPackDeb` module,
|
|
|
+ was enabled on Windows. While not fully featured (due to the lack of
|
|
|
+ external UNIX tools) this will allow building basic cross-platform Debian
|
|
|
+ packages.
|
|
|
+
|
|
|
+* The :module:`CPackDeb` module learned to set package release version in
|
|
|
+ ``Version`` info property.
|
|
|
+ See the :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` variable.
|
|
|
+
|
|
|
+* The :module:`CPackDeb` module learned more strict package version checking
|
|
|
+ that complies with Debian rules.
|
|
|
+
|
|
|
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
|
|
|
:command:`cpack_ifw_configure_component_group` commands gained a new
|
|
|
``REPLACES`` and ``CHECKABLE`` options.
|
|
|
@@ -82,23 +226,21 @@ Changes made since CMake 3.9 include the following.
|
|
|
See :variable:`CPACK_RPM_PACKAGE_EPOCH` and
|
|
|
:variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables.
|
|
|
|
|
|
-* The :module:`CPackDeb` module learned to set package release version in
|
|
|
- `Version` info property.
|
|
|
- See :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` variable.
|
|
|
+Other
|
|
|
+-----
|
|
|
|
|
|
-* The :module:`CPackDeb` module learned more strict package version checking
|
|
|
- that complies with Debian rules.
|
|
|
+* The :manual:`cmake(1)` ``-E`` mode gained support for ``sha1sum``,
|
|
|
+ ``sha224sum``, ``sha256sum``, ``sha384sum``, and ``sha512sum``.
|
|
|
|
|
|
-* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned
|
|
|
- to add compiler launcher tools like ccache along with the compiler for the
|
|
|
- ``CUDA`` language (``C`` and ``CXX`` were supported previously). See the
|
|
|
- :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
|
|
|
- :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.
|
|
|
+* The graphviz output now distinguishes among the different dependency types
|
|
|
+ ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` and represents them in the output
|
|
|
+ graph as solid, dashed and dotted edges.
|
|
|
|
|
|
-* The CPack ``DEB`` generator, configured by the :module:`CPackDeb` module,
|
|
|
- was enabled on Windows. While not fully featured (due to the lack of
|
|
|
- external UNIX tools) this will allow building basic cross-platform Debian
|
|
|
- packages.
|
|
|
+Deprecated and Removed Features
|
|
|
+===============================
|
|
|
+
|
|
|
+* Support for building CMake itself with C++98 compilers was dropped.
|
|
|
+ CMake is now implemented using C++11.
|
|
|
|
|
|
* Support for building CMake on HP-UX has been dropped pending better
|
|
|
support for C++11 and a port of libuv. See `CMake Issue 17137`_.
|
|
|
@@ -106,122 +248,19 @@ Changes made since CMake 3.9 include the following.
|
|
|
|
|
|
.. _`CMake Issue 17137`: https://gitlab.kitware.com/cmake/cmake/issues/17137
|
|
|
|
|
|
-* The :command:`execute_process` command gained a ``RESULTS_VARIABLE``
|
|
|
- option to collect a list of results from all children in a pipeline
|
|
|
- of processes when multiple ``COMMAND`` arguments are given.
|
|
|
+Other Changes
|
|
|
+=============
|
|
|
+
|
|
|
+* On FreeBSD the C++ compiler named ``c++`` is now the preferred default.
|
|
|
|
|
|
* The :command:`file(GENERATE)` command now interprets relative paths
|
|
|
given to its ``OUTPUT`` and ``INPUT`` arguments with respect to the
|
|
|
caller's current binary and source directories, respectively.
|
|
|
See policy :policy:`CMP0070`.
|
|
|
|
|
|
-* The :module:`FindCurses` module gained a ``CURSES_NEED_WIDE`` option
|
|
|
- to request the wide-character variant.
|
|
|
-
|
|
|
-* The :module:`FindEXPAT` module now provides imported targets.
|
|
|
-
|
|
|
-* The :module:`FindFreetype` module now provides imported targets.
|
|
|
-
|
|
|
-* :module:`FindMPI` gained a number of new features, including:
|
|
|
-
|
|
|
- * Language-specific components have been added to the module.
|
|
|
- * Many more MPI environments are now supported.
|
|
|
- * The environmental support for Fortran has been improved.
|
|
|
- * A user now has fine-grained control over the MPI selection process,
|
|
|
- including passing custom parameters to the MPI compiler.
|
|
|
- * The version of the implemented MPI standard is now being exposed.
|
|
|
- * MPI-2 C++ bindings can now be detected and also suppressed if so desired.
|
|
|
- * The available Fortran bindings are now being detected and verified.
|
|
|
- * Various MPI-3 information can be requested, including the library version
|
|
|
- and Fortran capabilities of the individual bindings.
|
|
|
- * Statically linked MPI implementations are supported.
|
|
|
-
|
|
|
-* A :module:`FindOpenACC` module was added to detect compiler support
|
|
|
- for OpenACC. Currently only supports PGI, GNU and Cray compilers.
|
|
|
-
|
|
|
-* The :module:`FindOpenGL` module gained support for GLVND on Linux.
|
|
|
-
|
|
|
-* The :module:`FindOpenMP` module gained support for
|
|
|
- language-specific components.
|
|
|
-
|
|
|
-* A :module:`FindPatch` module was added to find the ``patch``
|
|
|
- command-line executable.
|
|
|
-
|
|
|
-* The `flang`_ Fortran compiler is now supported, with compiler id ``Flang``.
|
|
|
-
|
|
|
-.. _`flang`: https://github.com/flang-compiler/flang
|
|
|
-
|
|
|
-* On FreeBSD the C++ compiler named ``c++`` is now the preferred default.
|
|
|
-
|
|
|
* The :command:`get_filename_component` ``PROGRAM`` mode semantics
|
|
|
have been revised to not tolerate unquoted spaces in the path
|
|
|
to the program while also accepting arguments. While technically
|
|
|
incompatible with the old behavior, it is expected that behavior
|
|
|
under typical use cases with properly-quoted command-lines has
|
|
|
not changed.
|
|
|
-
|
|
|
-* The :module:`GoogleTest` module gained a new command
|
|
|
- :command:`gtest_discover_tests` implementing dynamic (build-time) test
|
|
|
- discovery. Unlike the source parsing approach, dynamic discovery executes
|
|
|
- the test (in 'list available tests' mode) at build time to discover tests.
|
|
|
- This is robust against unusual ways of labeling tests, provides much better
|
|
|
- support for advanced features such as parameterized tests, and does not
|
|
|
- require re-running CMake to discover added or removed tests within a test
|
|
|
- executable.
|
|
|
-
|
|
|
-* The graphviz output now distinguishes between the different dependency types
|
|
|
- ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` and represents them in the output graph
|
|
|
- as solid, dashed and dotted edges.
|
|
|
-
|
|
|
-* Support for the IAR ARM Compiler was improved.
|
|
|
-
|
|
|
-* The :command:`include_guard` command was introduced to allow guarding
|
|
|
- CMake scripts from being included more than once. The command supports
|
|
|
- ``DIRECTORY`` and ``GLOBAL`` options to adjust the corresponding include guard
|
|
|
- scope. If no options given, include guard is similar to basic variable-based
|
|
|
- check.
|
|
|
-
|
|
|
-* The :command:`configure_file` command learned to support indented
|
|
|
- ``# cmakedefine`` and ``# cmakedefine01``. Spaces and/or tabs between
|
|
|
- the ``#`` character and the ``cmakedefine``/``cmakedefine01`` words
|
|
|
- are now understood and preserved in the output.
|
|
|
-
|
|
|
-* The :module:`InstallRequiredSystemLibraries` gained support for installing
|
|
|
- Intel compiler runtimes.
|
|
|
-
|
|
|
-* A :variable:`CTEST_LABELS_FOR_SUBPROJECTS` CTest module variable and CTest
|
|
|
- script variable was added to specify a list of labels that should be treated
|
|
|
- as subprojects by CDash. To use this value in both the CTest module and the
|
|
|
- ctest command line `Dashboard Client` mode (e.g. ctest -S) set it in the
|
|
|
- CTestConfig.cmake config file.
|
|
|
-
|
|
|
-* A :prop_dir:`LABELS` directory property was added to specify labels
|
|
|
- for all targets and tests in a directory.
|
|
|
-
|
|
|
-* A :variable:`CMAKE_DIRECTORY_LABELS` variable was added to specify
|
|
|
- labels for all tests in a directory.
|
|
|
-
|
|
|
-* A new minimal platform file for ``Midipix`` was added.
|
|
|
-
|
|
|
-* Support for the MSVC ARM64 architecture was added.
|
|
|
- Visual Studio 2017 Update 4 and above offer an ARM64 toolchain.
|
|
|
-
|
|
|
-* The :module:`FindProtobuf` module :command:`protobuf_generate_cpp` command
|
|
|
- gained a ``DESCRIPTORS`` option to generate descriptor files.
|
|
|
-
|
|
|
-* Support for building CMake itself with C++98 compilers was dropped.
|
|
|
- CMake is now implemented using C++11.
|
|
|
-
|
|
|
-* The :command:`string` command learned a new ``PREPEND`` subcommand.
|
|
|
-
|
|
|
-* A :prop_dir:`TEST_INCLUDE_FILES` directory property was added to
|
|
|
- list any number of files to be included when running tests with
|
|
|
- :manual:`ctest(1)`. This generalizes the :prop_dir:`TEST_INCLUDE_FILE`
|
|
|
- property.
|
|
|
-
|
|
|
-* The :command:`string(TIMESTAMP)` command now supports ``%A``
|
|
|
- for full weekday name and ``%B`` for full month name.
|
|
|
-
|
|
|
-* The :prop_tgt:`VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>`
|
|
|
- target property was added to support custom XML tags for reference
|
|
|
- assemblies in C# targets.
|