Release of CMake build system 3.17.0

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

CMake is notable for providing a simple scripting language, functionality extension through modules, minimal dependencies (no coupling with M4, Perl, or Python), caching support, tools for cross-compilation, support for generating build files for a wide range of build systems and compilers, as well as ctest and cpack utilities for defining test scripts and package builds, and a cmake-gui utility for interactive building parameter configuration.

Key improvements:

  • A new build script generator based on the Ninja toolkit has been added — "Ninja Multi-Config", which differs from the old generator by its ability to process multiple build configurations at once.
  • In the build script generator for Visual Studio a new feature has emerged there is the ability to define source files associated with each configuration (per-config sources).
  • The Compile Features tool now includes the ability to set meta-parameters for CUDA ("cuda_std_03", "cuda_std_14", etc.).
  • The variables "CMAKE_CUDA_RUNTIME_LIBRARY" and "CUDA_RUNTIME_LIBRARY" have been added to select the type of runtime libraries when using CUDA.
  • A module "FindCUDAToolkit" has been added to identify the available CUDA toolkit on the system without enabling the CUDA language.
  • The cmake utility has been enhanced with the command "--debug-find" to output additional readable diagnostics during search operations. A similar purpose is served by the variable CMAKE_FIND_DEBUG_MODE.
  • The FindCURL module now supports finding the CURL toolkit using generated cmake configuration files "CURLConfig.cmake". A variable CURL_NO_CURL_CMAKE has been provided to disable this behavior.
  • The FindPython module has been updated to allow searching for Python components in virtual environments managed by "conda".
  • The ctest utility now includes options "--no-tests=[error|ignore]" to define behavior in the absence of tests and "--repeat" to set conditions for re-running tests (until-pass, after-timeout).
  • Support has been added to transfer the INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES, and INTERFACE_LINK_DEPENDS properties of the build target as part of the internal dependencies of statically built libraries.
  • When using the MinGW toolkit, the find_library command now disables the search for DLL files by default (instead, it attempts to import libraries with the extension ".dll.a" by default).
  • The logic for selecting the ninja utility in the Ninja generator is now independent of the executable file name — it uses the first available utility found, whether it be ninja-build, ninja, or samu, in the paths defined by the PATH environment variable.
  • The cmake utility has been enhanced with the command "-E rm", which can be used to remove files and directories instead of using the separate commands "-E remove" and "-E remove_directory."

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster