| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 | 
							- CMake 3.10 Release Notes
 
- ************************
 
- .. only:: html
 
-   .. contents::
 
- 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.  Note that a breaking change was made in CMake 3.10.3 to address
 
-   an ambiguity of the ``TIMEOUT`` keyword (see :ref:`Release Notes 3.10.3`).
 
- * 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
 
-   ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>`` instead of
 
-   ``<AUTOGEN_BUILD_DIR>/include``.
 
- * When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`,
 
-   source files that are :prop_sf:`GENERATED` will be processed as well.
 
-   They were ignored by :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`
 
-   in earlier releases.
 
-   See policy :policy:`CMP0071`.
 
- * When using :prop_tgt:`AUTOMOC`, CMake searches for the strings ``Q_OBJECT``,
 
-   ``Q_GADGET`` or ``Q_NAMESPACE`` in a source file to determine if it needs
 
-   to be ``moc`` processed.  The new :variable:`CMAKE_AUTOMOC_MACRO_NAMES`
 
-   variable and :prop_tgt:`AUTOMOC_MACRO_NAMES` target property may be set
 
-   to register additional strings (macro names) to search for.
 
- * When using :prop_tgt:`AUTOMOC`, the new
 
-   :variable:`CMAKE_AUTOMOC_COMPILER_PREDEFINES` variable and
 
-   :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` target property specify whether
 
-   to enable or disable the generation of the compiler pre definitions file
 
-   ``moc_predefs.h``.
 
- CTest
 
- -----
 
- * 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.
 
- CPack
 
- -----
 
- * A :cpack_gen:`CPack FreeBSD Generator` was added for FreeBSD ``pkg(8)``.
 
- * The :cpack_gen:`CPack DEB Generator` 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 :cpack_gen:`CPack DEB Generator` learned to set package release
 
-   version in ``Version`` info property.
 
-   See the :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` variable.
 
- * The :cpack_gen:`CPack DEB Generator` 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.
 
- * The :cpack_gen:`CPack IFW Generator` gained new
 
-   :variable:`CPACK_IFW_PACKAGE_FILE_EXTENSION` variable to customize
 
-   target binary format.
 
- * The :cpack_gen:`CPack IFW Generator` gained new
 
-   :variable:`CPACK_IFW_REPOSITORIES_DIRECTORIES` variable to specify
 
-   additional repositories dirs that will be used to resolve and
 
-   repack dependent components. This feature is only available when
 
-   using QtIFW 3.1 or later.
 
- * The :cpack_gen:`CPack RPM Generator` and :cpack_gen:`CPack DEB Generator`
 
-   learned to set the package epoch version.
 
-   See :variable:`CPACK_RPM_PACKAGE_EPOCH` and
 
-   :variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables.
 
- Other
 
- -----
 
- * The :manual:`cmake(1)` ``-E`` mode gained support for ``sha1sum``,
 
-   ``sha224sum``, ``sha256sum``, ``sha384sum``, and ``sha512sum``.
 
- * 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.
 
- 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`_.
 
-   Use CMake 3.9 or lower instead for HP-UX support.
 
- .. _`CMake Issue 17137`: https://gitlab.kitware.com/cmake/cmake/issues/17137
 
- 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 :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.
 
- Updates
 
- =======
 
- Changes made since CMake 3.10.0 include the following.
 
- 3.10.1
 
- ------
 
- * The :manual:`cmake-server(7)` ``codemodel`` response ``crossReferences``
 
-   field added by 3.10.0 has been dropped due to excessive memory usage.
 
-   Another approach will be needed to provide backtrace information.
 
- .. _`Release Notes 3.10.3`:
 
- 3.10.3
 
- ------
 
- * CMake 3.10.1 added a ``TIMEOUT`` option to :command:`gtest_discover_tests`
 
-   from the :module:`GoogleTest` module.  That keyword clashed with the
 
-   ``TIMEOUT`` test property, which is one of the common properties that
 
-   would be set with the command's ``PROPERTIES`` keyword, usually leading
 
-   to legal but unintended behavior.  The keyword was changed to
 
-   ``DISCOVERY_TIMEOUT`` in CMake 3.10.3 to address this problem.  The
 
-   ambiguous behavior of the :command:`gtest_discover_tests` command's
 
-   ``TIMEOUT`` keyword in 3.10.1 and 3.10.2 has not been preserved.
 
 
  |