I am happy to announce that CMake 3.14.0 is now available for download at:

https://cmake.org/download/

The first two 3.14.0 release candidates included the FindOcatave

module. This has been removed in rc3, and rc4 pending further development.

Documentation is available at:

https://cmake.org/cmake/help/v3.14

Release notes appear below and are also published at

https://cmake.org/cmake/help/v3.14/release/3.14.html

Some of the more significant changes in CMake 3.14 are:

Support for running CMake on Windows XP and Windows Vista has been

dropped. The precompiled Windows binaries provided on “cmake.org”

now require Windows 7 or higher.

dropped. The precompiled Windows binaries provided on “cmake.org” now require Windows 7 or higher. CMake now supports Cross Compiling for iOS, tvOS, or watchOS using

simple toolchain files.

simple toolchain files. The “Visual Studio 16 2019” generator was added. This is

experimental and based on “Visual Studio 2019 Preview 4” because

this version of VS has not been released.The VS 2019 generator differs from generators for earlier versions

in that it does not provide variants that specify the target

platform in the generator name. Instead “CMAKE_GENERATOR_PLATFORM”

must be used, e.g. through the “-A” command-line option.

Furthermore, the default target platform (architecture) is now based

on the *host* platform. The VS host toolset selection is now based

on the host architecture as well.

experimental and based on “Visual Studio 2019 Preview 4” because this version of VS has not been released.The VS 2019 generator differs from generators for earlier versions in that it does not provide variants that specify the target platform in the generator name. Instead “CMAKE_GENERATOR_PLATFORM” must be used, e.g. through the “-A” command-line option. Furthermore, the default target platform (architecture) is now based on the *host* platform. The VS host toolset selection is now based on the host architecture as well. The “Green Hills MULTI” generator has been updated to include Object

Library support, support for target renaming and destination output

control properties, and other improvements.

Library support, support for target renaming and destination output control properties, and other improvements. A “CMAKE_BUILD_RPATH_USE_ORIGIN” variable and corresponding

“BUILD_RPATH_USE_ORIGIN” target property were added to enable use of

relative runtime paths (RPATHs). This helps achieving relocatable

and reproducible builds that are invariant of the build directory.

“BUILD_RPATH_USE_ORIGIN” target property were added to enable use of relative runtime paths (RPATHs). This helps achieving relocatable and reproducible builds that are invariant of the build directory. The “install(TARGETS)” command learned how to install to an

appropriate default directory for a given target type, based on

variables from the “GNUInstallDirs” module and built-in defaults, in

lieu of a “DESTINATION” argument.

appropriate default directory for a given target type, based on variables from the “GNUInstallDirs” module and built-in defaults, in lieu of a “DESTINATION” argument. The “install(FILES)” and “install(DIRECTORY)” commands learned a

new set of parameters for installing files as a file type, setting

the destination based on the appropriate variables from

“GNUInstallDirs” and built-in defaults, in lieu of a “DESTINATION”

argument.

new set of parameters for installing files as a file type, setting the destination based on the appropriate variables from “GNUInstallDirs” and built-in defaults, in lieu of a “DESTINATION” argument. The “install(CODE)” and “install(SCRIPT)” commands learned to

support generator expressions. See policy “CMP0087”.

support generator expressions. See policy “CMP0087”. The “if()” command gained support for checking if cache variables

are defined with the “DEFINED CACHE{VAR}” syntax.

are defined with the “DEFINED CACHE{VAR}” syntax. A file-based api for clients to get semantic buildsystem

information has been added. See the “cmake-file-api(7)” manual.

This is intended to replace the “cmake-server(7)” mode for IDEs.

information has been added. See the “cmake-file-api(7)” manual. This is intended to replace the “cmake-server(7)” mode for IDEs. The “cmake(1)” Build Tool Mode (“cmake –build”) gained “–

verbose” and “-v” options to specify verbose build output. Some

generators such as Xcode don’t support this option currently.

verbose” and “-v” options to specify verbose build output. Some generators such as Xcode don’t support this option currently. The “cmake(1)” “-E compare_files” command learned a new “–ignore-

eol” option to specify that end-of-line differences (e.g. LF vs

CRLF) should be ignored when comparing files.

CMake 3.14 Release Notes ************************ Changes made since CMake 3.13 include the following. New Features ============ Generators ---------- * The "Visual Studio 16 2019" generator was added. This is experimental and based on "Visual Studio 2019 Preview 4" because this version of VS has not been released. The VS 2019 generator differs from generators for earlier versions in that it does not provide variants that specify the target platform in the generator name. Instead "CMAKE_GENERATOR_PLATFORM" must be used, e.g. through the "-A" command-line option. Furthermore, the default target platform (architecture) is now based on the *host* platform. The VS host toolset selection is now based on the host architecture as well. * The "Green Hills MULTI" generator has been updated: * Now supports Object Libraries. * Now warns on unsupported project types such as shared libraries. * Now generates a top-level ".top.gpj" for each directory calling the "project()" command. The top-level project file "default.gpj" is no longer created. * Now honors target renaming and destination output control properties such as "RUNTIME_OUTPUT_DIRECTORY" and "OUTPUT_NAME". This also fixes support for installation rules generated by "install()". * Now honors source file properties "INCLUDE_DIRECTORIES", "COMPILE_DEFINITIONS", and "COMPILE_OPTIONS". * Now supports Dynamic Download Integrity Applications which did not include Integrate Files via "GHS_INTEGRITY_APP" and setting a target link flag of "-dynamic". * The contents of project files now sorts sources groups and files by name. Set the "GHS_NO_SOURCE_GROUP_FILE" target property to "ON" to generate a single project file for the target instead of a project file for each source group. Set the "CMAKE_GHS_NO_SOURCE_GROUP_FILE" variable to enable this for all targets. File-Based API -------------- * A file-based api for clients to get semantic buildsystem information has been added. See the "cmake-file-api(7)" manual. This is intended to replace the "cmake-server(7)" mode for IDEs. Platforms --------- * CMake now supports Cross Compiling for iOS, tvOS, or watchOS using simple toolchain files. Command-Line ------------ * The "cmake(1)" Build Tool Mode ("cmake --build") gained "-- verbose" and "-v" options to specify verbose build output. Some generators such as Xcode don't support this option currently. * The "cmake(1)" "-E compare_files" command learned a new "--ignore- eol" option to specify that end-of-line differences (e.g. LF vs CRLF) should be ignored when comparing files. * The "cmake-gui(1)" dialog gained new "-S" and "-B" arguments to explicitly specify source and build directories. Commands -------- * The "file()" command learned a new sub-command, "CREATE_LINK", which can be used to create hard or symbolic links. * The "file()" command learned a new sub-command, "READ_SYMLINK", which can be used to determine the path that a symlink points to. * The "file()" command gained a "SIZE" mode to get the size of a file on disk. * The "find_package()" command learned to optionally resolve symbolic links in the paths to package configuration files. See the "CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS" variable. * The "get_filename_component()" command gained new "LAST_EXT" and "NAME_WLE" variants to work with the extension after the last "." in the name. * The "if()" command gained support for checking if cache variables are defined with the "DEFINED CACHE{VAR}" syntax. * The "install(CODE)" and "install(SCRIPT)" commands learned to support generator expressions. See policy "CMP0087". * The "install(TARGETS)" command learned how to install to an appropriate default directory for a given target type, based on variables from the "GNUInstallDirs" module and built-in defaults, in lieu of a "DESTINATION" argument. * The "install(FILES)" and "install(DIRECTORY)" commands learned a new set of parameters for installing files as a file type, setting the destination based on the appropriate variables from "GNUInstallDirs" and built-in defaults, in lieu of a "DESTINATION" argument. * The "list()" operations "REMOVE_ITEM", "REMOVE_DUPLICATES", "SORT", "REVERSE", and "FILTER" all now accept a non-existent variable as the list since these operations on empty lists is also the empty list. * The "list()" operation "REMOVE_AT" now indicates that the given indices are invalid for a non-existent variable or empty list. * The "try_compile()" and "try_run()" commands gained a new "LINK_OPTIONS" option. Variables --------- * A "CMAKE_BUILD_RPATH_USE_ORIGIN" variable and corresponding "BUILD_RPATH_USE_ORIGIN" target property were added to enable use of relative runtime paths (RPATHs). This helps achieving relocatable and reproducible builds that are invariant of the build directory. Properties ---------- * A "CMAKE_ROLE" global property was added to allow scripts to determine whether they're running in project mode, script mode, find-package mode, CTest, or CPack. * The "CUDA_RESOLVE_DEVICE_SYMBOLS" target property is now supported on shared library, module library, and executable targets. Previously it was only honored on static libraries. * The "EXCLUDE_FROM_ALL" target property was created to override the setting of its directory. A target will now be built as part of "all" if its "EXCLUDE_FROM_ALL" property is set to "OFF", even if its containing directory is marked as "EXCLUDE_FROM_ALL". * "INTERFACE_POSITION_INDEPENDENT_CODE" target property gains the support of "generator expressions". Modules ------- * The family of modules to check capabilities (like "CheckCSourceCompiles") gain capability to manage "LINK_OPTIONS". * A "CheckFortranSourceRuns" module was added to provide a "check_fortran_source_runs()" command to check if a Fortran source snippet compiles and runs. * The "CMakePackageConfigHelpers" module’s "write_basic_package_version_file()" command gained a new "ARCH_INDEPENDENT" option for supporting architecture-independent packages. * The "ExternalProject" module "ExternalProject_Add()" command gained "LOG_DIR" and "LOG_MERGED_STDOUTERR" options to control logging. * The "ExternalProject" module "ExternalProject_Add()" command gained "LOG_PATCH" to optionally log the patch step. * The "ExternalProject" module's "ExternalProject_Add()" command learned to apply "SOURCE_SUBDIR" when "BUILD_IN_SOURCE" is also used. The "BUILD_COMMAND" is run in the given "SOURCE_SUBDIR" of the "SOURCE_DIR". * The "FetchContent" module gained a new "FetchContent_MakeAvailable()" command. It accepts a list of dependency names, which it then iterates over, populating and adding each one to the main build using the canonical pattern. This significantly reduces the amount of boilerplate needed in a project. * The "FindBISON" module's "BISON_TARGET" command now runs "bison" with "CMAKE_CURRENT_BINARY_DIR" as the working directory. See policy "CMP0088". * The "FindCURL" module gained support for requesting protocols as package components. * The "FindFontconfig" module was added to find fontconfig. * The "FindGDAL" module now provides imported targets. * The "FindGIF" module now provides imported targets. * The "FindGit" module now provides an imported target for the Git executable. * The "FindIce" module learned to find "slice2confluence" and "slice2matlab". * The "FindLibinput" module was added to find libinput. * The "FindLibLZMA" module now provides imported targets. * The "FindMatlab" module gained new options "R2017b" and "R2018a" to specify the MEX API version to use; these options mirror the new options to the "mex" command in MATLAB R2018a. The option "MX_LIBRARY" is no longer needed. * The "FindPostgreSQL" module now provides imported targets. * The "FindPython", "FindPython2", and "FindPython3" modules gained support for "NumPy" component. * The "FindPython2", "FindPython3", and "FindPython" modules now support running in script mode by skipping the creation of imported targets and helper functions. * The "FindSQLite3" module was added to find the SQLite v3.x library. * The "FindX11" had the following variables renamed in order to match their library names rather than header names. The old variables are provided for compatibility: * "X11_Xxf86misc_INCLUDE_PATH" instead of "X11_xf86misc_INCLUDE_PATH" * "X11_Xxf86misc_LIB" instead of "X11_xf86misc_LIB" * "X11_Xxf86misc_FOUND" instead of "X11_xf86misc_FOUND" * "X11_Xxf86vm_INCLUDE_PATH" instead of "X11_xf86vmode_INCLUDE_PATH" * "X11_Xxf86vm_LIB" instead of "X11_xf86vmode_LIB" * "X11_Xxf86vm_FOUND" instead of "X11_xf86vmode_FOUND" * "X11_xkbfile_INCLUDE_PATH" instead of "X11_Xkbfile_INCLUDE_PATH" * "X11_xkbfile_LIB" instead of "X11_Xkbfile_LIB" * "X11_xkbfile_FOUND" instead of "X11_Xkbfile_FOUND" * "X11_Xtst_INCLUDE_PATH" instead of "X11_XTest_INCLUDE_PATH" * "X11_Xtst_LIB" instead of "X11_XTest_LIB" * "X11_Xtst_FOUND" instead of "X11_XTest_FOUND" * "X11_Xss_INCLUDE_PATH" instead of "X11_Xscreensaver_INCLUDE_PATH" * "X11_Xss_LIB" instead of "X11_Xscreensaver_LIB" * "X11_Xss_FOUND" instead of "X11_Xscreensaver_FOUND" The following variables are deprecated completely since they were essentially duplicates: * "X11_Xinput_INCLUDE_PATH" (use "X11_Xi_INCLUDE_PATH") * "X11_Xinput_LIB" (use "X11_Xi_LIB") * "X11_Xinput_FOUND" (use "X11_Xi_FOUND") * The "FindX11" now provides "X11_Xext_INCLUDE_PATH". * The "FindX11" now provides imported targets. * The "UseSWIG" module learned to pass "-module " to the "SWIG" compiler if the file property "SWIG_MODULE_NAME" is defined. See policy "CMP0086". * The "UseSWIG" module gained an option to specify "SWIG" source file extensions. Generator Expressions --------------------- * The "<pre wp-pre-tag-0=""> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 CMake 3.14 Release Notes ************************ Changes made since CMake 3.13 include the following. New Features ============ Generators ---------- * The "Visual Studio 16 2019" generator was added. This is experimental and based on "Visual Studio 2019 Preview 4" because this version of VS has not been released. The VS 2019 generator differs from generators for earlier versions in that it does not provide variants that specify the target platform in the generator name. Instead "CMAKE_GENERATOR_PLATFORM" must be used, e.g. through the "-A" command-line option. Furthermore, the default target platform (architecture) is now based on the *host* platform. The VS host toolset selection is now based on the host architecture as well. * The "Green Hills MULTI" generator has been updated: * Now supports Object Libraries. * Now warns on unsupported project types such as shared libraries. * Now generates a top-level ".top.gpj" for each directory calling the "project()" command. The top-level project file "default.gpj" is no longer created. * Now honors target renaming and destination output control properties such as "RUNTIME_OUTPUT_DIRECTORY" and "OUTPUT_NAME". This also fixes support for installation rules generated by "install()". * Now honors source file properties "INCLUDE_DIRECTORIES", "COMPILE_DEFINITIONS", and "COMPILE_OPTIONS". * Now supports Dynamic Download Integrity Applications which did not include Integrate Files via "GHS_INTEGRITY_APP" and setting a target link flag of "-dynamic". * The contents of project files now sorts sources groups and files by name. Set the "GHS_NO_SOURCE_GROUP_FILE" target property to "ON" to generate a single project file for the target instead of a project file for each source group. Set the "CMAKE_GHS_NO_SOURCE_GROUP_FILE" variable to enable this for all targets. File-Based API -------------- * A file-based api for clients to get semantic buildsystem information has been added. See the "cmake-file-api(7)" manual. This is intended to replace the "cmake-server(7)" mode for IDEs. Platforms --------- * CMake now supports Cross Compiling for iOS, tvOS, or watchOS using simple toolchain files. Command-Line ------------ * The "cmake(1)" Build Tool Mode ("cmake --build") gained "-- verbose" and "-v" options to specify verbose build output. Some generators such as Xcode don't support this option currently. * The "cmake(1)" "-E compare_files" command learned a new "--ignore- eol" option to specify that end-of-line differences (e.g. LF vs CRLF) should be ignored when comparing files. * The "cmake-gui(1)" dialog gained new "-S" and "-B" arguments to explicitly specify source and build directories. Commands -------- * The "file()" command learned a new sub-command, "CREATE_LINK", which can be used to create hard or symbolic links. * The "file()" command learned a new sub-command, "READ_SYMLINK", which can be used to determine the path that a symlink points to. * The "file()" command gained a "SIZE" mode to get the size of a file on disk. * The "find_package()" command learned to optionally resolve symbolic links in the paths to package configuration files. See the "CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS" variable. * The "get_filename_component()" command gained new "LAST_EXT" and "NAME_WLE" variants to work with the extension after the last "." in the name. * The "if()" command gained support for checking if cache variables are defined with the "DEFINED CACHE{VAR}" syntax. * The "install(CODE)" and "install(SCRIPT)" commands learned to support generator expressions. See policy "CMP0087". * The "install(TARGETS)" command learned how to install to an appropriate default directory for a given target type, based on variables from the "GNUInstallDirs" module and built-in defaults, in lieu of a "DESTINATION" argument. * The "install(FILES)" and "install(DIRECTORY)" commands learned a new set of parameters for installing files as a file type, setting the destination based on the appropriate variables from "GNUInstallDirs" and built-in defaults, in lieu of a "DESTINATION" argument. * The "list()" operations "REMOVE_ITEM", "REMOVE_DUPLICATES", "SORT", "REVERSE", and "FILTER" all now accept a non-existent variable as the list since these operations on empty lists is also the empty list. * The "list()" operation "REMOVE_AT" now indicates that the given indices are invalid for a non-existent variable or empty list. * The "try_compile()" and "try_run()" commands gained a new "LINK_OPTIONS" option. Variables --------- * A "CMAKE_BUILD_RPATH_USE_ORIGIN" variable and corresponding "BUILD_RPATH_USE_ORIGIN" target property were added to enable use of relative runtime paths (RPATHs). This helps achieving relocatable and reproducible builds that are invariant of the build directory. Properties ---------- * A "CMAKE_ROLE" global property was added to allow scripts to determine whether they're running in project mode, script mode, find-package mode, CTest, or CPack. * The "CUDA_RESOLVE_DEVICE_SYMBOLS" target property is now supported on shared library, module library, and executable targets. Previously it was only honored on static libraries. * The "EXCLUDE_FROM_ALL" target property was created to override the setting of its directory. A target will now be built as part of "all" if its "EXCLUDE_FROM_ALL" property is set to "OFF", even if its containing directory is marked as "EXCLUDE_FROM_ALL". * "INTERFACE_POSITION_INDEPENDENT_CODE" target property gains the support of "generator expressions". Modules ------- * The family of modules to check capabilities (like "CheckCSourceCompiles") gain capability to manage "LINK_OPTIONS". * A "CheckFortranSourceRuns" module was added to provide a "check_fortran_source_runs()" command to check if a Fortran source snippet compiles and runs. * The "CMakePackageConfigHelpers" module’s "write_basic_package_version_file()" command gained a new "ARCH_INDEPENDENT" option for supporting architecture-independent packages. * The "ExternalProject" module "ExternalProject_Add()" command gained "LOG_DIR" and "LOG_MERGED_STDOUTERR" options to control logging. * The "ExternalProject" module "ExternalProject_Add()" command gained "LOG_PATCH" to optionally log the patch step. * The "ExternalProject" module's "ExternalProject_Add()" command learned to apply "SOURCE_SUBDIR" when "BUILD_IN_SOURCE" is also used. The "BUILD_COMMAND" is run in the given "SOURCE_SUBDIR" of the "SOURCE_DIR". * The "FetchContent" module gained a new "FetchContent_MakeAvailable()" command. It accepts a list of dependency names, which it then iterates over, populating and adding each one to the main build using the canonical pattern. This significantly reduces the amount of boilerplate needed in a project. * The "FindBISON" module's "BISON_TARGET" command now runs "bison" with "CMAKE_CURRENT_BINARY_DIR" as the working directory. See policy "CMP0088". * The "FindCURL" module gained support for requesting protocols as package components. * The "FindFontconfig" module was added to find fontconfig. * The "FindGDAL" module now provides imported targets. * The "FindGIF" module now provides imported targets. * The "FindGit" module now provides an imported target for the Git executable. * The "FindIce" module learned to find "slice2confluence" and "slice2matlab". * The "FindLibinput" module was added to find libinput. * The "FindLibLZMA" module now provides imported targets. * The "FindMatlab" module gained new options "R2017b" and "R2018a" to specify the MEX API version to use; these options mirror the new options to the "mex" command in MATLAB R2018a. The option "MX_LIBRARY" is no longer needed. * The "FindPostgreSQL" module now provides imported targets. * The "FindPython", "FindPython2", and "FindPython3" modules gained support for "NumPy" component. * The "FindPython2", "FindPython3", and "FindPython" modules now support running in script mode by skipping the creation of imported targets and helper functions. * The "FindSQLite3" module was added to find the SQLite v3.x library. * The "FindX11" had the following variables renamed in order to match their library names rather than header names. The old variables are provided for compatibility: * "X11_Xxf86misc_INCLUDE_PATH" instead of "X11_xf86misc_INCLUDE_PATH" * "X11_Xxf86misc_LIB" instead of "X11_xf86misc_LIB" * "X11_Xxf86misc_FOUND" instead of "X11_xf86misc_FOUND" * "X11_Xxf86vm_INCLUDE_PATH" instead of "X11_xf86vmode_INCLUDE_PATH" * "X11_Xxf86vm_LIB" instead of "X11_xf86vmode_LIB" * "X11_Xxf86vm_FOUND" instead of "X11_xf86vmode_FOUND" * "X11_xkbfile_INCLUDE_PATH" instead of "X11_Xkbfile_INCLUDE_PATH" * "X11_xkbfile_LIB" instead of "X11_Xkbfile_LIB" * "X11_xkbfile_FOUND" instead of "X11_Xkbfile_FOUND" * "X11_Xtst_INCLUDE_PATH" instead of "X11_XTest_INCLUDE_PATH" * "X11_Xtst_LIB" instead of "X11_XTest_LIB" * "X11_Xtst_FOUND" instead of "X11_XTest_FOUND" * "X11_Xss_INCLUDE_PATH" instead of "X11_Xscreensaver_INCLUDE_PATH" * "X11_Xss_LIB" instead of "X11_Xscreensaver_LIB" * "X11_Xss_FOUND" instead of "X11_Xscreensaver_FOUND" The following variables are deprecated completely since they were essentially duplicates: * "X11_Xinput_INCLUDE_PATH" (use "X11_Xi_INCLUDE_PATH") * "X11_Xinput_LIB" (use "X11_Xi_LIB") * "X11_Xinput_FOUND" (use "X11_Xi_FOUND") * The "FindX11" now provides "X11_Xext_INCLUDE_PATH". * The "FindX11" now provides imported targets. * The "UseSWIG" module learned to pass "-module " to the "SWIG" compiler if the file property "SWIG_MODULE_NAME" is defined. See policy "CMP0086". * The "UseSWIG" module gained an option to specify "SWIG" source file extensions. Generator Expressions --------------------- * The "<pre wp-pre-tag-0="">

1

1

lt;Fortran_COMPILER_ID:…>” and “lt;Fortran_COMPILER_VERSION:…>” generator expressions were added. * The “lt;IN_LIST:…>” generator expression now correctly handles an empty argument. See “CMP0085” for details. Autogen ——- * The “AUTOMOC_EXECUTABLE”, “AUTORCC_EXECUTABLE”, and “AUTOUIC_EXECUTABLE” target properties were added. They all take a path to an executable and force automoc/autorcc/autouic to use this executable. Setting these will also prevent the configure time testing for these executables. This is mainly useful when you build these tools yourself. * The new variables “CMAKE_GLOBAL_AUTOGEN_TARGET”, “CMAKE_GLOBAL_AUTOGEN_TARGET_NAME”, “CMAKE_GLOBAL_AUTORCC_TARGET” and “CMAKE_GLOBAL_AUTORCC_TARGET_NAME” control the generation of global “autogen” and “autorcc” targets. * A new “CMAKE_AUTOGEN_ORIGIN_DEPENDS” variable and “AUTOGEN_ORIGIN_DEPENDS” target property may be set to enable or disable forwarding of the origin target dependencies to the corresponding “_autogen” target. CTest —– * “ctest(1)” gained a “–show-only=json-v1” option to show the list of tests in a machine-readable JSON format. See the Show as JSON Object Model section of the manual. * The “ctest_submit()” command learned a new “Done” part that can be used to inform CDash that a build is complete and that no more parts will be uploaded. * CTest learned to accept the dashboard server submission URL from a single variable. See the “SubmitURL” setting in “ctest(1)”, the “CTEST_SUBMIT_URL” variable, and the “SUBMIT_URL” argument of the “ctest_submit()” command. Deprecated and Removed Features =============================== * An explicit deprecation diagnostic was added for policies “CMP0064” and “CMP0065” (“CMP0063” and below were already deprecated). The “cmake-policies(7)” manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors. * The “Xcode” generator deprecated support for Xcode versions prior to Xcode 5. Support for those will be dropped in a future version of CMake. * The “FindQt” module is no longer used by the “find_package()” command as a find module. This allows the Qt Project upstream to optionally provide its own “QtConfig.cmake” package configuration file and have applications use it via “find_package(Qt)” rather than “find_package(Qt CONFIG)”. See policy “CMP0084”. * Support for running CMake on Windows XP and Windows Vista has been dropped. The precompiled Windows binaries provided on “cmake.org” now require Windows 7 or higher. * CTest no longer supports submissions via “ftp”, “scp”, “cp”, and “xmlrpc”. CDash is the only maintained testing dashboard for CTest, and it only supports submissions over “http” and “https”. Other Changes ============= * Object library linking has been fixed to propagate private link libraries of object libraries to consuming targets. * Install rules under “add_subdirectory()” now interleave with those in the calling directory. See policy “CMP0082” for details. * CMake now imposes a maximum recursion limit to prevent a stack overflow on scripts that recurse infinitely. The limit can be adjusted at runtime with “CMAKE_MAXIMUM_RECURSION_DEPTH”. * When using cppcheck via the “CMAKE__CPPCHECK” variable or “_CPPCHECK” property, the build will now fail if “cppcheck” returns non-zero as configured by its command-line options. * Required link options to manage Position Independent Executable are now added when “POSITION_INDEPENDENT_CODE” is set. The project is responsible for using the “CheckPIESupported” module to check for “PIE” support to ensure that the “POSITION_INDEPENDENT_CODE” target property will be honored at link time for executables. This behavior is controlled by policy “CMP0083”. * Visual Studio Generators for VS 2010 and above learned to support the “VS_DEBUGGER_*” properties on targets created via “add_custom_target()”. * The “CPack” module no longer defaults to the “paxr” value in the “CPACK_DEBIAN_ARCHIVE_TYPE” variable, because “dpkg” has never supported the PAX tar format. The “paxr” value will be mapped to “gnutar” and a deprecation message emitted. * CMake no longer issues a warning if a target listed in an “install(TARGETS)” command has its “EXCLUDE_FROM_ALL” property set to true. —————————————————————————- Changes made since CMake 3.14.0-rc4: Brad King (2): VS: Revert “Use MSBuild matching toolset host architecture” CMake 3.14.0 Nils Gladitz (1): CMake: Fix WiX installer downgrades with versioned binaries