CMake 3.26 Release Notes¶
Contents
Changes made since CMake 3.25 include the following.
New Features¶
Command-Line¶
- The
cmake -E copycommand-line tool now supports a-targument. - The
cmake -E copy_directory_if_differentcommand-line tool was added.
Configure Log¶
- CMake now writes a YAML log of configure-time checks to
CMakeFiles/CMakeConfigureLog.yamlunder the top of the build tree. See thecmake-configure-log(7)manual.
File-Based API¶
- The
cmake-file-api(7)"codemodel" version 2versionfield has been updated to 2.5. - The
cmake-file-api(7)"codemodel" version 2 "target" object gained a newfileSetsfield and associatedfileSetIndexfield tosourcesobjects. - The
cmake-file-api(7)gained a new "configureLog" object kind that enables stable access to thecmake-configure-log(7).
Commands¶
- The
add_custom_command()andadd_custom_target()commands now supportgenerator expressionsin theirCOMMENToption. - The
message()command gained aCONFIGURE_LOGmode to record an entry in thecmake-configure-log(7). - The
string(TIMESTAMP)andfile(TIMESTAMP)commands now support the%zand%Zspecifiers for the time zone. - The
try_compile()andtry_run()commands gained aLOG_DESCRIPTIONoption specifying text to be recorded in thecmake-configure-log(7). - The
try_compile()andtry_run()commands gained aNO_LOGoption to skip recording acmake-configure-log(7)entry.
Variables¶
- The
CMAKE_<LANG>_COMPILER_FRONTEND_VARIANTvariable is now set forGNU,MSVC, andAppleClangcompilers that have only one frontend variant. - A
CMAKE_VS_VERSION_BUILD_NUMBERvariable is now set by Visual Studio Generators for VS 2017 and above to report the four-component Visual Studio version number.
Properties¶
- The
<LANG>_CLANG_TIDY_EXPORT_FIXES_DIRtarget property was added to allow theclang-tidytool to export its suggested fixes to a set of.yamlfiles. A newCMAKE_<LANG>_CLANG_TIDY_EXPORT_FIXES_DIRvariable was created to initialize this property. - The
XCODE_EMBED_EXTENSIONKIT_EXTENSIONStarget property was added to tell theXcodegenerator to embed ExtensionKit-based extensions such as extensions using the Background Assets framework. Aspects of the embedding can be customized with:
Modules¶
- The
ExternalProjectmodule'sExternalProject_Add()command gained anINSTALL_BYPRODUCTSoption to specify files generated by theinstallstep. - The
FindCUDAToolkitmodule:- gained support for the
sbsa-linuxcross compilation target, and - now provides an imported target for
nvrtc_static, if found.
- gained support for the
- The
FindImageMagickmodule now provides imported targets. - The
FindPython3andFindPythonmodules gained support for the Stable Application Binary Interface. - The
UseSWIGmodule gained support for theperl5language.
Generator Expressions¶
- The
$<BUILD_LOCAL_INTERFACE:...>generator expression was added to prevent usage requirements from being exported to dependent projects.
CTest¶
- The
CTEST_NO_TESTS_ACTIONenvironment variable was added to provide a default value for the--no-tests=<action>command line argument ofctest(1).
Deprecated and Removed Features¶
- The
CMakeFiles/CMakeOutput.logandCMakeFiles/CMakeError.logfiles are no longer populated by CMake's built-in modules.cmake(1)no longer suggests looking at them after aCMake Erroroccurs. Information previously logged to those files is instead logged to thecmake-configure-log(7). - On CYGWIN, the undocumented
CMAKE_LEGACY_CYGWIN_WIN32mode for compatibility with CMake versions older than 2.8.4 has been removed.
Other Changes¶
- Language Standard Flags, such as
-std=c++11, when generated due totarget_compile_features()orCMAKE_<LANG>_STANDARD, are now placed before flags added bytarget_compile_options(), rather than after them. - For all
COMPILE_DEFINITIONSproperties, any leading-Don an item is removed whether or not it was specified by a generator expression. - The
compile_commands.jsondatabase enabled byCMAKE_EXPORT_COMPILE_COMMANDSnow provides theoutputfield in the compile commands objects. This allows multi-config generators, such as theNinja Multi-Configgenerator, to provide the compile commands for all configurations. - The
USE_FOLDERSglobal property is treated asONby default. See policyCMP0143. - The top-level
project()call will now emit an author warning if the documented command order in relation tocmake_minimum_required()is not respected. - The
cmake --traceoption now followstry_compile()andtry_run()invocations.
Updates¶
Changes made since CMake 3.26.0 include the following.
3.26.1, 3.26.2, 3.26.3, 3.26.4, 3.26.5¶
- These versions made no changes to documented features or interfaces. Some implementation updates were made to support ecosystem changes and/or fix regressions.