Release of CMake 3.17.0 build system

Submitted by release of a cross-platform open source build script generator CMake 3.17, which acts as an alternative to Autotools and is used in projects such as KDE, LLVM/Clang, MySQL, MariaDB, ReactOS, and Blender. The CMake code is written in C++ and distributed under the BSD license.

CMake is notable for providing a simple scripting language, means of extending functionality through modules, a minimum number of dependencies (no binding to M4, Perl or Python), caching support, cross-compilation tools, support for generating build files for a wide range of build systems and compilers, the presence ctest and cpack utilities to define test scripts and package builds, cmake-gui utility to interactively configure build options.

All improvements:

  • A new assembly script generator based on the Ninja toolkit has been added - “Ninja Multi-Config”, which differs from the old generator in the ability to process several assembly configurations at once.
  • In the assembly script generator for Visual Studio appeared the ability to define source files associated with each configuration (per-config sources).
  • The ability to set meta parameters for CUDA (“cuda_std_03”, “cuda_std_14”, etc.) has been added to the tools for setting compiler parameters (Compile Features).
  • Added variables "CMAKE_CUDA_RUNTIME_LIBRARY" and "CUDA_RUNTIME_LIBRARY" to select the type of runtime libraries when using CUDA.
  • Added the "FindCUDAToolkit" module to determine the CUDA toolkit available on the system without enabling the CUDA language.
  • Added "--debug-find" command to cmake to output additional readable diagnostics when performing search operations. For similar purposes, the CMAKE_FIND_DEBUG_MODE variable has been added.
  • Added support for searching for CURL tools using cmake-generated configuration files “CURLConfig.cmake” to the “FindCURL” module. To disable this behavior, the CURL_NO_CURL_CMAKE variable is provided.
  • The FindPython module has added the ability to search for Python components in virtual environments managed using “conda”.
  • The ctest utility has added the “--no-tests=[error|ignore]” options to define the behavior in the case of no tests and “--repeat” to set the conditions for re-running tests (until-pass, after-timeout).
  • The assembly target properties INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES and INTERFACE_LINK_DEPENDS are now transferred among the internal dependencies of statically assembled libraries.
  • When using the MinGW toolkit, the search for DLL files with the find_library command is disabled by default (instead, the default attempt is to import ".dll.a" libraries).
  • The logic for selecting the ninja utility in the Ninja generator now does not depend on the name of the executable file - the first ninja-build, ninja or samu utility found in the paths defined through the PATH environment variable is used.
  • Added a "-E rm" command to cmake that can be used to remove files and directories instead of the separate "-E remove" and "-E remove_directory" commands.

Source: opennet.ru

Add a comment