Sindbad~EG File Manager
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<title>CMake 3.24 Release Notes — CMake 3.26.5 Documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/cmake.css" />
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<link rel="shortcut icon" href="../_static/cmake-favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="CMake 3.23 Release Notes" href="3.23.html" />
<link rel="prev" title="CMake 3.25 Release Notes" href="3.25.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="3.23.html" title="CMake 3.23 Release Notes"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="3.25.html" title="CMake 3.25 Release Notes"
accesskey="P">previous</a> |</li>
<li>
<img src="../_static/cmake-logo-16.png" alt=""
style="vertical-align: middle; margin-top: -2px" />
</li>
<li>
<a href="https://cmake.org/">CMake</a> »
</li>
<li>
<a href="../index.html">3.26.5 Documentation</a> »
</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">CMake Release Notes</a> »</li>
<li class="nav-item nav-item-this"><a href="">CMake 3.24 Release Notes</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="cmake-3-24-release-notes">
<h1><a class="toc-backref" href="#id4" role="doc-backlink">CMake 3.24 Release Notes</a><a class="headerlink" href="#cmake-3-24-release-notes" title="Permalink to this heading">¶</a></h1>
<nav class="contents" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
<li><p><a class="reference internal" href="#cmake-3-24-release-notes" id="id4">CMake 3.24 Release Notes</a></p>
<ul>
<li><p><a class="reference internal" href="#new-features" id="id5">New Features</a></p>
<ul>
<li><p><a class="reference internal" href="#presets" id="id6">Presets</a></p></li>
<li><p><a class="reference internal" href="#generators" id="id7">Generators</a></p></li>
<li><p><a class="reference internal" href="#command-line" id="id8">Command-Line</a></p></li>
<li><p><a class="reference internal" href="#compilers" id="id9">Compilers</a></p></li>
<li><p><a class="reference internal" href="#platforms" id="id10">Platforms</a></p></li>
<li><p><a class="reference internal" href="#commands" id="id11">Commands</a></p></li>
<li><p><a class="reference internal" href="#variables" id="id12">Variables</a></p></li>
<li><p><a class="reference internal" href="#properties" id="id13">Properties</a></p></li>
<li><p><a class="reference internal" href="#modules" id="id14">Modules</a></p></li>
<li><p><a class="reference internal" href="#generator-expressions" id="id15">Generator Expressions</a></p></li>
<li><p><a class="reference internal" href="#ctest" id="id16">CTest</a></p></li>
<li><p><a class="reference internal" href="#cpack" id="id17">CPack</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#deprecated-and-removed-features" id="id18">Deprecated and Removed Features</a></p></li>
<li><p><a class="reference internal" href="#other-changes" id="id19">Other Changes</a></p></li>
<li><p><a class="reference internal" href="#updates" id="id20">Updates</a></p>
<ul>
<li><p><a class="reference internal" href="#id1" id="id21">3.24.1, 3.24.2</a></p></li>
<li><p><a class="reference internal" href="#id2" id="id22">3.24.3</a></p></li>
<li><p><a class="reference internal" href="#id3" id="id23">3.24.4</a></p></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
<p>Changes made since CMake 3.23 include the following.</p>
<section id="new-features">
<h2><a class="toc-backref" href="#id5" role="doc-backlink">New Features</a><a class="headerlink" href="#new-features" title="Permalink to this heading">¶</a></h2>
<section id="presets">
<h3><a class="toc-backref" href="#id6" role="doc-backlink">Presets</a><a class="headerlink" href="#presets" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p><span class="target" id="index-0-manual:cmake-presets(7)"></span><a class="reference internal" href="../manual/cmake-presets.7.html#manual:cmake-presets(7)" title="cmake-presets(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-presets(7)</span></code></a> files now support schema version <code class="docutils literal notranslate"><span class="pre">5</span></code>.</p></li>
<li><p><span class="target" id="index-1-manual:cmake-presets(7)"></span><a class="reference internal" href="../manual/cmake-presets.7.html#manual:cmake-presets(7)" title="cmake-presets(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-presets(7)</span></code></a> files now support a <code class="docutils literal notranslate"><span class="pre">${pathListSep}</span></code> macro,
which expands to <code class="docutils literal notranslate"><span class="pre">:</span></code> or <code class="docutils literal notranslate"><span class="pre">;</span></code> based on the platform.</p></li>
<li><p><span class="target" id="index-2-manual:cmake-presets(7)"></span><a class="reference internal" href="../manual/cmake-presets.7.html#manual:cmake-presets(7)" title="cmake-presets(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-presets(7)</span></code></a> files gained support for specifying a
<code class="docutils literal notranslate"><span class="pre">testOutputTruncation</span></code> field in test presets, which specifies the
truncation mode once the maximum test output size has been reached.</p></li>
</ul>
</section>
<section id="generators">
<h3><a class="toc-backref" href="#id7" role="doc-backlink">Generators</a><a class="headerlink" href="#generators" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-generator:Green Hills MULTI"></span><a class="reference internal" href="../generator/Green%20Hills%20MULTI.html#generator:Green Hills MULTI" title="Green Hills MULTI"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">Green</span> <span class="pre">Hills</span> <span class="pre">MULTI</span></code></a> generator now generates build
rules to re-run CMake if any CMake files are updated.</p></li>
<li><p>The <a class="reference internal" href="../manual/cmake-generators.7.html#visual-studio-generators"><span class="std std-ref">Visual Studio Generators</span></a> now support <code class="docutils literal notranslate"><span class="pre">SYSTEM</span></code> headers
when using VS 2019 Update 11 or later.</p></li>
</ul>
</section>
<section id="command-line">
<h3><a class="toc-backref" href="#id8" role="doc-backlink">Command-Line</a><a class="headerlink" href="#command-line" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p><span class="target" id="index-0-manual:cmake(1)"></span><a class="reference internal" href="../manual/cmake.1.html#manual:cmake(1)" title="cmake(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake(1)</span></code></a> gained the <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-fresh"><code class="xref std std-option docutils literal notranslate"><span class="pre">--fresh</span></code></a> command-line
option to remove any existing <code class="docutils literal notranslate"><span class="pre">CMakeCache.txt</span></code> file and associated <code class="docutils literal notranslate"><span class="pre">CMakeFiles/</span></code>
directory, when configuring a build tree, thus starting a new configuration
as if the build tree were freshly created.</p></li>
<li><p><span class="target" id="index-1-manual:cmake(1)"></span><a class="reference internal" href="../manual/cmake.1.html#manual:cmake(1)" title="cmake(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake(1)</span></code></a> gained the
<a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-compile-no-warning-as-error"><code class="xref std std-option docutils literal notranslate"><span class="pre">--compile-no-warning-as-error</span></code></a>
command-line option which causes the effects of the
<span class="target" id="index-0-prop_tgt:COMPILE_WARNING_AS_ERROR"></span><a class="reference internal" href="../prop_tgt/COMPILE_WARNING_AS_ERROR.html#prop_tgt:COMPILE_WARNING_AS_ERROR" title="COMPILE_WARNING_AS_ERROR"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">COMPILE_WARNING_AS_ERROR</span></code></a> target property and
<span class="target" id="index-0-variable:CMAKE_COMPILE_WARNING_AS_ERROR"></span><a class="reference internal" href="../variable/CMAKE_COMPILE_WARNING_AS_ERROR.html#variable:CMAKE_COMPILE_WARNING_AS_ERROR" title="CMAKE_COMPILE_WARNING_AS_ERROR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_COMPILE_WARNING_AS_ERROR</span></code></a> variable to be ignored.</p></li>
<li><p>The <span class="target" id="index-2-manual:cmake(1)"></span><a class="reference internal" href="../manual/cmake.1.html#manual:cmake(1)" title="cmake(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake(1)</span></code></a> <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-trace"><code class="xref std std-option docutils literal notranslate"><span class="pre">--trace=json-v1</span></code></a> trace
format gained fields <code class="docutils literal notranslate"><span class="pre">global_frame</span></code> and <code class="docutils literal notranslate"><span class="pre">line_end</span></code>.</p></li>
<li><p>The <span class="target" id="index-3-manual:cmake(1)"></span><a class="reference internal" href="../manual/cmake.1.html#manual:cmake(1)" title="cmake(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake(1)</span></code></a> <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-E"><code class="xref std std-option docutils literal notranslate"><span class="pre">-E</span></code></a> commands <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-E-arg-cat"><code class="xref std std-option docutils literal notranslate"><span class="pre">cat</span></code></a>
and <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-E-arg-env"><code class="xref std std-option docutils literal notranslate"><span class="pre">env</span></code></a> learned to respect a double dash
(<a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-E_env-0"><code class="xref std std-option docutils literal notranslate"><span class="pre">--</span></code></a>) argument that acts as a delimiter indicating
the end of options. Any following arguments are treated as operands/positional
arguments, even if they begin with a dash <code class="docutils literal notranslate"><span class="pre">-</span></code> character.</p></li>
<li><p>The <span class="target" id="index-4-manual:cmake(1)"></span><a class="reference internal" href="../manual/cmake.1.html#manual:cmake(1)" title="cmake(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake(1)</span></code></a> <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-E-arg-tar"><code class="xref std std-option docutils literal notranslate"><span class="pre">-E</span> <span class="pre">tar</span></code></a> command gained the
<a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-E_tar-touch"><code class="xref std std-option docutils literal notranslate"><span class="pre">--touch</span></code></a> option
to keep the current local timestamp instead of extracting file timestamps
from the archive.</p></li>
</ul>
</section>
<section id="compilers">
<h3><a class="toc-backref" href="#id9" role="doc-backlink">Compilers</a><a class="headerlink" href="#compilers" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>LLVM's <a class="reference external" href="https://github.com/llvm/llvm-project/tree/main/flang">flang</a> Fortran compiler is now supported on some platforms,
with compiler id <code class="docutils literal notranslate"><span class="pre">LLVMFlang</span></code>.</p></li>
</ul>
<ul class="simple">
<li><p>ADSP compiler support (SHARC and Blackfin) now covers both CCES and
VDSP++ installations, with required configuration now done in the
compiler module itself rather than the <code class="docutils literal notranslate"><span class="pre">Generic-ADSP</span></code> platform module.</p></li>
</ul>
</section>
<section id="platforms">
<h3><a class="toc-backref" href="#id10" role="doc-backlink">Platforms</a><a class="headerlink" href="#platforms" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>A dedicated <code class="docutils literal notranslate"><span class="pre">ADSP</span></code> platform has been added
to replace the existing <code class="docutils literal notranslate"><span class="pre">Generic-ADSP</span></code> implementation.
This features automatic detection of the latest CCES/VDSP++ install
and compiler selection (<code class="docutils literal notranslate"><span class="pre">cc21k</span></code> vs. <code class="docutils literal notranslate"><span class="pre">ccblkfn</span></code>)
based off of the <span class="target" id="index-0-variable:CMAKE_SYSTEM_PROCESSOR"></span><a class="reference internal" href="../variable/CMAKE_SYSTEM_PROCESSOR.html#variable:CMAKE_SYSTEM_PROCESSOR" title="CMAKE_SYSTEM_PROCESSOR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_SYSTEM_PROCESSOR</span></code></a> variable.</p></li>
</ul>
</section>
<section id="commands">
<h3><a class="toc-backref" href="#id11" role="doc-backlink">Commands</a><a class="headerlink" href="#commands" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-command:cmake_host_system_information"></span><a class="reference internal" href="../command/cmake_host_system_information.html#command:cmake_host_system_information" title="cmake_host_system_information"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">cmake_host_system_information()</span></code></a> command, on Windows,
gained a <code class="docutils literal notranslate"><span class="pre">QUERY</span> <span class="pre">WINDOWS_REGISTRY</span></code> mode.
See its <a class="reference internal" href="../command/cmake_host_system_information.html#query-windows-registry"><span class="std std-ref">Query Windows registry</span></a> section.</p></li>
<li><p>The <span class="target" id="index-0-command:cmake_language"></span><a class="reference internal" href="../command/cmake_language.html#command:cmake_language" title="cmake_language"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">cmake_language()</span></code></a> command gained a new
<code class="docutils literal notranslate"><span class="pre">SET_DEPENDENCY_PROVIDER</span></code> sub-command. When a dependency provider is set,
calls to <span class="target" id="index-0-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> and <span class="target" id="index-0-command:fetchcontent_makeavailable"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_makeavailable" title="fetchcontent_makeavailable"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_MakeAvailable()</span></code></a>
can be redirected through a custom command, which can choose to fulfill the
request directly, modify how the request is processed, or leave it to be
fulfilled by the built-in implementation. See <a class="reference internal" href="../command/cmake_language.html#dependency-providers"><span class="std std-ref">Dependency Providers</span></a>.</p></li>
<li><p>The <span class="target" id="index-0-command:file"></span><a class="reference internal" href="../command/file.html#command:file" title="file"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(DOWNLOAD)</span></code></a> command gained options <code class="docutils literal notranslate"><span class="pre">RANGE_START</span></code> and
<code class="docutils literal notranslate"><span class="pre">RANGE_END</span></code> to specify a range of bytes to download. This can be
useful for downloading parts of big binary files.</p></li>
<li><p>The <span class="target" id="index-0-command:find_file"></span><a class="reference internal" href="../command/find_file.html#command:find_file" title="find_file"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_file()</span></code></a>, <span class="target" id="index-0-command:find_path"></span><a class="reference internal" href="../command/find_path.html#command:find_path" title="find_path"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_path()</span></code></a>, <span class="target" id="index-0-command:find_library"></span><a class="reference internal" href="../command/find_library.html#command:find_library" title="find_library"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_library()</span></code></a>,
<span class="target" id="index-0-command:find_program"></span><a class="reference internal" href="../command/find_program.html#command:find_program" title="find_program"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_program()</span></code></a>, and <span class="target" id="index-1-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> commands gained the
<code class="docutils literal notranslate"><span class="pre">NO_CMAKE_INSTALL_PREFIX</span></code> option to control searching
<span class="target" id="index-0-variable:CMAKE_INSTALL_PREFIX"></span><a class="reference internal" href="../variable/CMAKE_INSTALL_PREFIX.html#variable:CMAKE_INSTALL_PREFIX" title="CMAKE_INSTALL_PREFIX"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_INSTALL_PREFIX</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-1-command:find_file"></span><a class="reference internal" href="../command/find_file.html#command:find_file" title="find_file"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_file()</span></code></a>, <span class="target" id="index-1-command:find_path"></span><a class="reference internal" href="../command/find_path.html#command:find_path" title="find_path"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_path()</span></code></a>, <span class="target" id="index-1-command:find_library"></span><a class="reference internal" href="../command/find_library.html#command:find_library" title="find_library"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_library()</span></code></a>,
<span class="target" id="index-1-command:find_program"></span><a class="reference internal" href="../command/find_program.html#command:find_program" title="find_program"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_program()</span></code></a>, and <span class="target" id="index-2-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> commands gained the
ability to specify which Windows Registry views must be queried.</p></li>
<li><p>The <span class="target" id="index-3-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> command gained a <code class="docutils literal notranslate"><span class="pre">GLOBAL</span></code> option that
allows for the promotion of imported targets to global scope for the
duration of the <span class="target" id="index-4-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> call.</p></li>
<li><p>The <span class="target" id="index-0-command:if"></span><a class="reference internal" href="../command/if.html#command:if" title="if"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">if()</span></code></a> command gained the capability to compare paths by
using the <code class="docutils literal notranslate"><span class="pre">PATH_EQUAL</span></code> operator. See policy <span class="target" id="index-0-policy:CMP0139"></span><a class="reference internal" href="../policy/CMP0139.html#policy:CMP0139" title="CMP0139"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0139</span></code></a>.</p></li>
</ul>
</section>
<section id="variables">
<h3><a class="toc-backref" href="#id12" role="doc-backlink">Variables</a><a class="headerlink" href="#variables" title="Permalink to this heading">¶</a></h3>
<ul>
<li><p>The <span class="target" id="index-0-variable:CMAKE_COLOR_DIAGNOSTICS"></span><a class="reference internal" href="../variable/CMAKE_COLOR_DIAGNOSTICS.html#variable:CMAKE_COLOR_DIAGNOSTICS" title="CMAKE_COLOR_DIAGNOSTICS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_COLOR_DIAGNOSTICS</span></code></a> variable was added to control
color diagnostics generated by compilers. This variable also controls
color build system messages with <a class="reference internal" href="../manual/cmake-generators.7.html#makefile-generators"><span class="std std-ref">Makefile Generators</span></a>, replacing
<span class="target" id="index-0-variable:CMAKE_COLOR_MAKEFILE"></span><a class="reference internal" href="../variable/CMAKE_COLOR_MAKEFILE.html#variable:CMAKE_COLOR_MAKEFILE" title="CMAKE_COLOR_MAKEFILE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_COLOR_MAKEFILE</span></code></a>.</p>
<p>The <span class="target" id="index-0-envvar:CMAKE_COLOR_DIAGNOSTICS"></span><a class="reference internal" href="../envvar/CMAKE_COLOR_DIAGNOSTICS.html#envvar:CMAKE_COLOR_DIAGNOSTICS" title="CMAKE_COLOR_DIAGNOSTICS"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CMAKE_COLOR_DIAGNOSTICS</span></code></a> environment variable was added to set
a default value for <span class="target" id="index-1-variable:CMAKE_COLOR_DIAGNOSTICS"></span><a class="reference internal" href="../variable/CMAKE_COLOR_DIAGNOSTICS.html#variable:CMAKE_COLOR_DIAGNOSTICS" title="CMAKE_COLOR_DIAGNOSTICS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_COLOR_DIAGNOSTICS</span></code></a>.</p>
</li>
<li><p>The <span class="target" id="index-1-variable:CMAKE_COMPILE_WARNING_AS_ERROR"></span><a class="reference internal" href="../variable/CMAKE_COMPILE_WARNING_AS_ERROR.html#variable:CMAKE_COMPILE_WARNING_AS_ERROR" title="CMAKE_COMPILE_WARNING_AS_ERROR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_COMPILE_WARNING_AS_ERROR</span></code></a> variable and corresponding
<span class="target" id="index-1-prop_tgt:COMPILE_WARNING_AS_ERROR"></span><a class="reference internal" href="../prop_tgt/COMPILE_WARNING_AS_ERROR.html#prop_tgt:COMPILE_WARNING_AS_ERROR" title="COMPILE_WARNING_AS_ERROR"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">COMPILE_WARNING_AS_ERROR</span></code></a> target property were added to enable
compilation with a compiler-specific flag to treat warnings as errors,
such as <code class="docutils literal notranslate"><span class="pre">-Werror</span></code>.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_CUDA_ARCHITECTURES"></span><a class="reference internal" href="../variable/CMAKE_CUDA_ARCHITECTURES.html#variable:CMAKE_CUDA_ARCHITECTURES" title="CMAKE_CUDA_ARCHITECTURES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_CUDA_ARCHITECTURES</span></code></a> variable and associated
<span class="target" id="index-0-prop_tgt:CUDA_ARCHITECTURES"></span><a class="reference internal" href="../prop_tgt/CUDA_ARCHITECTURES.html#prop_tgt:CUDA_ARCHITECTURES" title="CUDA_ARCHITECTURES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">CUDA_ARCHITECTURES</span></code></a> target property now support the
special <code class="docutils literal notranslate"><span class="pre">native</span></code> value to compile for the architectures(s)
of the host's GPU(s).</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_FIND_PACKAGE_TARGETS_GLOBAL"></span><a class="reference internal" href="../variable/CMAKE_FIND_PACKAGE_TARGETS_GLOBAL.html#variable:CMAKE_FIND_PACKAGE_TARGETS_GLOBAL" title="CMAKE_FIND_PACKAGE_TARGETS_GLOBAL"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_PACKAGE_TARGETS_GLOBAL</span></code></a> variable was added to
toggle behavior of the <span class="target" id="index-5-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> command's new <code class="docutils literal notranslate"><span class="pre">GLOBAL</span></code>
option.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_FIND_USE_INSTALL_PREFIX"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_INSTALL_PREFIX.html#variable:CMAKE_FIND_USE_INSTALL_PREFIX" title="CMAKE_FIND_USE_INSTALL_PREFIX"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_INSTALL_PREFIX</span></code></a> variable was added to toggle
behavior of the <span class="target" id="index-2-command:find_file"></span><a class="reference internal" href="../command/find_file.html#command:find_file" title="find_file"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_file()</span></code></a>, <span class="target" id="index-2-command:find_library"></span><a class="reference internal" href="../command/find_library.html#command:find_library" title="find_library"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_library()</span></code></a>,
<span class="target" id="index-2-command:find_path"></span><a class="reference internal" href="../command/find_path.html#command:find_path" title="find_path"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_path()</span></code></a>, <span class="target" id="index-6-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a>, and <span class="target" id="index-2-command:find_program"></span><a class="reference internal" href="../command/find_program.html#command:find_program" title="find_program"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_program()</span></code></a>
commands' new <code class="docutils literal notranslate"><span class="pre">NO_CMAKE_INSTALL_PREFIX</span></code> option.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_PROJECT_TOP_LEVEL_INCLUDES"></span><a class="reference internal" href="../variable/CMAKE_PROJECT_TOP_LEVEL_INCLUDES.html#variable:CMAKE_PROJECT_TOP_LEVEL_INCLUDES" title="CMAKE_PROJECT_TOP_LEVEL_INCLUDES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_PROJECT_TOP_LEVEL_INCLUDES</span></code></a> variable was added to allow
injecting custom code at the site of the first <span class="target" id="index-0-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> call,
after the host and target platform details have been determined.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES"></span><a class="reference internal" href="../variable/CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES.html#variable:CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES" title="CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES</span></code></a> variable
was added to tell the <span class="target" id="index-0-command:try_compile"></span><a class="reference internal" href="../command/try_compile.html#command:try_compile" title="try_compile"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">try_compile()</span></code></a> command not to
pass any platform variables to the test project.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_VERIFY_INTERFACE_HEADER_SETS"></span><a class="reference internal" href="../variable/CMAKE_VERIFY_INTERFACE_HEADER_SETS.html#variable:CMAKE_VERIFY_INTERFACE_HEADER_SETS" title="CMAKE_VERIFY_INTERFACE_HEADER_SETS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_VERIFY_INTERFACE_HEADER_SETS</span></code></a> variable and
corresponding <span class="target" id="index-0-prop_tgt:VERIFY_INTERFACE_HEADER_SETS"></span><a class="reference internal" href="../prop_tgt/VERIFY_INTERFACE_HEADER_SETS.html#prop_tgt:VERIFY_INTERFACE_HEADER_SETS" title="VERIFY_INTERFACE_HEADER_SETS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VERIFY_INTERFACE_HEADER_SETS</span></code></a> target property
were added to enable build rules that verify all headers in header sets
can be used on their own.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_VS_NO_COMPILE_BATCHING"></span><a class="reference internal" href="../variable/CMAKE_VS_NO_COMPILE_BATCHING.html#variable:CMAKE_VS_NO_COMPILE_BATCHING" title="CMAKE_VS_NO_COMPILE_BATCHING"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_VS_NO_COMPILE_BATCHING</span></code></a> variable and corresponding
<span class="target" id="index-0-prop_tgt:VS_NO_COMPILE_BATCHING"></span><a class="reference internal" href="../prop_tgt/VS_NO_COMPILE_BATCHING.html#prop_tgt:VS_NO_COMPILE_BATCHING" title="VS_NO_COMPILE_BATCHING"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VS_NO_COMPILE_BATCHING</span></code></a> target property were added to
tell <a class="reference internal" href="../manual/cmake-generators.7.html#visual-studio-generators"><span class="std std-ref">Visual Studio Generators</span></a> whether to disable compiler
parallelism and call the compiler with one source file at a time.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_WATCOM_RUNTIME_LIBRARY"></span><a class="reference internal" href="../variable/CMAKE_WATCOM_RUNTIME_LIBRARY.html#variable:CMAKE_WATCOM_RUNTIME_LIBRARY" title="CMAKE_WATCOM_RUNTIME_LIBRARY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_WATCOM_RUNTIME_LIBRARY</span></code></a> variable and
<span class="target" id="index-0-prop_tgt:WATCOM_RUNTIME_LIBRARY"></span><a class="reference internal" href="../prop_tgt/WATCOM_RUNTIME_LIBRARY.html#prop_tgt:WATCOM_RUNTIME_LIBRARY" title="WATCOM_RUNTIME_LIBRARY"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">WATCOM_RUNTIME_LIBRARY</span></code></a> target property were introduced to
select the runtime library used by compilers targeting the Watcom ABI.
See policy <span class="target" id="index-0-policy:CMP0136"></span><a class="reference internal" href="../policy/CMP0136.html#policy:CMP0136" title="CMP0136"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0136</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_XCODE_XCCONFIG"></span><a class="reference internal" href="../variable/CMAKE_XCODE_XCCONFIG.html#variable:CMAKE_XCODE_XCCONFIG" title="CMAKE_XCODE_XCCONFIG"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_XCODE_XCCONFIG</span></code></a> variable and corresponding
<span class="target" id="index-0-prop_tgt:XCODE_XCCONFIG"></span><a class="reference internal" href="../prop_tgt/XCODE_XCCONFIG.html#prop_tgt:XCODE_XCCONFIG" title="XCODE_XCCONFIG"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">XCODE_XCCONFIG</span></code></a> target property were added to tell
the <span class="target" id="index-0-generator:Xcode"></span><a class="reference internal" href="../generator/Xcode.html#generator:Xcode" title="Xcode"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">Xcode</span></code></a> generator to handle <code class="docutils literal notranslate"><span class="pre">xcconfig</span></code> files.</p></li>
</ul>
</section>
<section id="properties">
<h3><a class="toc-backref" href="#id13" role="doc-backlink">Properties</a><a class="headerlink" href="#properties" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-prop_tgt:INTERFACE_LINK_LIBRARIES_DIRECT"></span><a class="reference internal" href="../prop_tgt/INTERFACE_LINK_LIBRARIES_DIRECT.html#prop_tgt:INTERFACE_LINK_LIBRARIES_DIRECT" title="INTERFACE_LINK_LIBRARIES_DIRECT"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_LINK_LIBRARIES_DIRECT</span></code></a> and
<span class="target" id="index-0-prop_tgt:INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE"></span><a class="reference internal" href="../prop_tgt/INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE.html#prop_tgt:INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE" title="INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE</span></code></a> target properties
were added to express usage requirements affecting a consumer's
direct link dependencies.</p></li>
<li><p>The <span class="target" id="index-0-prop_tgt:INTERFACE_HEADER_SETS_TO_VERIFY"></span><a class="reference internal" href="../prop_tgt/INTERFACE_HEADER_SETS_TO_VERIFY.html#prop_tgt:INTERFACE_HEADER_SETS_TO_VERIFY" title="INTERFACE_HEADER_SETS_TO_VERIFY"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_HEADER_SETS_TO_VERIFY</span></code></a> target property was
added to specify which header sets should be verified by
<span class="target" id="index-1-prop_tgt:VERIFY_INTERFACE_HEADER_SETS"></span><a class="reference internal" href="../prop_tgt/VERIFY_INTERFACE_HEADER_SETS.html#prop_tgt:VERIFY_INTERFACE_HEADER_SETS" title="VERIFY_INTERFACE_HEADER_SETS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VERIFY_INTERFACE_HEADER_SETS</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-prop_tgt:LINK_LIBRARIES"></span><a class="reference internal" href="../prop_tgt/LINK_LIBRARIES.html#prop_tgt:LINK_LIBRARIES" title="LINK_LIBRARIES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">LINK_LIBRARIES</span></code></a> target property now supports
the <span class="target" id="index-0-genex:LINK_ONLY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_ONLY" title="LINK_ONLY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">$<LINK_ONLY:...></span></code></a> generator expression.
See policy <span class="target" id="index-0-policy:CMP0131"></span><a class="reference internal" href="../policy/CMP0131.html#policy:CMP0131" title="CMP0131"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0131</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-prop_tgt:VS_DOTNET_STARTUP_OBJECT"></span><a class="reference internal" href="../prop_tgt/VS_DOTNET_STARTUP_OBJECT.html#prop_tgt:VS_DOTNET_STARTUP_OBJECT" title="VS_DOTNET_STARTUP_OBJECT"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VS_DOTNET_STARTUP_OBJECT</span></code></a> target property was added to
tell <a class="reference internal" href="../manual/cmake-generators.7.html#visual-studio-generators"><span class="std std-ref">Visual Studio Generators</span></a> which startup class shall be used
when the program or project is executed. This is necessary when more
than one <code class="docutils literal notranslate"><span class="pre">static</span> <span class="pre">void</span> <span class="pre">Main(string[])</span></code> function signature is available
in a managed .NET project.</p></li>
</ul>
</section>
<section id="modules">
<h3><a class="toc-backref" href="#id14" role="doc-backlink">Modules</a><a class="headerlink" href="#modules" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-module:ExternalProject"></span><a class="reference internal" href="../module/ExternalProject.html#module:ExternalProject" title="ExternalProject"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">ExternalProject</span></code></a> module <span class="target" id="index-0-command:externalproject_add"></span><a class="reference internal" href="../module/ExternalProject.html#command:externalproject_add" title="externalproject_add"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">ExternalProject_Add()</span></code></a>
command gained a new <code class="docutils literal notranslate"><span class="pre">DOWNLOAD_EXTRACT_TIMESTAMP</span></code> option for
controlling whether the timestamps of extracted contents are set to
match those in the archive when the <code class="docutils literal notranslate"><span class="pre">URL</span></code> download method is used.
Policy <span class="target" id="index-0-policy:CMP0135"></span><a class="reference internal" href="../policy/CMP0135.html#policy:CMP0135" title="CMP0135"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0135</span></code></a> was added to enable the option by default.</p></li>
<li><p>The <span class="target" id="index-0-module:FetchContent"></span><a class="reference internal" href="../module/FetchContent.html#module:FetchContent" title="FetchContent"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FetchContent</span></code></a> module and the <span class="target" id="index-7-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> command
now support integration capabilities:</p>
<ul>
<li><p><span class="target" id="index-1-command:fetchcontent_makeavailable"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_makeavailable" title="fetchcontent_makeavailable"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_MakeAvailable()</span></code></a> can now try to satisfy a dependency
by calling <span class="target" id="index-8-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> first. A new
<span class="target" id="index-0-variable:FETCHCONTENT_TRY_FIND_PACKAGE_MODE"></span><a class="reference internal" href="../module/FetchContent.html#variable:FETCHCONTENT_TRY_FIND_PACKAGE_MODE" title="FETCHCONTENT_TRY_FIND_PACKAGE_MODE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">FETCHCONTENT_TRY_FIND_PACKAGE_MODE</span></code></a> variable controls whether
this is done by default for all dependencies, is opt-in per dependency,
or is disabled entirely.</p></li>
<li><p><span class="target" id="index-9-command:find_package"></span><a class="reference internal" href="../command/find_package.html#command:find_package" title="find_package"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package()</span></code></a> can be re-routed to call
<span class="target" id="index-2-command:fetchcontent_makeavailable"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_makeavailable" title="fetchcontent_makeavailable"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_MakeAvailable()</span></code></a> instead. A new read-only
<span class="target" id="index-0-variable:CMAKE_FIND_PACKAGE_REDIRECTS_DIR"></span><a class="reference internal" href="../variable/CMAKE_FIND_PACKAGE_REDIRECTS_DIR.html#variable:CMAKE_FIND_PACKAGE_REDIRECTS_DIR" title="CMAKE_FIND_PACKAGE_REDIRECTS_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_PACKAGE_REDIRECTS_DIR</span></code></a> variable points to a
directory where config package files can be located to facilitate these
re-routed calls.</p></li>
</ul>
</li>
<li><p>The <span class="target" id="index-0-module:FindJNI"></span><a class="reference internal" href="../module/FindJNI.html#module:FindJNI" title="FindJNI"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindJNI</span></code></a> module now provides imported targets.</p></li>
<li><p>The <span class="target" id="index-0-module:FindMatlab"></span><a class="reference internal" href="../module/FindMatlab.html#module:FindMatlab" title="FindMatlab"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindMatlab</span></code></a> module <span class="target" id="index-0-command:matlab_add_mex"></span><a class="reference internal" href="../module/FindMatlab.html#command:matlab_add_mex" title="matlab_add_mex"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">matlab_add_mex()</span></code></a> function
gained a <code class="docutils literal notranslate"><span class="pre">NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES</span></code> option to disable
automatic linking of MATLAB libraries.</p></li>
<li><p>The <span class="target" id="index-0-module:FindVulkan"></span><a class="reference internal" href="../module/FindVulkan.html#module:FindVulkan" title="FindVulkan"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindVulkan</span></code></a> module now supports components to select which
VulkanSDK tool and libraries to find in addition to the Vulkan SDK headers
and library.</p></li>
<li><p>The <span class="target" id="index-0-module:FindZLIB"></span><a class="reference internal" href="../module/FindZLIB.html#module:FindZLIB" title="FindZLIB"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindZLIB</span></code></a> gained a new <code class="docutils literal notranslate"><span class="pre">ZLIB_USE_STATIC_LIBS</span></code> variable to
search only for static libraries.</p></li>
</ul>
</section>
<section id="generator-expressions">
<h3><a class="toc-backref" href="#id15" role="doc-backlink">Generator Expressions</a><a class="headerlink" href="#generator-expressions" title="Permalink to this heading">¶</a></h3>
<ul>
<li><p>The <span class="target" id="index-0-genex:LINK_LIBRARY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_LIBRARY" title="LINK_LIBRARY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_LIBRARY</span></code></a> generator expression was added to manage how
libraries are specified during the link step.
The <span class="target" id="index-0-variable:CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>"></span><a class="reference internal" href="../variable/CMAKE_LANG_LINK_LIBRARY_USING_FEATURE.html#variable:CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>" title="CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE></span></code></a> and
<span class="target" id="index-0-variable:CMAKE_LINK_LIBRARY_USING_<FEATURE>"></span><a class="reference internal" href="../variable/CMAKE_LINK_LIBRARY_USING_FEATURE.html#variable:CMAKE_LINK_LIBRARY_USING_<FEATURE>" title="CMAKE_LINK_LIBRARY_USING_<FEATURE>"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_LINK_LIBRARY_USING_<FEATURE></span></code></a> variables are used to define
features usable by the <span class="target" id="index-1-genex:LINK_LIBRARY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_LIBRARY" title="LINK_LIBRARY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_LIBRARY</span></code></a> generator expression.
Moreover, the <span class="target" id="index-0-prop_tgt:LINK_LIBRARY_OVERRIDE"></span><a class="reference internal" href="../prop_tgt/LINK_LIBRARY_OVERRIDE.html#prop_tgt:LINK_LIBRARY_OVERRIDE" title="LINK_LIBRARY_OVERRIDE"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">LINK_LIBRARY_OVERRIDE</span></code></a> and
<span class="target" id="index-0-prop_tgt:LINK_LIBRARY_OVERRIDE_<LIBRARY>"></span><a class="reference internal" href="../prop_tgt/LINK_LIBRARY_OVERRIDE_LIBRARY.html#prop_tgt:LINK_LIBRARY_OVERRIDE_<LIBRARY>" title="LINK_LIBRARY_OVERRIDE_<LIBRARY>"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">LINK_LIBRARY_OVERRIDE_<LIBRARY></span></code></a> target properties are
available to resolve incompatible features.</p>
<p>The <span class="target" id="index-2-genex:LINK_LIBRARY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_LIBRARY" title="LINK_LIBRARY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_LIBRARY</span></code></a> generator expression can link frameworks in
various ways when targeting <code class="docutils literal notranslate"><span class="pre">Apple</span></code> platforms.
The following features were added:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">FRAMEWORK</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">NEEDED_FRAMEWORK</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">REEXPORT_FRAMEWORK</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">WEAK_FRAMEWORK</span></code></p></li>
</ul>
<p>The <span class="target" id="index-3-genex:LINK_LIBRARY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_LIBRARY" title="LINK_LIBRARY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_LIBRARY</span></code></a> generator expression can link libraries in
various ways when targeting <code class="docutils literal notranslate"><span class="pre">Apple</span></code> platforms.
The following features were added:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">NEEDED_LIBRARY</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">REEXPORT_LIBRARY</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">WEAK_LIBRARY</span></code></p></li>
</ul>
<p>The <span class="target" id="index-4-genex:LINK_LIBRARY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_LIBRARY" title="LINK_LIBRARY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_LIBRARY</span></code></a> generator expression gained the feature
<code class="docutils literal notranslate"><span class="pre">WHOLE_ARCHIVE</span></code> to force load of all members in a static library.
This feature is supported on the following target platforms:</p>
<ul class="simple">
<li><p>all <code class="docutils literal notranslate"><span class="pre">Apple</span></code> variants</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Linux</span></code></p></li>
<li><p>all <code class="docutils literal notranslate"><span class="pre">BSD</span></code> variants</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">SunOS</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Windows</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">CYGWIN</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">MSYS</span></code></p></li>
</ul>
</li>
<li><p>The <span class="target" id="index-0-genex:LINK_GROUP"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_GROUP" title="LINK_GROUP"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_GROUP</span></code></a> generator expression was added to manage the
grouping of libraries during the link step. The
<span class="target" id="index-0-variable:CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE>"></span><a class="reference internal" href="../variable/CMAKE_LANG_LINK_GROUP_USING_FEATURE.html#variable:CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE>" title="CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE>"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE></span></code></a> and
<span class="target" id="index-0-variable:CMAKE_LINK_GROUP_USING_<FEATURE>"></span><a class="reference internal" href="../variable/CMAKE_LINK_GROUP_USING_FEATURE.html#variable:CMAKE_LINK_GROUP_USING_<FEATURE>" title="CMAKE_LINK_GROUP_USING_<FEATURE>"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_LINK_GROUP_USING_<FEATURE></span></code></a> variables are used to define
features usable with the <span class="target" id="index-1-genex:LINK_GROUP"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_GROUP" title="LINK_GROUP"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_GROUP</span></code></a> generator expression.
This release defines the <code class="docutils literal notranslate"><span class="pre">RESCAN</span></code> feature, which can be used to handle
circular references among static libraries when using toolchains for
Linux, BSD, SunOS and GNU toolchains for Windows.</p></li>
<li><p>The <span class="target" id="index-0-genex:PATH"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:PATH" title="PATH"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">PATH</span></code></a> generator expression was added to manage paths.</p></li>
<li><p>The <span class="target" id="index-0-genex:PATH_EQUAL"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:PATH_EQUAL" title="PATH_EQUAL"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">PATH_EQUAL</span></code></a> generator expression was added to manage path
comparisons.</p></li>
<li><p>The <span class="target" id="index-0-genex:TARGET_BUNDLE_DIR_NAME"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:TARGET_BUNDLE_DIR_NAME" title="TARGET_BUNDLE_DIR_NAME"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">TARGET_BUNDLE_DIR_NAME</span></code></a> generator expression
was added to evaluate to the name of the bundle directory
for a given bundle target.</p></li>
</ul>
</section>
<section id="ctest">
<h3><a class="toc-backref" href="#id16" role="doc-backlink">CTest</a><a class="headerlink" href="#ctest" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p><span class="target" id="index-0-manual:ctest(1)"></span><a class="reference internal" href="../manual/ctest.1.html#manual:ctest(1)" title="ctest(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">ctest(1)</span></code></a> gained a
<a class="reference internal" href="../manual/ctest.1.html#cmdoption-ctest-test-output-truncation"><code class="xref std std-option docutils literal notranslate"><span class="pre">--test-output-truncation</span></code></a> option
(and corresponding <span class="target" id="index-0-variable:CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION"></span><a class="reference internal" href="../variable/CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION.html#variable:CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION" title="CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION</span></code></a> variable)
to specify the truncation mode once the maximum test output size has been
reached. Possible values are <code class="docutils literal notranslate"><span class="pre">tail</span></code> (default), <code class="docutils literal notranslate"><span class="pre">middle</span></code> or <code class="docutils literal notranslate"><span class="pre">head</span></code>.</p></li>
</ul>
</section>
<section id="cpack">
<h3><a class="toc-backref" href="#id17" role="doc-backlink">CPack</a><a class="headerlink" href="#cpack" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-cpack_gen:CPack WIX Generator"></span><a class="reference internal" href="../cpack_gen/wix.html#cpack_gen:CPack WIX Generator" title="CPack WIX Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">WIX</span> <span class="pre">Generator</span></code></a> gained a new variable,
<span class="target" id="index-0-variable:CPACK_WIX_ARCHITECTURE"></span><a class="reference internal" href="../cpack_gen/wix.html#variable:CPACK_WIX_ARCHITECTURE" title="CPACK_WIX_ARCHITECTURE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_WIX_ARCHITECTURE</span></code></a>, to specify the installer architecture
in order to support computers running Windows for ARM.</p></li>
<li><p>CPack now supports the <span class="target" id="index-0-variable:CPACK_THREADS"></span><a class="reference internal" href="../module/CPack.html#variable:CPACK_THREADS" title="CPACK_THREADS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_THREADS</span></code></a> option for <code class="docutils literal notranslate"><span class="pre">zstd</span></code>
compression when compiled with libarchive 3.6 or higher. It is
supported by official CMake binaries available on <a class="reference external" href="https://cmake.org/download/">cmake.org</a>.</p></li>
</ul>
</section>
</section>
<section id="deprecated-and-removed-features">
<h2><a class="toc-backref" href="#id18" role="doc-backlink">Deprecated and Removed Features</a><a class="headerlink" href="#deprecated-and-removed-features" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>The <span class="target" id="index-0-module:CPack"></span><a class="reference internal" href="../module/CPack.html#module:CPack" title="CPack"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CPack</span></code></a> module no longer enables the SLA by default in the
<span class="target" id="index-0-cpack_gen:CPack DragNDrop Generator"></span><a class="reference internal" href="../cpack_gen/dmg.html#cpack_gen:CPack DragNDrop Generator" title="CPack DragNDrop Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">DragNDrop</span> <span class="pre">Generator</span></code></a>. See policy <span class="target" id="index-0-policy:CMP0133"></span><a class="reference internal" href="../policy/CMP0133.html#policy:CMP0133" title="CMP0133"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0133</span></code></a>
and the <span class="target" id="index-0-variable:CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE"></span><a class="reference internal" href="../cpack_gen/dmg.html#variable:CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE" title="CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE</span></code></a> variable.</p></li>
<li><p>The deprecated <span class="target" id="index-0-cpack_gen:CPack PackageMaker Generator"></span><a class="reference internal" href="../cpack_gen/packagemaker.html#cpack_gen:CPack PackageMaker Generator" title="CPack PackageMaker Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">PackageMaker</span> <span class="pre">Generator</span></code></a> has been removed.</p></li>
<li><p>The <span class="target" id="index-0-module:FindGLUT"></span><a class="reference internal" href="../module/FindGLUT.html#module:FindGLUT" title="FindGLUT"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindGLUT</span></code></a> module no longer provides the undocumented
<code class="docutils literal notranslate"><span class="pre">GLUT_LIBRARY</span></code> and <code class="docutils literal notranslate"><span class="pre">GLUT_INCLUDE_PATH</span></code> result variables.</p></li>
<li><p>The <span class="target" id="index-1-module:FindVulkan"></span><a class="reference internal" href="../module/FindVulkan.html#module:FindVulkan" title="FindVulkan"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindVulkan</span></code></a> module no longer silently ignores unknown
components requested by a <code class="docutils literal notranslate"><span class="pre">find_package(Vulkan</span> <span class="pre">REQUIRED</span> <span class="pre">...)</span></code> call.
With the addition of support for components, requests for unknown
components now produce an error.</p></li>
</ul>
</section>
<section id="other-changes">
<h2><a class="toc-backref" href="#id19" role="doc-backlink">Other Changes</a><a class="headerlink" href="#other-changes" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>CMake no longer sets environment variables like <span class="target" id="index-0-envvar:CC"></span><a class="reference internal" href="../envvar/CC.html#envvar:CC" title="CC"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CC</span></code></a>, <span class="target" id="index-0-envvar:CXX"></span><a class="reference internal" href="../envvar/CXX.html#envvar:CXX" title="CXX"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CXX</span></code></a>,
etc. when enabling the corresponding language during the first CMake run in
a build directory. See policy <span class="target" id="index-0-policy:CMP0132"></span><a class="reference internal" href="../policy/CMP0132.html#policy:CMP0132" title="CMP0132"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0132</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-module:CheckIPOSupported"></span><a class="reference internal" href="../module/CheckIPOSupported.html#module:CheckIPOSupported" title="CheckIPOSupported"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckIPOSupported</span></code></a> module <span class="target" id="index-0-command:check_ipo_supported"></span><a class="reference internal" href="../module/CheckIPOSupported.html#command:check_ipo_supported" title="check_ipo_supported"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">check_ipo_supported()</span></code></a>
command now uses the caller's <span class="target" id="index-0-variable:CMAKE_<LANG>_FLAGS"></span><a class="reference internal" href="../variable/CMAKE_LANG_FLAGS.html#variable:CMAKE_<LANG>_FLAGS" title="CMAKE_<LANG>_FLAGS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_<LANG>_FLAGS</span></code></a>
and <span class="target" id="index-0-variable:CMAKE_<LANG>_FLAGS_<CONFIG>"></span><a class="reference internal" href="../variable/CMAKE_LANG_FLAGS_CONFIG.html#variable:CMAKE_<LANG>_FLAGS_<CONFIG>" title="CMAKE_<LANG>_FLAGS_<CONFIG>"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_<LANG>_FLAGS_<CONFIG></span></code></a> values.
See policy <span class="target" id="index-0-policy:CMP0138"></span><a class="reference internal" href="../policy/CMP0138.html#policy:CMP0138" title="CMP0138"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0138</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-generator:MSYS Makefiles"></span><a class="reference internal" href="../generator/MSYS%20Makefiles.html#generator:MSYS Makefiles" title="MSYS Makefiles"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">MSYS</span> <span class="pre">Makefiles</span></code></a> and <span class="target" id="index-0-generator:MinGW Makefiles"></span><a class="reference internal" href="../generator/MinGW%20Makefiles.html#generator:MinGW Makefiles" title="MinGW Makefiles"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">MinGW</span> <span class="pre">Makefiles</span></code></a>
generators, when a compiler is not explicitly specified, now select
the first compiler (of any name) found in directories listed by the
<code class="docutils literal notranslate"><span class="pre">PATH</span></code> environment variable.</p></li>
<li><p>The <span class="target" id="index-1-command:try_compile"></span><a class="reference internal" href="../command/try_compile.html#command:try_compile" title="try_compile"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">try_compile()</span></code></a> command
<a class="reference internal" href="../command/try_compile.html#try-compiling-whole-projects"><span class="std std-ref">whole-project</span></a> signature
now propagates platform variables. See policy <span class="target" id="index-0-policy:CMP0137"></span><a class="reference internal" href="../policy/CMP0137.html#policy:CMP0137" title="CMP0137"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0137</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-command:while"></span><a class="reference internal" href="../command/while.html#command:while" title="while"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">while()</span></code></a> command now diagnoses errors during condition
evaluation. See policy <span class="target" id="index-0-policy:CMP0130"></span><a class="reference internal" href="../policy/CMP0130.html#policy:CMP0130" title="CMP0130"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0130</span></code></a>.</p></li>
<li><p>The precompiled macOS binaries provided on <a class="reference external" href="https://cmake.org/download/">cmake.org</a> no longer attach a
SLA to the <code class="docutils literal notranslate"><span class="pre">.dmg</span></code> packages. This was removed because macOS 12 deprecated
the tools used to attach <code class="docutils literal notranslate"><span class="pre">.dmg</span></code> resources.</p></li>
<li><p>A precompiled Windows <code class="docutils literal notranslate"><span class="pre">arm64</span></code> binary is now provided on <a class="reference external" href="https://cmake.org/download/">cmake.org</a>.</p></li>
</ul>
</section>
<section id="updates">
<h2><a class="toc-backref" href="#id20" role="doc-backlink">Updates</a><a class="headerlink" href="#updates" title="Permalink to this heading">¶</a></h2>
<p>Changes made since CMake 3.24.0 include the following.</p>
<section id="id1">
<h3><a class="toc-backref" href="#id21" role="doc-backlink">3.24.1, 3.24.2</a><a class="headerlink" href="#id1" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes
and/or fix regressions.</p></li>
</ul>
</section>
<section id="id2">
<h3><a class="toc-backref" href="#id22" role="doc-backlink">3.24.3</a><a class="headerlink" href="#id2" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <code class="docutils literal notranslate"><span class="pre">LLVMFlang</span></code> Fortran compiler support added in 3.24.0 has been extended:</p>
<ul>
<li><p>It now supports mixed-language linking between Fortran and C or CXX.</p></li>
<li><p>It now supports the GNU ABI (MinGW) on Windows, but not yet the MSVC ABI.</p></li>
</ul>
</li>
<li><p>Some implementation updates were made to support ecosystem changes
and/or fix regressions.</p></li>
</ul>
</section>
<section id="id3">
<h3><a class="toc-backref" href="#id23" role="doc-backlink">3.24.4</a><a class="headerlink" href="#id3" title="Permalink to this heading">¶</a></h3>
<ul class="simple">
<li><p>This version made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes
and/or fix regressions.</p></li>
</ul>
</section>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">CMake 3.24 Release Notes</a><ul>
<li><a class="reference internal" href="#new-features">New Features</a><ul>
<li><a class="reference internal" href="#presets">Presets</a></li>
<li><a class="reference internal" href="#generators">Generators</a></li>
<li><a class="reference internal" href="#command-line">Command-Line</a></li>
<li><a class="reference internal" href="#compilers">Compilers</a></li>
<li><a class="reference internal" href="#platforms">Platforms</a></li>
<li><a class="reference internal" href="#commands">Commands</a></li>
<li><a class="reference internal" href="#variables">Variables</a></li>
<li><a class="reference internal" href="#properties">Properties</a></li>
<li><a class="reference internal" href="#modules">Modules</a></li>
<li><a class="reference internal" href="#generator-expressions">Generator Expressions</a></li>
<li><a class="reference internal" href="#ctest">CTest</a></li>
<li><a class="reference internal" href="#cpack">CPack</a></li>
</ul>
</li>
<li><a class="reference internal" href="#deprecated-and-removed-features">Deprecated and Removed Features</a></li>
<li><a class="reference internal" href="#other-changes">Other Changes</a></li>
<li><a class="reference internal" href="#updates">Updates</a><ul>
<li><a class="reference internal" href="#id1">3.24.1, 3.24.2</a></li>
<li><a class="reference internal" href="#id2">3.24.3</a></li>
<li><a class="reference internal" href="#id3">3.24.4</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="3.25.html"
title="previous chapter">CMake 3.25 Release Notes</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="3.23.html"
title="next chapter">CMake 3.23 Release Notes</a></p>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/release/3.24.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="3.23.html" title="CMake 3.23 Release Notes"
>next</a> |</li>
<li class="right" >
<a href="3.25.html" title="CMake 3.25 Release Notes"
>previous</a> |</li>
<li>
<img src="../_static/cmake-logo-16.png" alt=""
style="vertical-align: middle; margin-top: -2px" />
</li>
<li>
<a href="https://cmake.org/">CMake</a> »
</li>
<li>
<a href="../index.html">3.26.5 Documentation</a> »
</li>
<li class="nav-item nav-item-1"><a href="index.html" >CMake Release Notes</a> »</li>
<li class="nav-item nav-item-this"><a href="">CMake 3.24 Release Notes</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2000-2023 Kitware, Inc. and Contributors.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
</div>
</body>
</html>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists