CMake 3.17.0 available for download

I am happy to announce that CMake 3.17.0 is now available for download at:

Documentation is available at:

Release notes appear below and are also published at

Some of the more significant changes in CMake 3.17 are:

  • “cmake(1)” gained a “Ninja Multi-Config” generator, which is similar to the “Ninja” generator but can be used to build multiple configurations at once.
  • Visual Studio Generators learned to support per-config sources. Previously only Command-Line Build Tool Generators supported them.
  • The “Compile Features” functionality now offers meta-features for the CUDA language standard levels (e.g. “cuda_std_03”, “cuda_std_14”). See “CMAKE_CUDA_KNOWN_FEATURES”.
  • The “CMAKE_CUDA_RUNTIME_LIBRARY” variable and “CUDA_RUNTIME_LIBRARY” target property were introduced to select the CUDA runtime library used when linking targets that use CUDA.
  • The “FindCUDAToolkit” module was added to find the CUDA Toolkit without enabling CUDA as a language.
  • “cmake(1)” gained a “–debug-find” command-line option to enable additional human-readable output on where find commands search.
  • The “CMAKE_FIND_DEBUG_MODE” variable was introduced to print extra find call information during the cmake run to standard error. Output is designed for human consumption and not for parsing.
  • The “FindCURL” module learned to find CURL using the “CURLConfig.cmake” package configuration file generated by CURL’s cmake buildsystem. It also gained a new “CURL_NO_CURL_CMAKE” option to disable this behavior.
  • The “FindPython” module has learned to find Python components in active virtual environments managed by “conda”.
  • The “ctest(1)” tool gained a “–no-tests=<[error|ignore]>” option to explicitly set and unify the behavior between direct invocation and script mode if no tests were found.
  • The “ctest(1)” tool gained a “–repeat :” option to specify conditions in which to repeat tests. This generalizes the existing “–repeat-until-fail ” option to add modes for “until-pass” and “after-timeout”.
  • Target link properties “INTERFACE_LINK_OPTIONS”, “INTERFACE_LINK_DIRECTORIES” and “INTERFACE_LINK_DEPENDS” are now transitive over private dependencies on static libraries. See policy “CMP0099”.
  • When using MinGW tools, the “find_library()” command no longer finds “.dll” files by default. Instead it expects “.dll.a” import libraries to be available.
  • The “Ninja” generator now prefers the first ninja build tool to appear in the “PATH” no matter whether it is called “ninja-build”, “ninja”, or “samu”. Previously the first of those names to appear anywhere in the “PATH” would be preferred.
  • “cmake(1)” gained a “-E rm” command-line tool that can be used to remove directories and files. This supersedes the existing “-E remove” and “-E remove_directory” tools and has better semantics.

One Response to CMake 3.17.0 available for download

  1. The iOS bug still happening and don’t compile for correct arch. Already reported here and don’t have solution from Kitware (a friend post a solution there).

Questions or comments are always welcome!