Release of CMake 3.15 build system

Took place release of a cross-platform open source build script generator CMake 3.15, 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:

  • Initial language support added to Ninja toolkit-based build script generator Swiftdeveloped by Apple;
  • Added support for a variant of the Clang compiler for Windows that builds against the MSVC ABI but uses GNU-style command-line options;
  • Added CMAKE_MSVC_RUNTIME_LIBRARY and MSVC_RUNTIME_LIBRARY variables to select runtime libraries used by compilers based on ABI MSVC (MS Visual Studio);
  • For compilers like MSVC, CMAKE_FLAGS no longer enumerates warning output control flags such as "/W3" by default;
  • Added generator expression "COMPILE_LANG_AND_ID:" to define compiler options for target files using CMAKE_COMPILER_ID and LANGUAGE variables for each code file;
  • In generator expressions C_COMPILER_ID, CXX_COMPILER_ID,
    CUDA_COMPILER_ID, Fortran_COMPILER_ID, COMPILE_LANGUAGE,
    COMPILE_LANG_AND_ID and PLATFORM_ID added support for matching one value with a list, the elements in which are separated by commas;

  • Added CMAKE_FIND_PACKAGE_PREFER_CONFIG variable so that find_package() call will look for the package configuration file first, even if a find module is available;
  • Added support for setting the PUBLIC_HEADER and PRIVATE_HEADER properties for interface libraries, which can set headers using the install(TARGETS) command by passing the PUBLIC_HEADER and PRIVATE_HEADER arguments;
  • Added CMAKE_VS_JUST_MY_CODE_DEBUGGING variable and VS_JUST_MY_CODE_DEBUGGING target property to enable "Just My Code" mode in the Visual Studio debugger when compiling with MSVC cl 19.05 and newer;
  • The FindBoost module has been redesigned, which now works more holistically in Config and Module modes in the presence of other search modules;
  • Support for the NOTICE, VERBOSE types has been added to the message() command,
    DEBUG and TRACE

  • The "export(PACKAGE)" command now does nothing unless explicitly enabled via the CMAKE_EXPORT_PACKAGE_REGISTRY variable.

Source: opennet.ru

Add a comment