<div dir="ltr">I am proud to announce the third CMake 3.19 release candidate.<br>  <a href="https://cmake.org/download/">https://cmake.org/download/</a><br><br>The first two 3.19.0 release candidates included the "cmake_path()"<br>command. This has been removed in rc3 pending further development.<br><br>Documentation is available at:<br>  <a href="https://cmake.org/cmake/help/v3.19">https://cmake.org/cmake/help/v3.19</a><br><br>Release notes appear below and are also published at<br>  <a href="https://cmake.org/cmake/help/v3.19/release/3.19.html">https://cmake.org/cmake/help/v3.19/release/3.19.html</a><br><br>Some of the more significant changes in CMake 3.19 are:<br><br>* "cmake(1)" and "cmake-gui(1)" now recognize "CMakePresets.json" and<br>  "CMakeUserPresets.json" files (see "cmake-presets(7)").<br><br>* The "Xcode" generator now uses the Xcode “new build system” when<br>  generating for Xcode 12.0 or higher. See the<br>  "CMAKE_XCODE_BUILD_SYSTEM" variable. One may use "-T buildsystem=1"<br>  to switch to the legacy build system.<br><br>* The Visual Studio Generators for VS 2015 and above gained support<br>  for the Visual Studio Tools for Android.  One may now set<br>  "CMAKE_SYSTEM_NAME" to "Android" to generate ".vcxproj" files for<br>  the Android tools.<br><br>* CMake learned to support "ISPC" as a first-class language that can<br>  be enabled via the "project()" and "enable_language()" commands.<br>  "ISPC" is currently supported by the Makefile Generators and the<br>  "Ninja" generator on Linux, macOS, and Windows using the Intel ISPC<br>  compiler.<br><br>* "CUDA" language support for Clang now supports separable compilation<br>  ("CUDA_SEPARABLE_COMPILATION")<br><br>* The "CMake GUI" now has an environment variable editor.<br><br>* The "file(GENERATE)" command gained a new "TARGET" keyword to<br>  support resolving target-dependent generator expressions.<br><br>* The "CMAKE_OPTIMIZE_DEPENDENCIES" variable was added to initialize<br>  the new "OPTIMIZE_DEPENDENCIES" target property and avoid<br>  unnecessarily building dependencies for a static library.<br><br>* The "CheckCompilerFlag" module has been added to generalize<br>  "CheckCCompilerFlag" and "CheckCXXCompilerFlag" to more languages.<br>  It also supports the "CUDA" and "ISPC" languages.<br><br>* The "CheckSourceCompiles" module has been added to generalize<br>  "CheckCSourceCompiles" and "CheckCXXSourceCompiles" to more<br>  languages. It also supports the "CUDA" and "ISPC" languages.<br><br>* The "CheckSourceRuns" module has been added to generalize<br>  "CheckCSourceRuns" and "CheckCXXSourceRuns" to more languages. It<br>  also supports the "CUDA" language.<br><br>* The "FindCUDAToolkit" module gained support for finding CUDA<br>  toolkits that do not contain "nvcc", as well as for finding<br>  scattered toolkit installations when cross-compiling.<br><br>* Interface Libraries may now have source files added via<br>  "add_library()" or "target_sources()".  Those with sources will be<br>  generated as part of the build system.<br><br>* Compatibility with versions of CMake older than 2.8.12 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><br>CMake 3.19 Release Notes<br>************************<br><br>Changes made since CMake 3.18 include the following.<br><br><br>New Features<br>============<br><br><br>Presets<br>-------<br><br>* "cmake(1)" and "cmake-gui(1)" now recognize "CMakePresets.json" and<br>  "CMakeUserPresets.json" files (see "cmake-presets(7)").<br><br><br>Generators<br>----------<br><br>* The "Xcode" generator now uses the Xcode “new build system” when<br>  generating for Xcode 12.0 or higher. See the<br>  "CMAKE_XCODE_BUILD_SYSTEM" variable. One may use "-T buildsystem=1"<br>  to switch to the legacy build system.<br><br>* The "Xcode" generator gained support for linking libraries and<br>  frameworks via the *Link Binaries With Libraries* build phase<br>  instead of always by embedding linker flags directly.  This behavior<br>  is controlled by a new "XCODE_LINK_BUILD_PHASE_MODE" target<br>  property, which is initialized by a new<br>  "CMAKE_XCODE_LINK_BUILD_PHASE_MODE" variable.<br><br>* The Visual Studio Generators for VS 2015 and above gained support<br>  for the Visual Studio Tools for Android.  One may now set<br>  "CMAKE_SYSTEM_NAME" to "Android" to generate ".vcxproj" files for<br>  the Android tools.<br><br><br>Languages<br>---------<br><br>* CMake learned to support "ISPC" as a first-class language that can<br>  be enabled via the "project()" and "enable_language()" commands.<br>  "ISPC" is currently supported by the Makefile Generators and the<br>  "Ninja" generator on Linux, macOS, and Windows using the Intel ISPC<br>  compiler.<br><br>* "CUDA" language support for Clang now includes:<br><br>  * separable compilation ("CUDA_SEPARABLE_COMPILATION"), and<br><br>  * finding scattered toolkit installations when cross-compiling.<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.2.<br><br>* The "cmake-file-api(7)" “codemodel” version 2 “target” object gained<br>  a new "languageStandard" field in the "compileGroups" objects.<br><br><br>Command-Line<br>------------<br><br>* The "cmake(1)" command-line tool’s "--install" mode gained a "--<br>  default-directory-permissions" option.<br><br>* "cmake(1)" gained a "-E create_hardlink" command-line tool that can<br>  be used to create hardlinks between files.<br><br><br>GUI<br>---<br><br>* The "CMake GUI" now has an environment variable editor.<br><br><br>Commands<br>--------<br><br>* The "add_test()" command now (officially) supports whitespace and<br>  other special characters in the name for the test it creates. See<br>  policy "CMP0110".<br><br>* The "cmake_language()" command gained a "DEFER" mode to schedule<br>  command calls to occur at the end of processing a directory.<br><br>* The "configure_file()" command gained a "NO_SOURCE_PERMISSIONS"<br>  option to suppress copying the input file’s permissions to the<br>  output file.<br><br>* The "execute_process()" command gained a "COMMAND_ERROR_IS_FATAL"<br>  option to specify a fatal error.<br><br>* The "file(ARCHIVE_CREATE)" command gained a "COMPRESSION_LEVEL"<br>  option to specify the compression level.<br><br>* The "file(CHMOD)" and "file(CHMOD_RECURSE)" subcommands were added<br>  to set permissions of files and directories.<br><br>* The "file(DOWNLOAD)" command "<file>" argument is now optional.  If<br>  it is not specified, the file is not saved.<br><br>* The "file(GENERATE)" command gained a new "TARGET" keyword to<br>  support resolving target-dependent generator expressions.<br><br>* The "file()" command gained a new "REAL_PATH" sub-command to compute<br>  a path with symlinks resolved.<br><br>* The "find_package()" command learned to handle a version range.<br><br>* The "separate_arguments()" command gained a new "PROGRAM" option. It<br>  allows the arguments to be treated as a program invocation and will<br>  resolve the executable to a full path if it can be found.<br><br>* The "DIRECTORY" option of the "set_property()", "get_property()",<br>  and "get_directory_property()" commands now accepts references to<br>  binary directory paths, such as the value of<br>  "CMAKE_CURRENT_BINARY_DIR".<br><br>* The "string()" command gained a set of new "JSON" sub commands that<br>  provide JSON parsing capabilities.<br><br><br>Variables<br>---------<br><br>* The "CMAKE_CLANG_VFS_OVERLAY" variable was added to tell Clang to<br>  use a VFS overlay to support the Windows SDK when cross-compiling<br>  from hosts with case-sensitive filesystems.<br><br>* The "CMAKE_MFC_FLAG" variable now supports generator expressions.<br><br>* The "CMAKE_OPTIMIZE_DEPENDENCIES" variable was added to initialize<br>  the new "OPTIMIZE_DEPENDENCIES" target property and avoid<br>  unnecessarily building dependencies for a static library.<br><br>* The "CMAKE_PCH_INSTANTIATE_TEMPLATES" variable was added to<br>  initialize the new "PCH_INSTANTIATE_TEMPLATES" target property.<br><br>* The "CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM" variable was<br>  added to tell the Visual Studio Generators what maximum version of<br>  the Windows SDK to choose.<br><br><br>Properties<br>----------<br><br>* The "EXCLUDE_FROM_ALL" target property now supports "generator<br>  expressions".<br><br>* The "OPTIMIZE_DEPENDENCIES" target property was added to avoid<br>  unnecessarily building dependencies for a static library.<br><br>* The "PCH_INSTANTIATE_TEMPLATES" target property was added to enable<br>  template instantiation in the precompiled header. This is enabled by<br>  default and may significantly improve compile times. Currently only<br>  supported for Clang (version 11 or later).<br><br>* The "WIN32_EXECUTABLE" target property now supports "generator<br>  expressions".<br><br><br>Modules<br>-------<br><br>* The "CheckCompilerFlag" module has been added to generalize<br>  "CheckCCompilerFlag" and "CheckCXXCompilerFlag" to more languages.<br>  It also supports the "CUDA" and "ISPC" languages.<br><br>* The "CheckLinkerFlag" module now supports the "CUDA" language.<br><br>* The "CheckSourceCompiles" module has been added to generalize<br>  "CheckCSourceCompiles" and "CheckCXXSourceCompiles" to more<br>  languages. It also supports the "CUDA" and "ISPC" languages.<br><br>* The "CheckSourceRuns" module has been added to generalize<br>  "CheckCSourceRuns" and "CheckCXXSourceRuns" to more languages. It<br>  also supports the "CUDA" language.<br><br>* The "CMakePackageConfigHelpers" module gained support for version<br>  ranges.<br><br>* The "FindCUDAToolkit" module gained support for finding CUDA<br>  toolkits that do not contain "nvcc", as well as for finding<br>  scattered toolkit installations when cross-compiling.<br><br>* The "FindPackageHandleStandardArgs" module learned to handle version<br>  ranges. It also gained the "find_package_check_version()" command to<br>  check the validity of a version against version-related arguments of<br>  "find_package()" command.<br><br>* The "FindPython3", "FindPython2" and "FindPython" modules gained the<br>  ability to handle a version range.<br><br>* The "FindPython3", "FindPython2" and "FindPython" modules provide,<br>  respectively, the variable "Python3_LINK_OPTIONS",<br>  "Python2_LINK_OPTIONS" and "Python_LINK_OPTIONS" for link options.<br><br>* The "FindSDL" module now provides:<br><br>  * An imported target "SDL::SDL".<br><br>  * Result variables "SDL_LIBRARIES" and "SDL_INCLUDE_DIRS".<br><br>  * Version variables "SDL_VERSION", "SDL_VERSION_MAJOR",<br>    "SDL_VERSION_MINOR", and "SDL_VERSION_PATCH".<br><br>* The "FindSWIG" module gained the ability to handle a version range.<br><br>* The "FindTIFF" module gained a "CXX" component to find the "tiffxx"<br>  library containing C++ bindings.<br><br>* The "FindVulkan" module now provides a "Vulkan::glslc" imported<br>  target and associated "Vulkan_GLSLC_EXECUTABLE" variable which<br>  contain the path to the GLSL SPIR-V compiler.<br><br>* The "UseSWIG" module gained support for new source file properties<br>  "OUTPUT_DIR" and "OUTFILE_DIR" to manage output directories on a<br>  per-source basis.<br><br><br>CTest<br>-----<br><br>* "ctest(1)" now supports the CUDA "compute-sanitizer" checker<br>  (previously known as "cuda-memcheck") as the<br>  "CTEST_MEMORYCHECK_COMMAND". The different tools ("memcheck",<br>  "racecheck", "synccheck" and "initcheck") supported by "compute-<br>  sanitizer" can be selected by adding appropriate flags to the<br>  "CTEST_MEMORYCHECK_COMMAND_OPTIONS" variable.  The default flags are<br>  "--tool memcheck --leak-check full".<br><br><br>CPack<br>-----<br><br>* CPack gained the "CPACK_PRE_BUILD_SCRIPTS",<br>  "CPACK_POST_BUILD_SCRIPTS", and "CPACK_PACKAGE_FILES" variables.<br><br>* The "CPack External Generator" gained the<br>  "CPACK_EXTERNAL_BUILT_PACKAGES" variable.<br><br>* The "CPack WIX Generator" gained a "CPACK_WIX_CUSTOM_XMLNS" option<br>  to specify custom XML namespaces.<br><br><br>Other<br>-----<br><br>* Interface Libraries may now have source files added via<br>  "add_library()" or "target_sources()".  Those with sources will be<br>  generated as part of the build system.<br><br><br>Deprecated and Removed Features<br>===============================<br><br>* Compatibility with versions of CMake older than 2.8.12 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>* An explicit deprecation diagnostic was added for policy "CMP0071"<br>  ("CMP0071" and below were already deprecated). The "cmake-<br>  policies(7)" manual explains that the OLD behaviors of all policies<br>  are deprecated and that projects should port to the NEW behaviors.<br><br>* macOS SDKs older than 10.5 are no longer supported.<br><br>* "cmake-gui(1)" now requires Qt5. Support for compiling with Qt4 has<br>  been removed.<br><br>* The "cmake(1)" command-line option "--warn-unused-vars" has been<br>  removed and is now silently ignored.  The option has not worked<br>  correctly since CMake 3.3.<br><br><br>Documentation<br>=============<br><br>The following guides have been added:<br><br>* "IDE Integration Guide"<br><br>* "Importing and Exporting Guide"<br><br><br>Other Changes<br>=============<br><br>* Building for macOS will now use the latest SDK available on the<br>  system, unless the user has explicitly chosen a SDK using<br>  "CMAKE_OSX_SYSROOT".  The deployment target or system macOS version<br>  will not affect the choice of SDK.<br><br>* The "CMAKE_<LANG>_COMPILER" variable may now be used to store<br>  “mandatory” compiler flags like the "CC" and other environment<br>  variables.<br><br>* The "CMAKE_<LANG>_FLAGS_INIT" variable will now be considered during<br>  the compiler identification check if other sources like<br>  "CMAKE_<LANG>_FLAGS" or "CFLAGS" are not set.<br><br>* The "find_program()" command now requires permission to execute but<br>  not to read the file found.  See policy "CMP0109".<br><br>* An imported target missing its location property fails during<br>  generation if the location is used.  See policy "CMP0111".<br><br>* The following target-based generator expressions that query for<br>  directory or file name components no longer add a dependency on the<br>  evaluated target. See policy "CMP0112".<br><br>  * "TARGET_FILE_DIR"<br><br>  * "TARGET_LINKER_FILE_BASE_NAME"<br><br>  * "TARGET_LINKER_FILE_NAME"<br><br>  * "TARGET_LINKER_FILE_DIR"<br><br>  * "TARGET_SONAME_FILE_NAME"<br><br>  * "TARGET_SONAME_FILE_DIR"<br><br>  * "TARGET_PDB_FILE_NAME"<br><br>  * "TARGET_PDB_FILE_DIR"<br><br>  * "TARGET_BUNDLE_DIR"<br><br>  * "TARGET_BUNDLE_CONTENT_DIR"<br><br>* Makefile Generators no longer repeat custom commands from target<br>  dependencies.  See policy "CMP0113".<br><br>* The "ExternalProject" module handling of step target dependencies<br>  has been revised.  See policy "CMP0114".<br><br>* The "OSX_ARCHITECTURES" target property is now respected for the<br>  "ASM" language.<br><br>* If "CUDA" compiler detection fails with user-specified<br>  "CMAKE_CUDA_ARCHITECTURES" or "CMAKE_CUDA_HOST_COMPILER", an error<br>  is raised.<br><br><br>----------------------------------------------------------------------------<br>Changes made since CMake 3.19.0-rc2:<br><br>Ben Boeckel (1):<br>  CheckSourceRuns: do not fail on unrecognized arguments<br><br>Brad King (4):<br>  FindBoost: Avoid leaking internal Boost_ROOT setting<br>  Help: Add 3.19 release note about CUDA support on QNX<br>  cmake-gui: Restore workaround for crash in file dialog<br>  CMake 3.19.0-rc3<br><br>Craig Scott (1):<br>  Help: Clarify variables specifying scripts to execute during packaging<br><br>Gusts Kaksis (1):<br>  Xcode: Inherit target library and framework search paths from project<br><br>Kyle Edwards (1):<br>  CMakePresets.json: Don't warn if no path argument is given<br><br>Marc Chevrier (1):<br>  cmake_path: remove new command from 3.19<br><br>Pavel Cernohorsky (1):<br>  FindPostgreSQL: support version 13<br><br>Peter Steneteg (1):<br>  Help: Clarify string(JSON) error handling<br><br>Tobias Ribizel (2):<br>  CTest: Add cuda-memcheck to Dart and CTest module<br>  Help: Add cuda-memcheck to CTest documentation<br><br>Tor Arne Vestbø (1):<br>  Apple: Update SDK architecture detection for tbd file version 4<br><br>janbernloehr (1):<br>  CUDA: Enable support on QNX<br></div>