<div dir="ltr">I am proud to announce the fourth CMake 3.27 release candidate.<br>  <a href="https://cmake.org/download/" target="_blank">https://cmake.org/download/</a><br><br>Documentation is available at:<br>  <a href="https://cmake.org/cmake/help/v3.27" target="_blank">https://cmake.org/cmake/help/v3.27</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v3.27/release/3.27.html" target="_blank">https://cmake.org/cmake/help/v3.27/release/3.27.html<br></a><br><br>Some of the more significant changes in CMake 3.27 are:<br><br>* "cmake(1)" now supports interactive debugging of the CMake language.<br>  See the "--debugger" option.<br><br>* The Visual Studio Generators for VS 2015 and above learned to select<br>  the Windows SDK version explicitly using a "version=" field in the<br>  "CMAKE_GENERATOR_PLATFORM" variable. See Visual Studio Platform<br>  Selection.<br><br>* Apple text-based stubs (i.e. ".tbd" files) may now be created for<br>  shared libraries on macOS.  See the "ENABLE_EXPORTS" property.<br><br>* The "SKIP_LINTING" source file property was added to suppress<br>  target-wide code checks on specific sources.<br><br>* The "COMPILE_ONLY" generator expression was added to specify<br>  compilation usage requirements without any linking requirements.<br><br>* Compatibility with versions of CMake older than 3.5 is now<br>  deprecated and will be removed from a future version.  Calls to<br>  "cmake_minimum_required()" or "cmake_policy()" that set the policy<br>  version to an older value now issue a deprecation diagnostic.<br><br>* The "FindCUDA" module, which has been deprecated since CMake 3.10,<br>  has been removed by policy "CMP0146".  Port projects to CMake's<br>  first-class "CUDA" language support.<br><br>* The "FindPythonInterp" and "FindPythonLibs" modules, which have been<br>  deprecated since CMake 3.12, have been removed by policy "CMP0148".<br>  Port projects to "FindPython3", "FindPython2", or "FindPython".<br><br>* "cmake --build $dir --verbose" will now print the working directory<br>  and command line used to perform the build.<br><br><br>CMake 3.27 Release Notes<br>************************<br><br>Changes made since CMake 3.26 include the following.<br><br><br>New Features<br>============<br><br><br>Debugger<br>--------<br><br>* "cmake(1)" now supports interactive debugging of the CMake language.<br>  See the "--debugger" option.<br><br><br>Presets<br>-------<br><br>* "cmake-presets(7)" files now support schema version "7".<br><br>* "cmake-presets(7)" now supports "$penv{}" macro expansion in<br>  "include" fields.<br><br><br>Generators<br>----------<br><br>* The Makefile and Ninja generators now support using the "--<br>  dependency-file" linker flag, added by GNU Binutils 2.35 and LLVM's<br>  LLD 12.0.0, so that files read by the linker will cause a relink if<br>  they change (typically modified timestamps). See the<br>  "CMAKE_LINK_DEPENDS_USE_LINKER" variable.<br><br>* The Visual Studio Generators for VS 2015 and above learned to select<br>  the Windows SDK version explicitly using a "version=" field in the<br>  "CMAKE_GENERATOR_PLATFORM" variable. See Visual Studio Platform<br>  Selection.<br><br><br>Languages<br>---------<br><br>* The "CXX" language now treats source file extensions ".ccm",<br>  ".cxxm", and ".c++m" as C++.<br><br><br>File-Based API<br>--------------<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "version" field has<br>  been updated to 2.6.<br><br>* The "cmake-file-api(7)" "codemodel" version 2 "target" object gained<br>  a new "frameworks" field in the "compileGroups" objects.<br><br><br>Platforms<br>---------<br><br>* Apple text-based stubs (i.e. ".tbd" files) may now be created for<br>  shared libraries on macOS.  See the "ENABLE_EXPORTS" property.<br><br><br>Commands<br>--------<br><br>* The "add_custom_command()" command gained a new<br>  "DEPENDS_EXPLICIT_ONLY" option to tell the Ninja Generators not to<br>  add any dependencies implied by the target to which it is attached.<br>  The "CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY" variable was<br>  added to enable "DEPENDS_EXPLICIT_ONLY" on all calls to<br>  "add_custom_command()" command.<br><br>* The "cmake_file_api()" command was added for projects to add "CMake<br>  file API" queries for the current CMake run.<br><br>* The "find_package()" command now searches prefixes specified by<br>  upper-case "<PACKAGENAME>_ROOT" CMake variables and upper-case<br>  "<PACKAGENAME>_ROOT" environment variables. See policy "CMP0144".<br><br>* The "install(CODE)" and "install(SCRIPT)" commands now support the<br>  "$<INSTALL_PREFIX>" generator expression.<br><br><br>Variables<br>---------<br><br>* The "CMAKE_DLL_NAME_WITH_SOVERSION" variable and associated<br>  "DLL_NAME_WITH_SOVERSION" target property were added to optionally<br>  append the "SOVERSION" to the filename of the ".dll" part of a<br>  shared library on Windows.<br><br>* Variables "CMAKE_VS_DEBUGGER_COMMAND",<br>  "CMAKE_VS_DEBUGGER_COMMAND_ARGUMENTS",<br>  "CMAKE_VS_DEBUGGER_ENVIRONMENT", and<br>  "CMAKE_VS_DEBUGGER_WORKING_DIRECTORY" were added to initialize<br>  corresponding target properties.<br><br>* The "CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION" variable was<br>  added to initialize the "VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION"<br>  target property on all targets when they are created.<br><br><br>Properties<br>----------<br><br>* A "CUDA_CUBIN_COMPILATION" target property was added to Object<br>  Libraries to support compiling to ".cubin" files instead of host<br>  object files. Currently only supported with NVIDIA.<br><br>* A "CUDA_FATBIN_COMPILATION" target property was added to Object<br>  Libraries to support compiling to ".fatbin" files instead of host<br>  object files. Currently only supported with NVIDIA.<br><br>* A "CUDA_OPTIX_COMPILATION" target property was added to Object<br>  Libraries to support compiling to ".optixir" files instead of host<br>  object files. Currently only supported with NVIDIA.<br><br>* The "<LANG>_CLANG_TIDY", "<LANG>_CPPCHECK", "<LANG>_CPPLINT", and<br>  "<LANG>_INCLUDE_WHAT_YOU_USE", target properties now support<br>  "generator expressions".<br><br>* The "<LANG>_LINKER_LAUNCHER" target property now supports "generator<br>  expressions".<br><br>* The "SKIP_LINTING" source file property was added to suppress<br>  target-wide code checks on specific sources.<br><br><br>Modules<br>-------<br><br>* The "FindCUDAToolkit" module now provides an imported target for<br>  "cudla", and imported targets for CUPTI's "nvperf" and "pcsampling"<br>  components.<br><br>* The "FindDoxygen" module's "doxygen_add_docs()" command gained a<br>  "CONFIG_FILE" option to specify a custom doxygen configuration file.<br><br>* The "FindOpenGL" module gained support for components "GLES2" and<br>  "GLES3".<br><br>* The "FindwxWidgets" module now provides an imported target.<br><br><br>Generator Expressions<br>---------------------<br><br>* The "COMPILE_ONLY" generator expression was added to specify<br>  compilation usage requirements without any linking requirements.<br><br>* "$<LIST:...>" generator expressions were added for query,<br>  transformation, and ordering operations on lists.<br><br>* "$<PATH:...>" generator expressions for decomposition and<br>  transformation operations learned to process lists of paths element-<br>  wise.<br><br>* The "TARGET_RUNTIME_DLL_DIRS" generator expression was added. It<br>  expands to a list of the directories containing DLLs in<br>  "TARGET_RUNTIME_DLLS".<br><br>Autogen<br>-------<br><br>* The "CMAKE_AUTOMOC_EXECUTABLE", "CMAKE_AUTORCC_EXECUTABLE", and<br>  "CMAKE_AUTOUIC_EXECUTABLE" variables were added to initialize the<br>  corresponding target properties as targets are created.<br><br>* The "AUTOGEN_USE_SYSTEM_INCLUDE" target property and corresponding<br>  "CMAKE_AUTOGEN_USE_SYSTEM_INCLUDE" variable were added to explicitly<br>  control whether autogen headers are considered system headers.<br><br>* The "INTERFACE_AUTOMOC_MACRO_NAMES" target property was added to<br>  specify macro names for "moc" as a transitive usage requirement.<br><br><br>CTest<br>-----<br><br>* The "TIMEOUT_SIGNAL_NAME" and "TIMEOUT_SIGNAL_GRACE_PERIOD" test<br>  properties were added to specify a POSIX signal to send to a test<br>  process when its timeout is reached.<br><br><br>CPack<br>-----<br><br>* The "CPack Inno Setup Generator" was added to package using Inno<br>  Setup.<br><br><br>Deprecated and Removed Features<br>===============================<br><br>* Compatibility with versions of CMake older than 3.5 is now<br>  deprecated and will be removed from a future version.  Calls to<br>  "cmake_minimum_required()" or "cmake_policy()" that set the policy<br>  version to an older value now issue a deprecation diagnostic.<br><br>* The Extra Generators have been deprecated.  IDEs may use the "cmake-<br>  file-api(7)" to view CMake-generated project build trees.<br><br>* The "FindCUDA" module, which has been deprecated since CMake 3.10,<br>  has been removed by policy "CMP0146".  Port projects to CMake's<br>  first-class "CUDA" language support.<br><br>* The "FindPythonInterp" and "FindPythonLibs" modules, which have been<br>  deprecated since CMake 3.12, have been removed by policy "CMP0148".<br>  Port projects to "FindPython3", "FindPython2", or "FindPython".<br><br>* The "Dart" and "FindDart" modules have been deprecated via policy<br>  "CMP0145".  Port projects to the "CTest" module.<br><br>* The "Visual Studio 9 2008" generator is now deprecated and will be<br>  removed in a future version of CMake.<br><br><br>Other Changes<br>=============<br><br>* "cmake --build $dir --verbose" will now print the working directory<br>  and command line used to perform the build.<br><br>* The "ExternalProject" and "FetchContent" modules now resolve<br>  relative "GIT_REPOSITORY" paths as relative to the parent project's<br>  remote, not as a relative local file system path. See "CMP0150".<br><br>* The "ExternalProject" "configure" step no longer re-runs on every<br>  build when the "UPDATE_DISCONNECTED" option is enabled. It will only<br>  re-run if details of the "download", "update", or "patch" step<br>  change.<br><br>* The "ExternalProject" "update" and "patch" steps now always re-run<br>  if any of their details change, even if the "UPDATE_DISCONNECTED"<br>  option is enabled.  If using the "GIT" download method, and the<br>  "GIT_TAG" is changed to a commit that is not already known locally,<br>  an error is now issued instead of silently using the previous<br>  "GIT_TAG".<br><br>* The "FindPython", "FindPython2" and "FindPython3" modules now<br>  support the Windows ARM64 platform.<br><br>* The "file(GET_RUNTIME_DEPENDENCIES)" command now case-preserves DLL<br>  names reported on Windows.  They are still converted to lowercase<br>  for filter matching.<br><br>* The "SYSTEM" target property is now honored for Apple Frameworks.<br><br>* Visual Studio Generators, for VS 15.8 (2017) and newer, now build<br>  custom commands in parallel.  See policy "CMP0147".<br><br>----------------------------------------------------------------------------<br>Changes made since CMake 3.27.0-rc3:<br><br>Andreas Weis (1):<br>  VS: Make C++ module BMIs public by default for shared libraries<br><br>Ben McMorran (1):<br>  Debugger: Fix threads request segfault after thread exited event<br><br>Brad King (9):<br>  VS: Restore Windows SDK selection with platform in generator name<br>  Help: Restore project command docs for default languages and NONE<br>  FindCxxTest: Update link to cxxtest project page<br>  FindCxxTest: Modernize documentation formatting<br>  VS: Fix C++ modules in source files with the same name<br>  Help: Link to cmake-language(7) list docs from list() command docs<br>  FetchContent: Protect ExternalProject keywords from unknown arguments<br>  Help: add_custom_command(TARGET) does not support USES_TERMINAL<br>  CMake 3.27.0-rc4<br><br>Craig Scott (1):<br>  Help: Fix wrong command name in target_precompile_headers docs<br><br>Henry Schreiner (1):<br>  Utilities/Sphinx: Fix warning from docutils 0.18.1+<br><br>Jared Dillard (1):<br>  Utilities/Sphinx: Fix parallel documentation builds for 3.26<br><br>Marc Chevrier (1):<br>  link dependencies: deactivate the feature<br><br>Matthew Woehlke (1):<br>  Utilities/Sphinx: Fix parallel documentation builds<br><br>Robert Maynard (2):<br>  Help: Remove incorrect command from list that marks GENERATED<br>  NVHPC: Support nvfortran versions that don't support isystem<br><br>Ryan Friedman (1):<br>  Help: Clarify that you can't set properties on ALIAS targets<br></div>