| CMake 3.13 Release Notes |
| ************************ |
| |
| .. only:: html |
| |
| .. contents:: |
| |
| Changes made since CMake 3.12 include the following. |
| |
| New Features |
| ============ |
| |
| Generators |
| ---------- |
| |
| * The :ref:`Visual Studio Generators` for VS 2010 and above learned to |
| support the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property |
| and supporting :module:`CheckIPOSupported` module. |
| |
| * The :generator:`Xcode` generator learned to configure more Xcode Scheme |
| fields. See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable. |
| |
| * The :generator:`Green Hills MULTI` generator has been updated: |
| |
| - Added support for architecture selection through |
| :variable:`CMAKE_GENERATOR_PLATFORM`: |
| e.g. ``arm``, ``ppc``, and ``86``. |
| |
| - Added support for toolset selection through |
| :variable:`CMAKE_GENERATOR_TOOLSET`, |
| e.g. ``comp_201205``, ``comp_201510``, ``comp_201722_beta``. |
| |
| - Added support for platform selection through ``GHS_TARGET_PLATFORM``, |
| e.g. ``integrity``, ``linux``, ``standalone``, etc. |
| |
| - No longer checks that ``arm`` based compilers are installed but ensures |
| that the correct ``gbuild.exe`` exists. |
| |
| - No longer hard-codes ARM files, BSP, toolset, or OS locations. |
| |
| Command-Line |
| ------------ |
| |
| * The :manual:`cmake(1)` command gained the ``-S <source_dir>`` |
| command line option to specify the location of the source directory. |
| This option can be used independently of ``-B``. |
| |
| * The :manual:`cmake(1)` command gained the ``-B <build_dir>`` |
| command line option to specify the location of the build directory. |
| This option can be used independently of ``-S``. |
| |
| * The :manual:`cmake(1)` ``-E create_symlink`` command can now be used |
| on Windows. |
| |
| Commands |
| -------- |
| |
| * The :command:`add_custom_command` and :command:`add_custom_target` commands |
| learned to support generator expressions in ``WORKING_DIRECTORY`` options. |
| |
| * The :command:`add_link_options` command was created to add link |
| options in the current directory. |
| |
| * The :command:`install(TARGETS)` command learned to install targets |
| created outside the current directory. |
| |
| * The :command:`link_directories` command gained options to control |
| insertion position. |
| |
| * The :command:`list(SORT)` command gained options to control the |
| comparison operation used to order the entries. |
| |
| * The :command:`math` command gained options for hexadecimal. |
| |
| * The :command:`target_link_directories` command was created to |
| specify link directories for targets and their dependents. |
| |
| * The :command:`target_link_options` command was created to |
| specify link options for targets and their dependents. |
| |
| * The :command:`target_link_libraries` command may now be called |
| to modify targets created outside the current directory. |
| See policy :policy:`CMP0079`. |
| |
| Variables |
| --------- |
| |
| * A :variable:`CMAKE_AUTOGEN_VERBOSE` variable was added to optionally |
| increase the verbosity of :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` |
| and :prop_tgt:`AUTORCC` from within CMake project code. |
| |
| * A :variable:`CMAKE_VS_GLOBALS` variable was added to initialize |
| :prop_tgt:`VS_GLOBAL_<variable>` target properties on targets as |
| they are created. |
| |
| Properties |
| ---------- |
| |
| * The :prop_tgt:`DEPLOYMENT_ADDITIONAL_FILES` target property was |
| added to tell the :generator:`Visual Studio 9 2008` generator |
| to specify additional files for deployment to WinCE devices |
| for remote debugging. |
| |
| * The :prop_tgt:`INTERFACE_LINK_DEPENDS` target property was created |
| to specify transitive link dependencies on files. |
| |
| * The :prop_tgt:`LINK_DEPENDS` target property learned to support |
| :manual:`generator expressions <cmake-generator-expressions(7)>`. |
| |
| * :prop_tgt:`LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DIRECTORIES` |
| target properties were added to collect link directories for a target |
| and its dependents. Use the :command:`target_link_directories` command |
| to set them. |
| |
| * :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target |
| properties were added to collect link options for a target and its |
| dependents. Use the :command:`target_link_options` command to set them. |
| |
| * A :prop_dir:`LINK_OPTIONS` directory property was added to collect |
| link options for targets created under the current directory. |
| Use the :command:`add_link_options` command to set it. |
| |
| * A :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property was created |
| to specify archiver options to use when creating static libraries. |
| |
| * A :prop_tgt:`VS_DEBUGGER_COMMAND_ARGUMENTS` target property was created to |
| set the debugging command line arguments with |
| :ref:`Visual Studio Generators` for VS 2010 and above. |
| |
| * A :prop_tgt:`VS_DEBUGGER_ENVIRONMENT` target property was created to |
| set the debugging environment with |
| :ref:`Visual Studio Generators` for VS 2010 and above. |
| |
| * The :prop_tgt:`VS_DEBUGGER_COMMAND` and |
| :prop_tgt:`VS_DEBUGGER_WORKING_DIRECTORY` target properties |
| now support generator expressions. |
| |
| Modules |
| ------- |
| |
| * The :module:`FindBoost` module gained a ``Boost_ARCHITECTURE`` option |
| to specify a Boost architecture-specific library filename fragment. |
| |
| * The :module:`FindCURL` module learned to find debug and release variants |
| separately. |
| |
| * The :module:`FindMatlab` module gained new components ``ENGINE_LIBRARY`` and |
| ``DATAARRAY_LIBRARY`` to request finding the Matlab C++ Engine and DataArray |
| libraries respectively. |
| |
| * The :module:`FindMatlab` module now explicitly exports mexFunction in Visual |
| Studio. |
| |
| * The :module:`FindMatlab` module gained a new ``MCC_COMPILER`` |
| component to request finding the Matlab Compiler add-on. |
| |
| * The :module:`FindPkgConfig` module gained an option to create imported |
| targets in global scope. |
| |
| * The :module:`FindPkgConfig` module gained support for ``<`` and ``>`` |
| operators for version checks in addition to the already supported |
| operators ``>=``, ``<=``, and ``=``. |
| |
| * Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` |
| gain capability to control order of resource lookup on macOS (Framework) and |
| Windows (Registry). |
| |
| * The :module:`FindSubversion` module ``Subversion_WC_INFO`` command |
| gained an ``IGNORE_SVN_FAILURE`` option to suppress failures, |
| e.g. when the source tree is not under Subversion control. |
| |
| * The :module:`UseSWIG` module learned to manage target property |
| :prop_tgt:`INCLUDE_DIRECTORIES` for ``SWIG`` compilation. |
| |
| CTest |
| ----- |
| |
| * :manual:`ctest(1)` gained a ``--progress`` option to enable a live |
| test progress summary when output goes to a terminal. |
| |
| CPack |
| ----- |
| |
| * The :cpack_gen:`CPack DEB Generator` learned to split debug symbols into |
| a corresponding .ddeb package when ``CPACK_DEBIAN_DEBUGINFO_PACKAGE`` is |
| set. |
| |
| * The :cpack_gen:`CPack DEB Generator` learned to honor the ``SOURCE_DATE_EPOCH`` |
| environment variable when packaging files. This is useful for generating |
| reproducible packages. |
| |
| * CPack gained a new :cpack_gen:`CPack External Generator` which is used to |
| export the CPack metadata in a format that other software can understand. The |
| intention of this generator is to allow external packaging software to take |
| advantage of CPack's features when it may not be possible to use CPack for |
| the entire packaging process. |
| |
| Deprecated and Removed Features |
| =============================== |
| |
| * An explicit deprecation diagnostic was added for policies ``CMP0055`` |
| through ``CMP0063`` (``CMP0054`` 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. |
| |
| Other Changes |
| ============= |
| |
| * The precompiled binaries provided on ``cmake.org`` now include |
| qthelp-format documentation. |
| |
| * The :command:`option` command now honors an existing normal variable |
| of the same name and does nothing instead of possibly creating a cache |
| entry (or setting its type) and removing the normal variable. |
| See policy :policy:`CMP0077`. |
| |
| * The :ref:`Makefile Generators` learned to remove custom command and |
| custom target byproducts during ``make clean``. |
| |
| * The :command:`target_sources` command now interprets relative source file |
| paths as relative to the current source directory. This simplifies |
| incrementally building up a target's sources from subdirectories. The |
| :policy:`CMP0076` policy was added to provide backward compatibility with |
| the old behavior where required. |
| |
| * The :module:`BundleUtilities` module may no longer be included at configure |
| time. This was always a bug anyway. See policy :policy:`CMP0080`. |
| |
| * The :module:`UseSWIG` module has changed strategy for target naming. |
| See policy :policy:`CMP0078`. |
| |
| * The :prop_tgt:`LINK_DIRECTORIES` target property now expects absolute paths. |
| See policy :policy:`CMP0081`. |
| |
| * The CPack generators have been moved into their own separate section |
| in the documentation, rather than having the documentation in their |
| internal implementation modules. |
| These internal implementation modules are also no longer available |
| to scripts that may have been incorrectly including them, because |
| they should never have been available in the first place. |