| |
| <!DOCTYPE html> |
| |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>CMake 3.16 Release Notes — CMake 3.23.1 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/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.15 Release Notes" href="3.15.html" /> |
| <link rel="prev" title="CMake 3.17 Release Notes" href="3.17.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.15.html" title="CMake 3.15 Release Notes" |
| accesskey="N">next</a> |</li> |
| <li class="right" > |
| <a href="3.17.html" title="CMake 3.17 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.23.1 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.16 Release Notes</a></li> |
| </ul> |
| </div> |
| |
| <div class="document"> |
| <div class="documentwrapper"> |
| <div class="bodywrapper"> |
| <div class="body" role="main"> |
| |
| <div class="section" id="cmake-3-16-release-notes"> |
| <h1><a class="toc-backref" href="#id5">CMake 3.16 Release Notes</a><a class="headerlink" href="#cmake-3-16-release-notes" title="Permalink to this headline">¶</a></h1> |
| <div class="contents topic" id="contents"> |
| <p class="topic-title">Contents</p> |
| <ul class="simple"> |
| <li><p><a class="reference internal" href="#cmake-3-16-release-notes" id="id5">CMake 3.16 Release Notes</a></p> |
| <ul> |
| <li><p><a class="reference internal" href="#new-features" id="id6">New Features</a></p> |
| <ul> |
| <li><p><a class="reference internal" href="#languages" id="id7">Languages</a></p></li> |
| <li><p><a class="reference internal" href="#compilers" id="id8">Compilers</a></p></li> |
| <li><p><a class="reference internal" href="#platforms" id="id9">Platforms</a></p></li> |
| <li><p><a class="reference internal" href="#command-line" id="id10">Command-Line</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="#autogen" id="id15">Autogen</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.16.2</a></p></li> |
| <li><p><a class="reference internal" href="#id2" id="id22">3.16.5</a></p></li> |
| <li><p><a class="reference internal" href="#id3" id="id23">3.16.7</a></p></li> |
| <li><p><a class="reference internal" href="#id4" id="id24">3.16.9</a></p></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <p>Changes made since CMake 3.15 include the following.</p> |
| <div class="section" id="new-features"> |
| <h2><a class="toc-backref" href="#id6">New Features</a><a class="headerlink" href="#new-features" title="Permalink to this headline">¶</a></h2> |
| <div class="section" id="languages"> |
| <h3><a class="toc-backref" href="#id7">Languages</a><a class="headerlink" href="#languages" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>CMake learned to support the Objective C (<code class="docutils literal notranslate"><span class="pre">OBJC</span></code>) and Objective C++ |
| (<code class="docutils literal notranslate"><span class="pre">OBJCXX</span></code>) languages. They may be enabled via the <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> |
| and <span class="target" id="index-0-command:enable_language"></span><a class="reference internal" href="../command/enable_language.html#command:enable_language" title="enable_language"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">enable_language()</span></code></a> commands. When <code class="docutils literal notranslate"><span class="pre">OBJC</span></code> or <code class="docutils literal notranslate"><span class="pre">OBJCXX</span></code> |
| is enabled, source files with the <code class="docutils literal notranslate"><span class="pre">.m</span></code> or <code class="docutils literal notranslate"><span class="pre">.mm</span></code>, respectively, |
| will be compiled as Objective C or C++. Otherwise they will be treated |
| as plain C++ sources as they were before.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="compilers"> |
| <h3><a class="toc-backref" href="#id8">Compilers</a><a class="headerlink" href="#compilers" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>The <code class="docutils literal notranslate"><span class="pre">Clang</span></code> compiler is now supported on <code class="docutils literal notranslate"><span class="pre">Solaris</span></code>.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="platforms"> |
| <h3><a class="toc-backref" href="#id9">Platforms</a><a class="headerlink" href="#platforms" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>On AIX, executables using the <span class="target" id="index-0-prop_tgt:ENABLE_EXPORTS"></span><a class="reference internal" href="../prop_tgt/ENABLE_EXPORTS.html#prop_tgt:ENABLE_EXPORTS" title="ENABLE_EXPORTS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">ENABLE_EXPORTS</span></code></a> target property |
| now produce a linker import file with a <code class="docutils literal notranslate"><span class="pre">.imp</span></code> extension in addition |
| to the executable file. Plugins (created via <span class="target" id="index-0-command:add_library"></span><a class="reference internal" href="../command/add_library.html#command:add_library" title="add_library"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">add_library()</span></code></a> with |
| the <code class="docutils literal notranslate"><span class="pre">MODULE</span></code> option) that use <span class="target" id="index-0-command:target_link_libraries"></span><a class="reference internal" href="../command/target_link_libraries.html#command:target_link_libraries" title="target_link_libraries"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">target_link_libraries()</span></code></a> to link |
| to the executable for its symbols are now linked using the import file. |
| The <span class="target" id="index-0-command:install"></span><a class="reference internal" href="../command/install.html#command:install" title="install"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">install(TARGETS)</span></code></a> command now installs the import file as |
| an <code class="docutils literal notranslate"><span class="pre">ARCHIVE</span></code> artifact.</p></li> |
| <li><p>On AIX, runtime linking is no longer enabled by default. CMake provides |
| the linker enough information to resolve all symbols up front. |
| One may manually enable runtime linking for shared libraries and/or |
| loadable modules by adding <code class="docutils literal notranslate"><span class="pre">-Wl,-G</span></code> to their link flags |
| (e.g. in the <span class="target" id="index-0-variable:CMAKE_SHARED_LINKER_FLAGS"></span><a class="reference internal" href="../variable/CMAKE_SHARED_LINKER_FLAGS.html#variable:CMAKE_SHARED_LINKER_FLAGS" title="CMAKE_SHARED_LINKER_FLAGS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_SHARED_LINKER_FLAGS</span></code></a> or |
| <span class="target" id="index-0-variable:CMAKE_MODULE_LINKER_FLAGS"></span><a class="reference internal" href="../variable/CMAKE_MODULE_LINKER_FLAGS.html#variable:CMAKE_MODULE_LINKER_FLAGS" title="CMAKE_MODULE_LINKER_FLAGS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_MODULE_LINKER_FLAGS</span></code></a> variable). |
| One may manually enable runtime linking for executables by adding |
| <code class="docutils literal notranslate"><span class="pre">-Wl,-brtl</span></code> to their link flags (e.g. in the |
| <span class="target" id="index-0-variable:CMAKE_EXE_LINKER_FLAGS"></span><a class="reference internal" href="../variable/CMAKE_EXE_LINKER_FLAGS.html#variable:CMAKE_EXE_LINKER_FLAGS" title="CMAKE_EXE_LINKER_FLAGS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_EXE_LINKER_FLAGS</span></code></a> variable).</p></li> |
| </ul> |
| </div> |
| <div class="section" id="command-line"> |
| <h3><a class="toc-backref" href="#id10">Command-Line</a><a class="headerlink" href="#command-line" title="Permalink to this headline">¶</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> <code class="docutils literal notranslate"><span class="pre">-E</span></code> now supports <code class="docutils literal notranslate"><span class="pre">true</span></code> and <code class="docutils literal notranslate"><span class="pre">false</span></code> commands, |
| which do nothing while returning exit codes of 0 and 1, respectively.</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 a <code class="docutils literal notranslate"><span class="pre">--trace-redirect=<file></span></code> command line |
| option that can be used to redirect <code class="docutils literal notranslate"><span class="pre">--trace</span></code> output to a file instead |
| of <code class="docutils literal notranslate"><span class="pre">stderr</span></code>.</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> <code class="docutils literal notranslate"><span class="pre">--loglevel</span></code> command line option has been |
| renamed to <code class="docutils literal notranslate"><span class="pre">--log-level</span></code> to make it consistent with the naming of other |
| command line options. The <code class="docutils literal notranslate"><span class="pre">--loglevel</span></code> option is still supported to |
| preserve backward compatibility.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="commands"> |
| <h3><a class="toc-backref" href="#id11">Commands</a><a class="headerlink" href="#commands" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>The <span class="target" id="index-0-command:add_test"></span><a class="reference internal" href="../command/add_test.html#command:add_test" title="add_test"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">add_test()</span></code></a> command learned the option <code class="docutils literal notranslate"><span class="pre">COMMAND_EXPAND_LISTS</span></code> |
| which causes lists in the <code class="docutils literal notranslate"><span class="pre">COMMAND</span></code> argument to be expanded, including |
| lists created by generator expressions.</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()</span></code></a> command learned a new sub-command, |
| <code class="docutils literal notranslate"><span class="pre">GET_RUNTIME_DEPENDENCIES</span></code>, which allows you to recursively get the list of |
| libraries linked by an executable or library. This sub-command is intended as |
| a replacement for <span class="target" id="index-0-module:GetPrerequisites"></span><a class="reference internal" href="../module/GetPrerequisites.html#module:GetPrerequisites" title="GetPrerequisites"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">GetPrerequisites</span></code></a>.</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_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_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_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: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 have learned to |
| check the following variables to control the default behavior for groups of |
| search locations:</p> |
| <ul> |
| <li><p><span class="target" id="index-0-variable:CMAKE_FIND_USE_PACKAGE_ROOT_PATH"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.html#variable:CMAKE_FIND_USE_PACKAGE_ROOT_PATH" title="CMAKE_FIND_USE_PACKAGE_ROOT_PATH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_PACKAGE_ROOT_PATH</span></code></a> - Controls the default |
| behavior of searching the <span class="target" id="index-0-variable:<PackageName>_ROOT"></span><a class="reference internal" href="../variable/PackageName_ROOT.html#variable:<PackageName>_ROOT" title="<PackageName>_ROOT"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre"><PackageName>_ROOT</span></code></a> variables.</p></li> |
| <li><p><span class="target" id="index-0-variable:CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.html#variable:CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH" title="CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH</span></code></a> - Controls the default |
| behavior of searching the CMake-specific environment variables.</p></li> |
| <li><p><span class="target" id="index-0-variable:CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.html#variable:CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH" title="CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH</span></code></a> - Controls the default |
| behavior of searching the standard system environment variables.</p></li> |
| <li><p><span class="target" id="index-0-variable:CMAKE_FIND_USE_CMAKE_PATH"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_CMAKE_PATH.html#variable:CMAKE_FIND_USE_CMAKE_PATH" title="CMAKE_FIND_USE_CMAKE_PATH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_CMAKE_PATH</span></code></a> - Controls the default behavior of |
| searching the CMake-specific cache variables.</p></li> |
| <li><p><span class="target" id="index-0-variable:CMAKE_FIND_USE_CMAKE_SYSTEM_PATH"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.html#variable:CMAKE_FIND_USE_CMAKE_SYSTEM_PATH" title="CMAKE_FIND_USE_CMAKE_SYSTEM_PATH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_CMAKE_SYSTEM_PATH</span></code></a> - Controls the default |
| behavior of searching the platform-specific CMake variables.</p></li> |
| </ul> |
| </li> |
| <li><p>The <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> command has learned to check the |
| <span class="target" id="index-0-variable:CMAKE_FIND_USE_PACKAGE_REGISTRY"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.html#variable:CMAKE_FIND_USE_PACKAGE_REGISTRY" title="CMAKE_FIND_USE_PACKAGE_REGISTRY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_PACKAGE_REGISTRY</span></code></a> variable to control the default |
| behavior of searching the CMake user package registry and to check the |
| <span class="target" id="index-0-variable:CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.html#variable:CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY" title="CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY</span></code></a> variable to control |
| the default behavior of searching the CMake system package registry.</p></li> |
| <li><p>The <span class="target" id="index-0-command:message"></span><a class="reference internal" href="../command/message.html#command:message" title="message"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">message()</span></code></a> command learned indentation control with the new |
| <span class="target" id="index-0-variable:CMAKE_MESSAGE_INDENT"></span><a class="reference internal" href="../variable/CMAKE_MESSAGE_INDENT.html#variable:CMAKE_MESSAGE_INDENT" title="CMAKE_MESSAGE_INDENT"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_MESSAGE_INDENT</span></code></a> variable.</p></li> |
| <li><p>The <span class="target" id="index-0-command:target_precompile_headers"></span><a class="reference internal" href="../command/target_precompile_headers.html#command:target_precompile_headers" title="target_precompile_headers"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">target_precompile_headers()</span></code></a> command was added to specify |
| a list of headers to precompile for faster compilation times.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="variables"> |
| <h3><a class="toc-backref" href="#id12">Variables</a><a class="headerlink" href="#variables" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>The <span class="target" id="index-0-variable:CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS"></span><a class="reference internal" href="../variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.html#variable:CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS" title="CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</span></code></a> variable has been |
| introduced to optionally initialize the |
| <span class="target" id="index-0-prop_tgt:CUDA_RESOLVE_DEVICE_SYMBOLS"></span><a class="reference internal" href="../prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.html#prop_tgt:CUDA_RESOLVE_DEVICE_SYMBOLS" title="CUDA_RESOLVE_DEVICE_SYMBOLS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">CUDA_RESOLVE_DEVICE_SYMBOLS</span></code></a> target property.</p></li> |
| <li><p>The <span class="target" id="index-0-variable:CMAKE_ECLIPSE_RESOURCE_ENCODING"></span><a class="reference internal" href="../variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.html#variable:CMAKE_ECLIPSE_RESOURCE_ENCODING" title="CMAKE_ECLIPSE_RESOURCE_ENCODING"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_ECLIPSE_RESOURCE_ENCODING</span></code></a> variable was added to |
| specify the resource encoding for the the <span class="target" id="index-0-generator:Eclipse CDT4"></span><a class="reference internal" href="../generator/Eclipse%20CDT4.html#generator:Eclipse CDT4" title="Eclipse CDT4"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">Eclipse</span> <span class="pre">CDT4</span></code></a> extra |
| generator.</p></li> |
| <li><p>The <span class="target" id="index-0-variable:CMAKE_UNITY_BUILD"></span><a class="reference internal" href="../variable/CMAKE_UNITY_BUILD.html#variable:CMAKE_UNITY_BUILD" title="CMAKE_UNITY_BUILD"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_UNITY_BUILD</span></code></a> variable was added to initialize the |
| <span class="target" id="index-0-prop_tgt:UNITY_BUILD"></span><a class="reference internal" href="../prop_tgt/UNITY_BUILD.html#prop_tgt:UNITY_BUILD" title="UNITY_BUILD"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">UNITY_BUILD</span></code></a> target property to tell generators to batch |
| include source files for faster compilation times.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="properties"> |
| <h3><a class="toc-backref" href="#id13">Properties</a><a class="headerlink" href="#properties" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>The <span class="target" id="index-0-prop_tgt:BUILD_RPATH"></span><a class="reference internal" href="../prop_tgt/BUILD_RPATH.html#prop_tgt:BUILD_RPATH" title="BUILD_RPATH"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">BUILD_RPATH</span></code></a> and <span class="target" id="index-0-prop_tgt:INSTALL_RPATH"></span><a class="reference internal" href="../prop_tgt/INSTALL_RPATH.html#prop_tgt:INSTALL_RPATH" title="INSTALL_RPATH"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INSTALL_RPATH</span></code></a> target properties |
| now support <span class="target" id="index-0-manual:cmake-generator-expressions(7)"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#manual:cmake-generator-expressions(7)" title="cmake-generator-expressions(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">generator</span> <span class="pre">expressions</span></code></a>.</p></li> |
| <li><p>The <span class="target" id="index-0-prop_tgt:INSTALL_REMOVE_ENVIRONMENT_RPATH"></span><a class="reference internal" href="../prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.html#prop_tgt:INSTALL_REMOVE_ENVIRONMENT_RPATH" title="INSTALL_REMOVE_ENVIRONMENT_RPATH"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INSTALL_REMOVE_ENVIRONMENT_RPATH</span></code></a> target property was |
| added to remove compiler-defined <code class="docutils literal notranslate"><span class="pre">RPATH</span></code> entries from a target. |
| This property is initialized by the |
| <span class="target" id="index-0-variable:CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH"></span><a class="reference internal" href="../variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.html#variable:CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH" title="CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH</span></code></a> variable.</p></li> |
| <li><p>The <span class="target" id="index-0-prop_tgt:PRECOMPILE_HEADERS"></span><a class="reference internal" href="../prop_tgt/PRECOMPILE_HEADERS.html#prop_tgt:PRECOMPILE_HEADERS" title="PRECOMPILE_HEADERS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">PRECOMPILE_HEADERS</span></code></a> target property was added to specify |
| a list of headers to precompile for faster compilation times. |
| Set it using the <span class="target" id="index-1-command:target_precompile_headers"></span><a class="reference internal" href="../command/target_precompile_headers.html#command:target_precompile_headers" title="target_precompile_headers"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">target_precompile_headers()</span></code></a> command.</p></li> |
| <li><p>The <span class="target" id="index-1-prop_tgt:UNITY_BUILD"></span><a class="reference internal" href="../prop_tgt/UNITY_BUILD.html#prop_tgt:UNITY_BUILD" title="UNITY_BUILD"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">UNITY_BUILD</span></code></a> target property was added to tell |
| generators to batch include source files for faster compilation |
| times.</p></li> |
| <li><p>The <span class="target" id="index-0-prop_tgt:VS_CONFIGURATION_TYPE"></span><a class="reference internal" href="../prop_tgt/VS_CONFIGURATION_TYPE.html#prop_tgt:VS_CONFIGURATION_TYPE" title="VS_CONFIGURATION_TYPE"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VS_CONFIGURATION_TYPE</span></code></a> target property now supports |
| <span class="target" id="index-1-manual:cmake-generator-expressions(7)"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#manual:cmake-generator-expressions(7)" title="cmake-generator-expressions(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">generator</span> <span class="pre">expressions</span></code></a>.</p></li> |
| <li><p>The <span class="target" id="index-0-prop_tgt:VS_DPI_AWARE"></span><a class="reference internal" href="../prop_tgt/VS_DPI_AWARE.html#prop_tgt:VS_DPI_AWARE" title="VS_DPI_AWARE"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VS_DPI_AWARE</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> to set the <code class="docutils literal notranslate"><span class="pre">EnableDpiAwareness</span></code> |
| property in <code class="docutils literal notranslate"><span class="pre">.vcxproj</span></code> files.</p></li> |
| <li><p>The <span class="target" id="index-0-prop_tgt:XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING"></span><a class="reference internal" href="../prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.html#prop_tgt:XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING" title="XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</span></code></a> target property was |
| 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 set the value of the |
| <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">debugging</span> <span class="pre">when</span> <span class="pre">using</span> <span class="pre">document</span> <span class="pre">Versions</span> <span class="pre">Browser</span></code> schema option.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="modules"> |
| <h3><a class="toc-backref" href="#id14">Modules</a><a class="headerlink" href="#modules" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>The <span class="target" id="index-0-module:FindDoxygen"></span><a class="reference internal" href="../module/FindDoxygen.html#module:FindDoxygen" title="FindDoxygen"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindDoxygen</span></code></a> module <span class="target" id="index-0-command:doxygen_add_docs"></span><a class="reference internal" href="../module/FindDoxygen.html#command:doxygen_add_docs" title="doxygen_add_docs"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">doxygen_add_docs()</span></code></a> command |
| gained a new <code class="docutils literal notranslate"><span class="pre">USE_STAMP_FILE</span></code> option. When this option present, |
| the custom target created by the command will only re-run Doxygen if |
| any of the source files have changed since the last successful run.</p></li> |
| <li><p>The <span class="target" id="index-0-module:FindGnuTLS"></span><a class="reference internal" href="../module/FindGnuTLS.html#module:FindGnuTLS" title="FindGnuTLS"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindGnuTLS</span></code></a> module now provides an imported target.</p></li> |
| <li><p>The <span class="target" id="index-0-module:FindPackageHandleStandardArgs"></span><a class="reference internal" href="../module/FindPackageHandleStandardArgs.html#module:FindPackageHandleStandardArgs" title="FindPackageHandleStandardArgs"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPackageHandleStandardArgs</span></code></a> module |
| <span class="target" id="index-0-command:find_package_handle_standard_args"></span><a class="reference internal" href="../module/FindPackageHandleStandardArgs.html#command:find_package_handle_standard_args" title="find_package_handle_standard_args"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_package_handle_standard_args()</span></code></a> command gained |
| a new <code class="docutils literal notranslate"><span class="pre">REASON_FAILURE_MESSAGE</span></code> option to specify a message |
| giving the reason for the failure.</p></li> |
| <li><p>The <span class="target" id="index-0-module:FindPkgConfig"></span><a class="reference internal" href="../module/FindPkgConfig.html#module:FindPkgConfig" title="FindPkgConfig"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPkgConfig</span></code></a> module <span class="target" id="index-0-command:pkg_search_module"></span><a class="reference internal" href="../module/FindPkgConfig.html#command:pkg_search_module" title="pkg_search_module"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">pkg_search_module()</span></code></a> macro |
| now defines a <code class="docutils literal notranslate"><span class="pre"><prefix>_MODULE_NAME</span></code> result variable containing the |
| first matching module name.</p></li> |
| <li><p>The <span class="target" id="index-0-module:FindPython3"></span><a class="reference internal" href="../module/FindPython3.html#module:FindPython3" title="FindPython3"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython3</span></code></a> and <span class="target" id="index-0-module:FindPython"></span><a class="reference internal" href="../module/FindPython.html#module:FindPython" title="FindPython"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython</span></code></a> modules gained |
| options to control which <code class="docutils literal notranslate"><span class="pre">ABIs</span></code> will be searched.</p></li> |
| <li><p>The <span class="target" id="index-1-module:FindPython3"></span><a class="reference internal" href="../module/FindPython3.html#module:FindPython3" title="FindPython3"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython3</span></code></a>, <span class="target" id="index-0-module:FindPython2"></span><a class="reference internal" href="../module/FindPython2.html#module:FindPython2" title="FindPython2"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython2</span></code></a>, and <span class="target" id="index-1-module:FindPython"></span><a class="reference internal" href="../module/FindPython.html#module:FindPython" title="FindPython"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython</span></code></a> |
| modules now support direct specification of artifacts via cache entries.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="autogen"> |
| <h3><a class="toc-backref" href="#id15">Autogen</a><a class="headerlink" href="#autogen" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>When using <span class="target" id="index-0-prop_tgt:AUTOMOC"></span><a class="reference internal" href="../prop_tgt/AUTOMOC.html#prop_tgt:AUTOMOC" title="AUTOMOC"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">AUTOMOC</span></code></a>, the new <span class="target" id="index-0-variable:CMAKE_AUTOMOC_PATH_PREFIX"></span><a class="reference internal" href="../variable/CMAKE_AUTOMOC_PATH_PREFIX.html#variable:CMAKE_AUTOMOC_PATH_PREFIX" title="CMAKE_AUTOMOC_PATH_PREFIX"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_AUTOMOC_PATH_PREFIX</span></code></a> |
| variable or <span class="target" id="index-0-prop_tgt:AUTOMOC_PATH_PREFIX"></span><a class="reference internal" href="../prop_tgt/AUTOMOC_PATH_PREFIX.html#prop_tgt:AUTOMOC_PATH_PREFIX" title="AUTOMOC_PATH_PREFIX"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">AUTOMOC_PATH_PREFIX</span></code></a> target property may be enabled |
| to generate the <code class="docutils literal notranslate"><span class="pre">-p</span></code> path prefix |
| option for <code class="docutils literal notranslate"><span class="pre">moc</span></code>. This ensures that <code class="docutils literal notranslate"><span class="pre">moc</span></code> output files are identical |
| on different build setups (given, that the headers compiled by <code class="docutils literal notranslate"><span class="pre">moc</span></code> are |
| in an <span class="target" id="index-0-command:target_include_directories"></span><a class="reference internal" href="../command/target_include_directories.html#command:target_include_directories" title="target_include_directories"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">include</span> <span class="pre">directory</span></code></a>). |
| Also it ensures that <code class="docutils literal notranslate"><span class="pre">moc</span></code> output files will compile correctly when the |
| source and/or build directory is a symbolic link.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="ctest"> |
| <h3><a class="toc-backref" href="#id16">CTest</a><a class="headerlink" href="#ctest" title="Permalink to this headline">¶</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> now has the ability to schedule tests based on resource |
| requirements for each test. See <a class="reference internal" href="../manual/ctest.1.html#ctest-resource-allocation"><span class="std std-ref">Resource Allocation</span></a> for |
| details.</p></li> |
| <li><p>A new test property, <span class="target" id="index-0-prop_test:SKIP_REGULAR_EXPRESSION"></span><a class="reference internal" href="../prop_test/SKIP_REGULAR_EXPRESSION.html#prop_test:SKIP_REGULAR_EXPRESSION" title="SKIP_REGULAR_EXPRESSION"><code class="xref cmake cmake-prop_test docutils literal notranslate"><span class="pre">SKIP_REGULAR_EXPRESSION</span></code></a>, has been added. |
| This property is similar to <span class="target" id="index-0-prop_test:FAIL_REGULAR_EXPRESSION"></span><a class="reference internal" href="../prop_test/FAIL_REGULAR_EXPRESSION.html#prop_test:FAIL_REGULAR_EXPRESSION" title="FAIL_REGULAR_EXPRESSION"><code class="xref cmake cmake-prop_test docutils literal notranslate"><span class="pre">FAIL_REGULAR_EXPRESSION</span></code></a> and |
| <span class="target" id="index-0-prop_test:PASS_REGULAR_EXPRESSION"></span><a class="reference internal" href="../prop_test/PASS_REGULAR_EXPRESSION.html#prop_test:PASS_REGULAR_EXPRESSION" title="PASS_REGULAR_EXPRESSION"><code class="xref cmake cmake-prop_test docutils literal notranslate"><span class="pre">PASS_REGULAR_EXPRESSION</span></code></a>, but with the same meaning as |
| <span class="target" id="index-0-prop_test:SKIP_RETURN_CODE"></span><a class="reference internal" href="../prop_test/SKIP_RETURN_CODE.html#prop_test:SKIP_RETURN_CODE" title="SKIP_RETURN_CODE"><code class="xref cmake cmake-prop_test docutils literal notranslate"><span class="pre">SKIP_RETURN_CODE</span></code></a>. This is useful, for example, in cases where |
| the user has no control over the return code of the test. For example, in |
| Catch2, the return value is the number of assertion failed, therefore it is |
| impossible to use it for <span class="target" id="index-1-prop_test:SKIP_RETURN_CODE"></span><a class="reference internal" href="../prop_test/SKIP_RETURN_CODE.html#prop_test:SKIP_RETURN_CODE" title="SKIP_RETURN_CODE"><code class="xref cmake cmake-prop_test docutils literal notranslate"><span class="pre">SKIP_RETURN_CODE</span></code></a>.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="cpack"> |
| <h3><a class="toc-backref" href="#id17">CPack</a><a class="headerlink" href="#cpack" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p><span class="target" id="index-0-manual:cpack(1)"></span><a class="reference internal" href="../manual/cpack.1.html#manual:cpack(1)" title="cpack(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cpack(1)</span></code></a> learned support for multiple configurations for <code class="docutils literal notranslate"><span class="pre">-C</span></code> |
| option.</p></li> |
| <li><p>The <span class="target" id="index-0-cpack_gen:CPack DEB Generator"></span><a class="reference internal" href="../cpack_gen/deb.html#cpack_gen:CPack DEB Generator" title="CPack DEB Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">DEB</span> <span class="pre">Generator</span></code></a> is now able to format generic text |
| (usually used as the description for multiple CPack generators) according |
| to the <a class="reference external" href="https://www.debian.org/doc/debian-policy/ch-controlfields.html#description">Debian Policy Manual</a>. See the |
| <span class="target" id="index-0-variable:CPACK_PACKAGE_DESCRIPTION_FILE"></span><a class="reference internal" href="../module/CPack.html#variable:CPACK_PACKAGE_DESCRIPTION_FILE" title="CPACK_PACKAGE_DESCRIPTION_FILE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_PACKAGE_DESCRIPTION_FILE</span></code></a> and |
| <span class="target" id="index-0-variable:CPACK_DEBIAN_<COMPONENT>_DESCRIPTION"></span><a class="reference internal" href="../cpack_gen/deb.html#variable:CPACK_DEBIAN_<COMPONENT>_DESCRIPTION" title="CPACK_DEBIAN_<COMPONENT>_DESCRIPTION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_DEBIAN_<COMPONENT>_DESCRIPTION</span></code></a> variables.</p></li> |
| <li><p>The <span class="target" id="index-0-cpack_gen:CPack Archive Generator"></span><a class="reference internal" href="../cpack_gen/archive.html#cpack_gen:CPack Archive Generator" title="CPack Archive Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">Archive</span> <span class="pre">Generator</span></code></a> learned to generate <code class="docutils literal notranslate"><span class="pre">.tar.zst</span></code> |
| packages with Zstandard compression.</p></li> |
| </ul> |
| </div> |
| </div> |
| <div class="section" id="deprecated-and-removed-features"> |
| <h2><a class="toc-backref" href="#id18">Deprecated and Removed Features</a><a class="headerlink" href="#deprecated-and-removed-features" title="Permalink to this headline">¶</a></h2> |
| <ul class="simple"> |
| <li><p>An explicit deprecation diagnostic was added for policy <code class="docutils literal notranslate"><span class="pre">CMP0067</span></code> |
| (<code class="docutils literal notranslate"><span class="pre">CMP0066</span></code> and below were already deprecated). |
| The <span class="target" id="index-0-manual:cmake-policies(7)"></span><a class="reference internal" href="../manual/cmake-policies.7.html#manual:cmake-policies(7)" title="cmake-policies(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-policies(7)</span></code></a> manual explains that the OLD behaviors |
| of all policies are deprecated and that projects should port to the |
| NEW behaviors.</p></li> |
| <li><p>The <span class="target" id="index-0-variable:CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY"></span><a class="reference internal" href="../variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.html#variable:CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" title="CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</span></code></a> variable has been |
| deprecated. Use the <span class="target" id="index-1-variable:CMAKE_FIND_USE_PACKAGE_REGISTRY"></span><a class="reference internal" href="../variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.html#variable:CMAKE_FIND_USE_PACKAGE_REGISTRY" title="CMAKE_FIND_USE_PACKAGE_REGISTRY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_FIND_USE_PACKAGE_REGISTRY</span></code></a> variable |
| instead.</p></li> |
| <li><p>The <span class="target" id="index-1-module:GetPrerequisites"></span><a class="reference internal" href="../module/GetPrerequisites.html#module:GetPrerequisites" title="GetPrerequisites"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">GetPrerequisites</span></code></a> module has been deprecated, as it has been |
| superseded by <span class="target" id="index-1-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(GET_RUNTIME_DEPENDENCIES)</span></code></a>.</p></li> |
| <li><p>The <code class="docutils literal notranslate"><span class="pre">CPACK_INSTALL_SCRIPT</span></code> variable has been deprecated in favor of the |
| new, more accurately named <span class="target" id="index-0-variable:CPACK_INSTALL_SCRIPTS"></span><a class="reference internal" href="../module/CPack.html#variable:CPACK_INSTALL_SCRIPTS" title="CPACK_INSTALL_SCRIPTS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_INSTALL_SCRIPTS</span></code></a> variable.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="other-changes"> |
| <h2><a class="toc-backref" href="#id19">Other Changes</a><a class="headerlink" href="#other-changes" title="Permalink to this headline">¶</a></h2> |
| <ul class="simple"> |
| <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> <code class="docutils literal notranslate"><span class="pre">-C</span> <span class="pre"><initial-cache></span></code> option now evaluates the |
| initial cache script with <span class="target" id="index-0-variable:CMAKE_SOURCE_DIR"></span><a class="reference internal" href="../variable/CMAKE_SOURCE_DIR.html#variable:CMAKE_SOURCE_DIR" title="CMAKE_SOURCE_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_SOURCE_DIR</span></code></a> and |
| <span class="target" id="index-0-variable:CMAKE_BINARY_DIR"></span><a class="reference internal" href="../variable/CMAKE_BINARY_DIR.html#variable:CMAKE_BINARY_DIR" title="CMAKE_BINARY_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_BINARY_DIR</span></code></a> set to the top-level source and build trees.</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> <code class="docutils literal notranslate"><span class="pre">-E</span> <span class="pre">remove_directory</span></code> command-line tool, |
| when given the path to a symlink to a directory, now removes just |
| the symlink. It no longer removes content of the linked directory.</p></li> |
| <li><p>The <span class="target" id="index-1-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> <code class="docutils literal notranslate"><span class="pre">--build-makeprogram</span></code> command-line option now |
| specifies the make program used when configuring a project with the |
| <span class="target" id="index-0-generator:Ninja"></span><a class="reference internal" href="../generator/Ninja.html#generator:Ninja" title="Ninja"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">Ninja</span></code></a> generator or the <a class="reference internal" href="../manual/cmake-generators.7.html#makefile-generators"><span class="std std-ref">Makefile Generators</span></a>.</p></li> |
| <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 |
| has been updated so that <code class="docutils literal notranslate"><span class="pre">GIT_SUBMODULES</span> <span class="pre">""</span></code> initializes no submodules. |
| See policy <span class="target" id="index-0-policy:CMP0097"></span><a class="reference internal" href="../policy/CMP0097.html#policy:CMP0097" title="CMP0097"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0097</span></code></a>.</p></li> |
| <li><p>The <span class="target" id="index-0-module:FindGTest"></span><a class="reference internal" href="../module/FindGTest.html#module:FindGTest" title="FindGTest"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindGTest</span></code></a> module has been updated to recognize |
| MSVC build trees generated by GTest 1.8.1.</p></li> |
| <li><p>The <span class="target" id="index-1-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> command no longer strips leading zeros in version |
| components. See policy <span class="target" id="index-0-policy:CMP0096"></span><a class="reference internal" href="../policy/CMP0096.html#policy:CMP0096" title="CMP0096"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0096</span></code></a>.</p></li> |
| <li><p>The Qt Compressed Help file is now named <code class="docutils literal notranslate"><span class="pre">CMake.qch</span></code>, which no longer |
| contains the release version in the file name. When CMake is upgraded |
| in-place, the name and location of this file will remain constant. |
| Tools such as IDEs, help viewers, etc. should now be able to refer to this |
| file at a fixed location that remains valid across CMake upgrades.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">RPATH</span></code> entries are properly escaped in the generated CMake scripts |
| used for installation. See policy <span class="target" id="index-0-policy:CMP0095"></span><a class="reference internal" href="../policy/CMP0095.html#policy:CMP0095" title="CMP0095"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0095</span></code></a>.</p></li> |
| <li><p>When using <span class="target" id="index-0-variable:CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS"></span><a class="reference internal" href="../variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.html#variable:CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS" title="CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS</span></code></a> on Windows the |
| auto-generated exports are now updated only when the object files |
| providing the symbols are updated.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="updates"> |
| <h2><a class="toc-backref" href="#id20">Updates</a><a class="headerlink" href="#updates" title="Permalink to this headline">¶</a></h2> |
| <p>Changes made since CMake 3.16.0 include the following.</p> |
| <div class="section" id="id1"> |
| <h3><a class="toc-backref" href="#id21">3.16.2</a><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>CMake 3.16.0 and 3.16.1 processed <code class="docutils literal notranslate"><span class="pre">.hh</span></code> files with <span class="target" id="index-1-prop_tgt:AUTOMOC"></span><a class="reference internal" href="../prop_tgt/AUTOMOC.html#prop_tgt:AUTOMOC" title="AUTOMOC"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">AUTOMOC</span></code></a>. |
| This was a behavior change from CMake 3.15 and below that can break |
| existing projects, so it has been reverted as of 3.16.2.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="id2"> |
| <h3><a class="toc-backref" href="#id22">3.16.5</a><a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3> |
| <ul> |
| <li><p>The <span class="target" id="index-2-module:FindPython"></span><a class="reference internal" href="../module/FindPython.html#module:FindPython" title="FindPython"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython</span></code></a>, <span class="target" id="index-1-module:FindPython2"></span><a class="reference internal" href="../module/FindPython2.html#module:FindPython2" title="FindPython2"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython2</span></code></a>, and <span class="target" id="index-2-module:FindPython3"></span><a class="reference internal" href="../module/FindPython3.html#module:FindPython3" title="FindPython3"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython3</span></code></a> |
| modules no longer create cache entries for <code class="docutils literal notranslate"><span class="pre">Python{,2,3}_LIBRARY_RELEASE</span></code> |
| and <code class="docutils literal notranslate"><span class="pre">Python{,2,3}_LIBRARY_DEBUG</span></code>. Those values are always computed from |
| other results and so should not be cached. The entries were created by |
| CMake 3.16.0 through 3.16.4 but were always <code class="docutils literal notranslate"><span class="pre">FORCE</span></code>-set and could not |
| be meaningfully edited by users.</p> |
| <p>Additionally, the modules no longer expose their internal <code class="docutils literal notranslate"><span class="pre">_Python*</span></code> |
| cache entries publicly. CMake 3.16.0 through 3.16.4 accidentally |
| made them visible as advanced cache entries.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="section" id="id3"> |
| <h3><a class="toc-backref" href="#id23">3.16.7</a><a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>Selection of the Objective C or C++ compiler now considers the |
| <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> or <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> environment variable if the |
| <span class="target" id="index-0-envvar:OBJC"></span><a class="reference internal" href="../envvar/OBJC.html#envvar:OBJC" title="OBJC"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">OBJC</span></code></a> or <span class="target" id="index-0-envvar:OBJCXX"></span><a class="reference internal" href="../envvar/OBJCXX.html#envvar:OBJCXX" title="OBJCXX"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">OBJCXX</span></code></a> environment variable is not set.</p></li> |
| <li><p>The <span class="target" id="index-1-module:FindPkgConfig"></span><a class="reference internal" href="../module/FindPkgConfig.html#module:FindPkgConfig" title="FindPkgConfig"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPkgConfig</span></code></a> module now extracts include directories |
| prefixed with <code class="docutils literal notranslate"><span class="pre">-isystem</span></code> into the <code class="docutils literal notranslate"><span class="pre">*_INCLUDE_DIRS</span></code> variables and |
| <span class="target" id="index-0-prop_tgt:INTERFACE_INCLUDE_DIRECTORIES"></span><a class="reference internal" href="../prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.html#prop_tgt:INTERFACE_INCLUDE_DIRECTORIES" title="INTERFACE_INCLUDE_DIRECTORIES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_INCLUDE_DIRECTORIES</span></code></a> target properties. |
| Previously they would be places in <code class="docutils literal notranslate"><span class="pre">*_CFLAGS_OTHER</span></code> variables and |
| <span class="target" id="index-0-prop_tgt:INTERFACE_COMPILE_OPTIONS"></span><a class="reference internal" href="../prop_tgt/INTERFACE_COMPILE_OPTIONS.html#prop_tgt:INTERFACE_COMPILE_OPTIONS" title="INTERFACE_COMPILE_OPTIONS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_COMPILE_OPTIONS</span></code></a> target properties.</p></li> |
| </ul> |
| </div> |
| <div class="section" id="id4"> |
| <h3><a class="toc-backref" href="#id24">3.16.9</a><a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li><p>The default value of <span class="target" id="index-1-variable:CMAKE_AUTOMOC_PATH_PREFIX"></span><a class="reference internal" href="../variable/CMAKE_AUTOMOC_PATH_PREFIX.html#variable:CMAKE_AUTOMOC_PATH_PREFIX" title="CMAKE_AUTOMOC_PATH_PREFIX"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_AUTOMOC_PATH_PREFIX</span></code></a> was changed to |
| <code class="docutils literal notranslate"><span class="pre">OFF</span></code> because this feature can break existing projects that have |
| identically named header files in different include directories. |
| This restores compatibility with behavior of CMake 3.15 and below.</p></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="clearer"></div> |
| </div> |
| </div> |
| </div> |
| <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> |
| <div class="sphinxsidebarwrapper"> |
| <h3><a href="../index.html">Table of Contents</a></h3> |
| <ul> |
| <li><a class="reference internal" href="#">CMake 3.16 Release Notes</a><ul> |
| <li><a class="reference internal" href="#new-features">New Features</a><ul> |
| <li><a class="reference internal" href="#languages">Languages</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="#command-line">Command-Line</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="#autogen">Autogen</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.16.2</a></li> |
| <li><a class="reference internal" href="#id2">3.16.5</a></li> |
| <li><a class="reference internal" href="#id3">3.16.7</a></li> |
| <li><a class="reference internal" href="#id4">3.16.9</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>Previous topic</h4> |
| <p class="topless"><a href="3.17.html" |
| title="previous chapter">CMake 3.17 Release Notes</a></p> |
| <h4>Next topic</h4> |
| <p class="topless"><a href="3.15.html" |
| title="next chapter">CMake 3.15 Release Notes</a></p> |
| <div role="note" aria-label="source link"> |
| <h3>This Page</h3> |
| <ul class="this-page-menu"> |
| <li><a href="../_sources/release/3.16.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>$('#searchbox').show(0);</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.15.html" title="CMake 3.15 Release Notes" |
| >next</a> |</li> |
| <li class="right" > |
| <a href="3.17.html" title="CMake 3.17 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.23.1 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.16 Release Notes</a></li> |
| </ul> |
| </div> |
| |
| <div class="footer" role="contentinfo"> |
| © Copyright 2000-2022 Kitware, Inc. and Contributors. |
| Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.1.2. |
| </div> |
| </body> |
| </html> |