<div dir="ltr">I am proud to announce the first CMake 4.2 release candidate.<br>  <a href="https://cmake.org/download/">https://cmake.org/download/</a><br><br>Documentation is available at:<br>  <a href="https://cmake.org/cmake/help/v4.2">https://cmake.org/cmake/help/v4.2</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v4.2/release/4.2.html">https://cmake.org/cmake/help/v4.2/release/4.2.html</a><br><br>Release milestone is available at:<br>  <a href="https://gitlab.kitware.com/cmake/cmake/-/milestones/177">https://gitlab.kitware.com/cmake/cmake/-/milestones/177</a><br><br>Some of the most significant changes in CMake 4.2 are:<br><br>* The "Visual Studio 18 2026" generator was added.  This is<br>  experimental and based on "Visual Studio 2026 Insiders" because this<br>  version of VS has not been released.<br><br>* The "FASTBuild" generator was added.<br><br>* CMake now supports Cross Compiling for Emscripten with simple<br>  toolchain files.<br><br>* The "set(CACHE{<variable>})" and "unset(CACHE{<variable>})" commands<br>  were added to explicitly set and unset cache entries.<br><br>* The "INSTALL_OBJECT_NAME" source file property was added to control<br>  names of installed object files for specific compiled sources.<br><br>* Nearly all find modules now provide a "<PackageName>_VERSION" result<br>  variable matching the casing of its module name.  Existing variants<br>  such as "<PackageName>_VERSION_STRING" and uppercased<br>  "<PACKAGENAME>_VERSION" are deprecated.  See documentation of each<br>  find module for details.<br><br>* The "ExternalProject" module's "ExternalProject_Add()" and<br>  "ExternalProject_Add_Step()" commands now provide options to set<br>  environment variables on the configure, build, install, and test<br>  steps.<br><br>* The "Visual Studio 14 2015" generator is now deprecated and will be<br>  removed in a future version of CMake.<br><br><br><br>CMake 4.2 Release Notes<br>***********************<br><br>Changes made since CMake 4.1 include the following.<br><br><br>New Features<br>============<br><br><br>File-Based API<br>--------------<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "version" field has<br>  been updated to 2.9.<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "target" and<br>  "directory" objects gained a new "codemodelVersion" field.<br><br>* The "cmake-file-api(7)" "codemodel" version 2 now includes imported<br>  targets and all interface library targets in its replies.<br>  Previously, imported targets were omitted, and only those interface<br>  targets that participated in the build system were included.  The<br>  following changes support these new additions:<br><br>  * The "target" object gained "imported", "local", and "abstract"<br>    fields.<br><br>  * The "target" object's "type" field can now also hold the value<br>    "UNKNOWN_LIBRARY".<br><br>  * The "codemodel" object's "configurations" entries gained a new<br>    "abstractTargets" array.<br><br>  * Entries in the "directories" and "projects" arrays of the<br>    "codemodel" object's "configurations" entries gained a new<br>    "abstractTargetIndexes" array.<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "target" object gained<br>  new "linkLibraries", "interfaceLinkLibraries",<br>  "compileDependencies", "interfaceCompileDependencies",<br>  "objectDependencies", and "orderDependencies" fields.<br><br><br>Generators<br>----------<br><br>* The "Visual Studio 18 2026" generator was added.  This is<br>  experimental and based on "Visual Studio 2026 Insiders" because this<br>  version of VS has not been released.<br><br>* The "FASTBuild" generator was added.<br><br><br>Platforms<br>---------<br><br>* CMake now supports Cross Compiling for Emscripten with simple<br>  toolchain files.<br><br><br>Command-Line<br>------------<br><br>* The "cmake(1)" command-line tool now supports "cmake -E<br>  copy_if_newer" and "cmake -E copy_directory_if_newer" subcommands to<br>  copy files based on timestamp comparison instead of content<br>  comparison. These commands copy files only if the source is newer<br>  than the destination, providing better performance for build systems<br>  compared to "copy_if_different" which compares file contents.<br><br><br>Commands<br>--------<br><br>* The "cmake_language(TRACE)" command was added to enable or disable<br>  tracing during script execution.<br><br>* The "set(CACHE{<variable>})" and "unset(CACHE{<variable>})" commands<br>  were added to explicitly set and unset cache entries.<br><br>* The "string(REGEX QUOTE)" command was added to generate a regular<br>  expression exactly matching a string.<br><br><br>Variables<br>---------<br><br>* The "CMAKE_CXX_STDLIB_MODULES_JSON" variable was added to set the<br>  path to the "import std" metadata file for the standard library<br>  rather than using the compiler to discover its location.<br><br>* The "CMAKE_INTERMEDIATE_DIR_STRATEGY" variable and corresponding<br>  "CMAKE_INTERMEDIATE_DIR_STRATEGY" environment variable were added to<br>  change the strategy used to name intermediate directories used for<br>  object files and other associated target metadata.<br><br>* The "CMAKE_AUTOGEN_INTERMEDIATE_DIR_STRATEGY" variable and<br>  corresponding "CMAKE_AUTOGEN_INTERMEDIATE_DIR_STRATEGY" environment<br>  variable were added to change the strategy used to name intermediate<br>  directories used for "Qt Autogen" files.<br><br>* The "CMAKE_SKIP_LINTING" variable and corresponding "SKIP_LINTING"<br>  target property were added to tell the Command-Line Build Tool<br>  Generators to skip linting all sources in a target.<br><br><br>Properties<br>----------<br><br>* The "INSTALL_OBJECT_NAME" source file property was added to control<br>  names of installed object files for specific compiled sources.<br><br>* The "INSTALL_OBJECT_NAME_STRATEGY" target property was added to<br>  control the naming strategy for installed object files.<br><br>* The "INSTALL_OBJECT_ONLY_USE_DESTINATION" target property was added<br>  to more precisely control the installation path for object files.<br><br>* The "JOB_POOL_COMPILE" source file property was added to assign<br>  individual source compilations to "JOB_POOLS".<br><br>* The "OBJECT_NAME" source file property was added to control object<br>  names of compiled source files.<br><br>* The "UNITY_BUILD_FILENAME_PREFIX" target property was added to<br>  control names of source files generated by "UNITY_BUILD".<br><br><br>Modules<br>-------<br><br>* Nearly all find modules now provide a "<PackageName>_VERSION" result<br>  variable matching the casing of its module name.  Existing variants<br>  such as "<PackageName>_VERSION_STRING" and uppercased<br>  "<PACKAGENAME>_VERSION" are deprecated.  See documentation of each<br>  find module for details.<br><br>* The "CheckTypeSize" module's "check_type_size()" command gained a<br>  new "RESULT_VARIABLE" keyword to customize the result variable name<br>  instead of the default "HAVE_<size-var>".<br><br>* The "ExternalProject" module's "ExternalProject_Add()" and<br>  "ExternalProject_Add_Step()" commands now provide options to set<br>  environment variables on the configure, build, install, and test<br>  steps.<br><br>* The "FindPython3", "FindPython2", and "FindPython" modules no longer<br>  make "NumPy" depend on "Development.Module". See policy "CMP0201".<br><br>* The "GoogleTest" module's "gtest_discover_tests()" command now sets<br>  the "DEF_SOURCE_LINE" test property for each discovered test if<br>  gtest supports the "--gtest_output=json" option. This test property<br>  is used by some IDEs to locate the source for each test.<br><br>* The "UseSWIG" module's "swig_add_library()" command gained a<br>  "DEBUG_POSTFIX" option to control the "DEBUG_POSTFIX" target<br>  property.<br><br><br>Generator Expressions<br>---------------------<br><br>* The "<LANG>_COMPILER_LINKER_ID" and<br>  "<LANG>_COMPILER_LINKER_FRONTEND_VARIANT" families of generator<br>  expressions were added to access the value of the associated<br>  "CMAKE_<LANG>_COMPILER_LINKER_ID" and<br>  "CMAKE_<LANG>_COMPILER_LINKER_FRONTEND_VARIANT" variables.<br><br>* The "TARGET_FILE_BASE_NAME", "TARGET_IMPORT_FILE_BASE_NAME",<br>  "TARGET_LINKER_FILE_BASE_NAME",<br>  "TARGET_LINKER_LIBRARY_FILE_BASE_NAME",<br>  "TARGET_LINKER_IMPORT_FILE_BASE_NAME", and<br>  "TARGET_PDB_FILE_BASE_NAME" generator expressions gained a "POSTFIX"<br>  option to control the inclusion of the "<CONFIG>_POSTFIX" target<br>  property as part of the base names of the corresponding files.<br><br>* The "TARGET_INTERMEDIATE_DIR" generator expression was added to<br>  refer to a target's intermediate files directory in the build tree.<br><br><br>CPack<br>-----<br><br>* The "CPACK_PACKAGE_CHECKSUM" variable now supports multiple values.<br><br>* The "CPack NSIS Generator" gained a "CPACK_NSIS_CRC_CHECK" variable<br>  for setting the "CRCCheck" attribute.<br><br>* The "CPack WIX Generator" gained a "CPACK_WIX_CAB_PER_COMPONENT"<br>  variable to enable one ".cab" per component.<br><br><br>Deprecated and Removed Features<br>===============================<br><br>* All find modules now provide a "<PackageName>_FOUND" result variable<br>  matching the casing of its module name.  Existing variants, such as<br>  the uppercased "<PACKAGENAME>_FOUND", are deprecated where<br>  appropriate. See documentation of each find module for details.<br><br>* The "FindwxWidgets" module's result variable "wxWidgets_USE_FILE" is<br>  now deprecated in favor of including the "UsewxWidgets" module<br>  directly.<br><br>* The "Visual Studio 14 2015" generator is now deprecated and will be<br>  removed in a future version of CMake.<br><br><br>Other Changes<br>=============<br><br>* The "$<CONFIG:cfgs>" generator expression no longer matches multiple<br>  configurations.  See policy "CMP0199".<br><br>* Selection of configuration and location of imported targets is now<br>  more consistent.  See policy "CMP0200".<br><br>* The "CMAKE_PARENT_LIST_FILE" variable is no longer defined when<br>  processing a "CMakeLists.txt" file.  See policy "CMP0198".<br><br>* For builds targeting the MSVC ABI, all generators now add the<br>  "_MBCS" preprocessor definition when compiling sources unless<br>  "_UNICODE" or "_SBCS" is found.  See policy "CMP0204".<br><br>* For builds targeting the MSVC ABI, all generators now add the<br>  "_WINDLL" preprocessor definition when compiling sources in shared<br>  libraries. See policy "CMP0203".<br></div>