# CMake 4.2.0 available for download

**URL:** https://discourse.cmake.org/t/cmake-4-2-0-available-for-download/15333
**Category:** Announcements
**Created:** [November 20, 2025, 4:48pm UTC](https://discourse.cmake.org/t/cmake-4-2-0-available-for-download/15333 "2025-11-20T16:48:06Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![johnwparent](https://discourse.cmake.org/user_avatar/discourse.cmake.org/johnwparent/32/2179_2.png) [@johnwparent](https://discourse.cmake.org/u/johnwparent)
#### Post date: [November 20, 2025, 4:48pm UTC](https://discourse.cmake.org/t/cmake-4-2-0-available-for-download/15333/1 "2025-11-20T16:48:06Z")

</div>

We are pleased to announce that CMake 4.2 is now available for download.  
[https://cmake.org/download/](https://cmake.org/download/)

Documentation is available at:  
[https://cmake.org/cmake/help/v4.2](https://cmake.org/cmake/help/v4.2)

Release notes appear below and are also published at  
[https://cmake.org/cmake/help/v4.2/release/4.2.html](https://cmake.org/cmake/help/v4.2/release/4.2.html)

Release milestone is available at:  
[release milestone](https://gitlab.kitware.com/cmake/cmake/-/milestones/177)

Some of the most significant changes in CMake 4.2 are:

- The “Visual Studio 18 2026” generator was added.

- The “FASTBuild” generator was added.

- CMake now supports Cross Compiling for Emscripten with simple  
toolchain files.

- The “set(CACHE{\<variable\>})” and “unset(CACHE{\<variable\>})” commands  
were added to explicitly set and unset cache entries.

- The “INSTALL\_OBJECT\_NAME” source file property was added to control  
names of installed object files for specific compiled sources.

- Nearly all find modules now provide a “\<PackageName\>\_VERSION” result  
variable matching the casing of its module name. Existing variants  
such as “\<PackageName\>\_VERSION\_STRING” and uppercased  
“\<PACKAGENAME\>\_VERSION” are deprecated. See documentation of each  
find module for details.

- The “ExternalProject” module’s “ExternalProject\_Add()” and  
“ExternalProject\_Add\_Step()” commands now provide options to set  
environment variables on the configure, build, install, and test  
steps.

- The “Visual Studio 14 2015” generator is now deprecated and will be  
removed in a future version of CMake.

CMake 4.2 Release Notes

* * *

Changes made since CMake 4.1 include the following.

# New Features

## File-Based API

- The “cmake-file-api(7)” “codemodel” version 2 “version” field has  
been updated to 2.9.

- The “cmake-file-api(7)” “codemodel” version 2 “target” and  
“directory” objects gained a new “codemodelVersion” field.

- The “cmake-file-api(7)” “codemodel” version 2 now includes imported  
targets and all interface library targets in its replies.  
Previously, imported targets were omitted, and only those interface  
targets that participated in the build system were included. The  
following changes support these new additions:

- The “cmake-file-api(7)” “codemodel” version 2 “target” object gained  
new “linkLibraries”, “interfaceLinkLibraries”,  
“compileDependencies”, “interfaceCompileDependencies”,  
“objectDependencies”, and “orderDependencies” fields.

## Generators

- The “Visual Studio 18 2026” generator was added.

- The “FASTBuild” generator was added.

## Platforms

- CMake now supports Cross Compiling for Emscripten with simple  
toolchain files.

## Command-Line

- The “cmake(1)” command-line tool now supports “cmake -E  
copy\_if\_newer” and “cmake -E copy\_directory\_if\_newer” subcommands to  
copy files based on timestamp comparison instead of content  
comparison. These commands copy files only if the source is newer  
than the destination, providing better performance for build systems  
compared to “copy\_if\_different” which compares file contents.

## Commands

- The “cmake\_language(TRACE)” command was added to enable or disable  
tracing during script execution.

- The “set(CACHE{\<variable\>})” and “unset(CACHE{\<variable\>})” commands  
were added to explicitly set and unset cache entries.

- The “string(REGEX QUOTE)” command was added to generate a regular  
expression exactly matching a string.

## Variables

- The “CMAKE\_CXX\_STDLIB\_MODULES\_JSON” variable was added to set the  
path to the “import std” metadata file for the standard library  
rather than using the compiler to discover its location.

- The “CMAKE\_INTERMEDIATE\_DIR\_STRATEGY” variable and corresponding  
“CMAKE\_INTERMEDIATE\_DIR\_STRATEGY” environment variable were added to  
change the strategy used to name intermediate directories used for  
object files and other associated target metadata.

- The “CMAKE\_AUTOGEN\_INTERMEDIATE\_DIR\_STRATEGY” variable and  
corresponding “CMAKE\_AUTOGEN\_INTERMEDIATE\_DIR\_STRATEGY” environment  
variable were added to change the strategy used to name intermediate  
directories used for “Qt Autogen” files.

- The “CMAKE\_SKIP\_LINTING” variable and corresponding “SKIP\_LINTING”  
target property were added to tell the Command-Line Build Tool  
Generators to skip linting all sources in a target.

## Properties

- The “INSTALL\_OBJECT\_NAME” source file property was added to control  
names of installed object files for specific compiled sources.

- The “INSTALL\_OBJECT\_NAME\_STRATEGY” target property was added to  
control the naming strategy for installed object files.

- The “INSTALL\_OBJECT\_ONLY\_USE\_DESTINATION” target property was added  
to more precisely control the installation path for object files.

- The “JOB\_POOL\_COMPILE” source file property was added to assign  
individual source compilations to “JOB\_POOLS”.

- The “OBJECT\_NAME” source file property was added to control object  
names of compiled source files.

- The “UNITY\_BUILD\_FILENAME\_PREFIX” target property was added to  
control names of source files generated by “UNITY\_BUILD”.

## Modules

- Nearly all find modules now provide a “\<PackageName\>\_VERSION” result  
variable matching the casing of its module name. Existing variants  
such as “\<PackageName\>\_VERSION\_STRING” and uppercased  
“\<PACKAGENAME\>\_VERSION” are deprecated. See documentation of each  
find module for details.

- The “CheckTypeSize” module’s “check\_type\_size()” command gained a  
new “RESULT\_VARIABLE” keyword to customize the result variable name  
instead of the default “HAVE\_\<size-var\>”.

- The “ExternalProject” module’s “ExternalProject\_Add()” and  
“ExternalProject\_Add\_Step()” commands now provide options to set  
environment variables on the configure, build, install, and test  
steps.

- The “FindPython3”, “FindPython2”, and “FindPython” modules no longer  
make “NumPy” depend on “Development.Module”. See policy “CMP0201”.

- The “GoogleTest” module’s “gtest\_discover\_tests()” command now sets  
the “DEF\_SOURCE\_LINE” test property for each discovered test if  
gtest supports the “–gtest\_output=json” option. This test property  
is used by some IDEs to locate the source for each test.

- The “UseSWIG” module’s “swig\_add\_library()” command gained a  
“DEBUG\_POSTFIX” option to control the “DEBUG\_POSTFIX” target  
property.

## Generator Expressions

- The “\<LANG\>\_COMPILER\_LINKER\_ID” and  
“\<LANG\>_COMPILER\_LINKER\_FRONTEND\_VARIANT" families of generator  
expressions were added to access the value of the associated  
"CMAKE_\<LANG\>_COMPILER\_LINKER\_ID" and  
"CMAKE_\<LANG\>\_COMPILER\_LINKER\_FRONTEND\_VARIANT” variables.

- The “TARGET\_FILE\_BASE\_NAME”, “TARGET\_IMPORT\_FILE\_BASE\_NAME”,  
“TARGET\_LINKER\_FILE\_BASE\_NAME”,  
“TARGET\_LINKER\_LIBRARY\_FILE\_BASE\_NAME”,  
“TARGET\_LINKER\_IMPORT\_FILE\_BASE\_NAME”, and  
“TARGET\_PDB\_FILE\_BASE\_NAME” generator expressions gained a “POSTFIX”  
option to control the inclusion of the “\<CONFIG\>\_POSTFIX” target  
property as part of the base names of the corresponding files.

- The “TARGET\_INTERMEDIATE\_DIR” generator expression was added to  
refer to a target’s intermediate files directory in the build tree.

## CPack

- The “CPACK\_PACKAGE\_CHECKSUM” variable now supports multiple values.

- The “CPack NSIS Generator” gained a “CPACK\_NSIS\_CRC\_CHECK” variable  
for setting the “CRCCheck” attribute.

- The “CPack WIX Generator” gained a “CPACK\_WIX\_CAB\_PER\_COMPONENT”  
variable to enable one “.cab” per component.

# Deprecated and Removed Features

- All find modules now provide a “\<PackageName\>\_FOUND” result variable  
matching the casing of its module name. Existing variants, such as  
the uppercased “\<PACKAGENAME\>\_FOUND”, are deprecated where  
appropriate. See documentation of each find module for details.

- The “FindwxWidgets” module’s result variable “wxWidgets\_USE\_FILE” is  
now deprecated in favor of including the “UsewxWidgets” module  
directly.

- The “Visual Studio 14 2015” generator is now deprecated and will be  
removed in a future version of CMake.

# Other Changes

- The “$\<CONFIG:cfgs\>” generator expression, when appearing on an  
imported target, has been fixed to only match the configuration  
actually being consumed. See policy “CMP0199”.

- Selection of configuration and location of imported targets is now  
more consistent. See policy “CMP0200”.

- The “CMAKE\_PARENT\_LIST\_FILE” variable is no longer defined when  
processing a “CMakeLists.txt” file. See policy “CMP0198”.

- For builds targeting the MSVC ABI, all generators now add the  
“\_MBCS” preprocessor definition when compiling sources unless  
“\_UNICODE” or “\_SBCS” is found. See policy “CMP0204”.

- For builds targeting the MSVC ABI, all generators now add the  
“\_WINDLL” preprocessor definition when compiling sources in shared  
libraries. See policy “CMP0203”.

* * *

Changes made since CMake 4.2.0-rc4:

Ben Boeckel (1):

- Help/CMAKE\_AUTOGEN\_INTERMEDIATE\_DIR\_STRATEGY: document supported generators

Brad King (5):

- Help: Improve string(JSON) synopsis document source readability
- Help: Avoid reST named references in string(JSON) synopsis
- VS: Add SLNX project types
- VS: Add include\_external\_msproject detection of `.wapproj` type
- CMake 4.2.0
