CMake 3.15.0-rc1 is ready for testing

I am proud to announce the first CMake 3.15 release candidate.

Documentation is available at:

Release notes appear below and are also published at

Some of the more significant changes in CMake 3.15 are:

  • The “CMAKE_MSVC_RUNTIME_LIBRARY” variable and
    “MSVC_RUNTIME_LIBRARY” target property were introduced to select the
    runtime library used by compilers targeting the MSVC ABI. See policy
  • With MSVC-like compilers the value of “CMAKE__FLAGS” no
    longer contains warning flags like “/W3” by default. See policy
  • The “Clang” compiler variant on Windows that targets the MSVC ABI
    but has a GNU-like command line is now supported.
  • Preliminary support for the “Swift” language was added to the
    “Ninja” generator.
  • The “$<COMPILE_LANG_AND_ID:…>” generator expression was
    introduced to allow specification of compile options for target
    files based on the “CMAKE__COMPILER_ID” and “LANGUAGE” of each
    source file.
  • The “generator expressions” “C_COMPILER_ID”, “CXX_COMPILER_ID”,
    “COMPILE_LANG_AND_ID”, and “PLATFORM_ID” learned to support matching
    one value from a comma-separated list.
  • The “CMAKE_FIND_PACKAGE_PREFER_CONFIG” variable was added to tell
    “find_package()” calls to look for a package configuration file
    first even if a find module is available.
  • The “PUBLIC_HEADER” and “PRIVATE_HEADER” properties may now be set
    on Interface Libraries. The headers specified by those properties
    can be installed using the “install(TARGETS)” command by passing the
    “PUBLIC_HEADER” and “PRIVATE_HEADER” arguments respectively.
  • The “CMAKE_VS_JUST_MY_CODE_DEBUGGING” variable and
    “VS_JUST_MY_CODE_DEBUGGING” target property were added to enable the
    Just My Code feature of the Visual Studio Debugger when compiling
    with MSVC cl 19.05 and higher.
  • The “FindBoost” module was reworked to expose a more consistent
    user experience between its “Config” and “Module” modes and with
    other find modules in general.
  • The “message()” command learned new types: “NOTICE”, “VERBOSE”,
    “DEBUG” and “TRACE”.
  • The “export(PACKAGE)” command now does nothing unless enabled via

One Response to CMake 3.15.0-rc1 is ready for testing

  1. Arthur says:

    Thanks for the team’s work on the GNU-like clang compatibility. I just started a project hoping to use this a few weeks ago not realizing it wouldn’t work as of 3.14, and got lucky to stumble across the Issue Board and realized it was being worked on right then. I’ll be putting it to use right away with the release candidate!

Questions or comments are always welcome!