|
| 1 | +CMake 3.13 Release Notes |
| 2 | +************************ |
| 3 | + |
| 4 | +.. only:: html |
| 5 | + |
| 6 | + .. contents:: |
| 7 | + |
| 8 | +Changes made since CMake 3.12 include the following. |
| 9 | + |
| 10 | +New Features |
| 11 | +============ |
| 12 | + |
| 13 | +Generators |
| 14 | +---------- |
| 15 | + |
| 16 | +* The :ref:`Visual Studio Generators` for VS 2010 and above learned to |
| 17 | + support the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property |
| 18 | + and supporting :module:`CheckIPOSupported` module. |
| 19 | + |
| 20 | +* The :generator:`Xcode` generator learned to configure more Xcode Scheme |
| 21 | + fields. See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable. |
| 22 | + |
| 23 | +* The :generator:`Green Hills MULTI` generator has been udpated: |
| 24 | + |
| 25 | + - Added support for architecture selection through |
| 26 | + :variable:`CMAKE_GENERATOR_PLATFORM`: |
| 27 | + e.g. ``arm``, ``ppc``, and ``86``. |
| 28 | + |
| 29 | + - Added support for toolset selection through |
| 30 | + :variable:`CMAKE_GENERATOR_TOOLSET`, |
| 31 | + e.g. ``comp_201205``, ``comp_201510``, ``comp_201722_beta``. |
| 32 | + |
| 33 | + - Added support for platform selection through ``GHS_TARGET_PLATFORM``, |
| 34 | + e.g. ``integrity``, ``linux``, ``standalone``, etc. |
| 35 | + |
| 36 | + - No longer checks that ``arm`` based compilers are installed but ensures |
| 37 | + that the correct ``gbuild.exe`` exists. |
| 38 | + |
| 39 | + - No longer hard-codes ARM files, BSP, toolset, or OS locations. |
| 40 | + |
| 41 | +Command-Line |
| 42 | +------------ |
| 43 | + |
| 44 | +* The :manual:`cmake(1)` command gained the ``-S <source_dir>`` |
| 45 | + command line option to specify the location of the source directory. |
| 46 | + This option can be used independently of ``-B``. |
| 47 | + |
| 48 | +* The :manual:`cmake(1)` command gained the ``-B <build_dir>`` |
| 49 | + command line option to specify the location of the build directory. |
| 50 | + This option can be used independently of ``-S``. |
| 51 | + |
| 52 | +* The :manual:`cmake(1)` ``-E create_symlink`` command can now be used |
| 53 | + on Windows. |
| 54 | + |
| 55 | +Commands |
| 56 | +-------- |
| 57 | + |
| 58 | +* The :command:`add_custom_command` and :command:`add_custom_target` commands |
| 59 | + learned to support generator expressions in ``WORKING_DIRECTORY`` options. |
| 60 | + |
| 61 | +* The :command:`add_link_options` command was created to add link |
| 62 | + options in the current directory. |
| 63 | + |
| 64 | +* The :command:`install(CODE)` and :command:`install(SCRIPT)` commands |
| 65 | + learned to support generator expressions. |
| 66 | + |
| 67 | +* The :command:`install(TARGETS)` command learned to install targets |
| 68 | + created outside the current directory. |
| 69 | + |
| 70 | +* The :command:`link_directories` command gained options to control |
| 71 | + insertion position. |
| 72 | + |
| 73 | +* The :command:`list(SORT)` command gained options to control the |
| 74 | + comparison operation used to order the entries. |
| 75 | + |
| 76 | +* The :command:`math` command gained options for hexadecimal. |
| 77 | + |
| 78 | +* The :command:`target_link_directories` command was created to |
| 79 | + specify link directories for targets and their dependents. |
| 80 | + |
| 81 | +* The :command:`target_link_options` command was created to |
| 82 | + specify link options for targets and their dependents. |
| 83 | + |
| 84 | +* The :command:`target_link_libraries` command may now be called |
| 85 | + to modify targets created outside the current directory. |
| 86 | + See policy :policy:`CMP0079`. |
| 87 | + |
| 88 | +Variables |
| 89 | +--------- |
| 90 | + |
| 91 | +* A :variable:`CMAKE_AUTOGEN_VERBOSE` variable was added to optionally |
| 92 | + increase the verbosity of :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` |
| 93 | + and :prop_tgt:`AUTORCC` from within CMake project code. |
| 94 | + |
| 95 | +* A :variable:`CMAKE_VS_GLOBALS` variable was added to initialize |
| 96 | + :prop_tgt:`VS_GLOBAL_<variable>` target properties on targets as |
| 97 | + they are created. |
| 98 | + |
| 99 | +Properties |
| 100 | +---------- |
| 101 | + |
| 102 | +* The :prop_tgt:`DEPLOYMENT_ADDITIONAL_FILES` target property was |
| 103 | + added to tell the :generator:`Visual Studio 9 2008` generator |
| 104 | + to specify additional files for deployment to WinCE devices |
| 105 | + for remote debugging. |
| 106 | + |
| 107 | +* The :prop_tgt:`INTERFACE_LINK_DEPENDS` target property was created |
| 108 | + to specify transitive link dependencies on files. |
| 109 | + |
| 110 | +* The :prop_tgt:`LINK_DEPENDS` target property learned to support |
| 111 | + :manual:`generator expressions <cmake-generator-expressions(7)>`. |
| 112 | + |
| 113 | +* :prop_tgt:`LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DIRECTORIES` |
| 114 | + target properties were added to collect link directories for a target |
| 115 | + and its dependents. Use the :command:`target_link_directories` command |
| 116 | + to set them. |
| 117 | + |
| 118 | +* :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target |
| 119 | + properties were added to collect link options for a target and its |
| 120 | + dependents. Use the :command:`target_link_options` command to set them. |
| 121 | + |
| 122 | +* A :prop_dir:`LINK_OPTIONS` directory property was added to collect |
| 123 | + link options for targets created under the current directory. |
| 124 | + Use the :command:`add_link_options` command to set it. |
| 125 | + |
| 126 | +* A :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property was created |
| 127 | + to specify archiver options to use when creating static libraries. |
| 128 | + |
| 129 | +* A :prop_tgt:`VS_DEBUGGER_COMMAND_ARGUMENTS` target property was created to |
| 130 | + set the debugging command line arguments with |
| 131 | + :ref:`Visual Studio Generators` for VS 2010 and above. |
| 132 | + |
| 133 | +* A :prop_tgt:`VS_DEBUGGER_ENVIRONMENT` target property was created to |
| 134 | + set the debugging environment with |
| 135 | + :ref:`Visual Studio Generators` for VS 2010 and above. |
| 136 | + |
| 137 | +* The :prop_tgt:`VS_DEBUGGER_COMMAND` and |
| 138 | + :prop_tgt:`VS_DEBUGGER_WORKING_DIRECTORY` target properties |
| 139 | + now support generator expressions. |
| 140 | + |
| 141 | +Modules |
| 142 | +------- |
| 143 | + |
| 144 | +* The :module:`FindCURL` module learned to find debug and release variants |
| 145 | + separately. |
| 146 | + |
| 147 | +* The :module:`FindMatlab` module gained new components ``ENGINE_LIBRARY`` and |
| 148 | + ``DATAARRAY_LIBRARY`` to request finding the Matlab C++ Engine and DataArray |
| 149 | + libraries respectively. |
| 150 | + |
| 151 | +* The :module:`FindMatlab` module now explicitly exports mexFunction in Visual |
| 152 | + Studio. |
| 153 | + |
| 154 | +* The :module:`FindMatlab` module gained a new ``MCC_COMPILER`` |
| 155 | + component to request finding the Matlab Compiler add-on. |
| 156 | + |
| 157 | +* The :module:`FindPkgConfig` module gained an option to create imported |
| 158 | + targets in global scope. |
| 159 | + |
| 160 | +* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` |
| 161 | + gain capability to control order of resource lookup on macOS (Framework) and |
| 162 | + Windows (Registry). |
| 163 | + |
| 164 | +* The :module:`FindSubversion` module ``Subversion_WC_INFO`` command |
| 165 | + gained an ``IGNORE_SVN_FAILURE`` option to suppress failures, |
| 166 | + e.g. when the source tree is not under Subversion control. |
| 167 | + |
| 168 | +* The :module:`UseSWIG` module learned to manage target property |
| 169 | + :prop_tgt:`INCLUDE_DIRECTORIES` for ``SWIG`` compilation. |
| 170 | + |
| 171 | +CTest |
| 172 | +----- |
| 173 | + |
| 174 | +* :manual:`ctest(1)` gained a ``--progress`` option to enable a live |
| 175 | + test progress summary when output goes to a terminal. |
| 176 | + |
| 177 | +CPack |
| 178 | +----- |
| 179 | + |
| 180 | +* The :cpack_gen:`CPack Deb Generator` learned to split debug symbols into |
| 181 | + a corresponding .ddeb package when ``CPACK_DEBIAN_DEBUGINFO_PACKAGE`` is |
| 182 | + set. |
| 183 | + |
| 184 | +* The :cpack_gen:`CPack Deb Generator` learned to honor the ``SOURCE_DATE_EPOCH`` |
| 185 | + environment variable when packaging files. This is useful for generating |
| 186 | + reproducible packages. |
| 187 | + |
| 188 | +* CPack gained a new :cpack_gen:`CPack External Generator` which is used to |
| 189 | + export the CPack metadata in a format that other software can understand. The |
| 190 | + intention of this generator is to allow external packaging software to take |
| 191 | + advantage of CPack's features when it may not be possible to use CPack for |
| 192 | + the entire packaging process. |
| 193 | + |
| 194 | +Deprecated and Removed Features |
| 195 | +=============================== |
| 196 | + |
| 197 | +* An explicit deprecation diagnostic was added for policies ``CMP0055`` |
| 198 | + through ``CMP0063`` (``CMP0054`` and below were already deprecated). |
| 199 | + The :manual:`cmake-policies(7)` manual explains that the OLD behaviors |
| 200 | + of all policies are deprecated and that projects should port to the |
| 201 | + NEW behaviors. |
| 202 | + |
| 203 | +Other Changes |
| 204 | +============= |
| 205 | + |
| 206 | +* The :command:`option` command now honors existing normal variables instead |
| 207 | + of replacing them with a cache entry. See policy :policy:`CMP0077`. |
| 208 | + |
| 209 | +* The :ref:`Makefile Generators` learned to remove custom command and |
| 210 | + custom target byproducts during ``make clean``. |
| 211 | + |
| 212 | +* The :command:`target_sources` command now interprets relative source file |
| 213 | + paths as relative to the current source directory. This simplifies |
| 214 | + incrementally building up a target's sources from subdirectories. The |
| 215 | + :policy:`CMP0076` policy was added to provide backward compatibility with |
| 216 | + the old behavior where required. |
| 217 | + |
| 218 | +* The :module:`BundleUtilities` module may no longer be included at configure |
| 219 | + time. This was always a bug anyway. See policy :policy:`CMP0080`. |
| 220 | + |
| 221 | +* The :module:`UseSWIG` module has changed strategy for target naming. |
| 222 | + See policy :policy:`CMP0078`. |
| 223 | + |
| 224 | +* The :prop_tgt:`LINK_DIRECTORIES` target property now expects absolute paths. |
| 225 | + See policy :policy:`CMP0081`. |
| 226 | + |
| 227 | +* The CPack generators have been moved into their own separate section |
| 228 | + in the documentation, rather than having the documentation in their |
| 229 | + internal implementation modules. |
| 230 | + These internal implementation modules are also no longer available |
| 231 | + to scripts that may have been incorrectly including them, because |
| 232 | + they should never have been available in the first place. |
0 commit comments