CMake 3.26 Release Notes¶
Changes made since CMake 3.25 include the following.
New Features¶
Languages¶
The
ASM_MARMASMlanguage was added to support the Microsoft ARM assembler language.
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, andnow provides an imported target for
nvrtc_static, if found.
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.