CMake Changelog

What's new in CMake 3.29.2

Apr 12, 2024
  • This version made no changes to documented features or interfaces. Some implementation updates were made to support ecosystem changes and/or fix regressions.

New in CMake 3.29.1 (Apr 8, 2024)

  • The CMAKE_LINKER_TYPE variable and corresponding LINKER_TYPE target property now work with compilers for the Swift language.

New in CMake 3.29.0 (Mar 22, 2024)

  • New Features:
  • Command-Line:
  • cmake(1) -E cat can now print the standard input by passing the - argument.
  • Generators:
  • Visual Studio Generators now support selecting between the Intel oneAPI Fortran compiler (ifx) and the Intel classic Fortran compiler (ifort) using a fortran= field in CMAKE_GENERATOR_TOOLSET.
  • File-Based API:
  • The cmake-file-api(7) "codemodel" version 2 version field has been updated to 2.7.
  • The cmake-file-api(7) "codemodel" version 2 "target" object gained a new "launchers" field.
  • Compilers:
  • The LLVM/Clang GNU-like frontend on Windows (clang++) may now be used to compile CUDA language sources.
  • Compilers targeting the GNU ABI on Windows (MinGW) may now be used to compile Objective C (OBJC) and Objective C++ (OBJCXX). These include GNU compilers (gcc and g++) and the LLVM/Clang GNU-like frontends (clang and clang++).
  • TI Clang-based compilers are now supported with compiler id TIClang.
  • Commands:
  • The add_custom_command(TARGET) signature now supports adding build events through Alias Targets.
  • The cmake_language(EXIT) sub-command was added to terminate cmake -P scripts with a specified exit code.
  • The export(SETUP) sub-command was added to configure export sets. Its TARGET option's XCFRAMEWORK_LOCATION setting specifies the location of a .xcframework that can be substituted for an installed target.
  • The if() command gained new tests IS_READABLE, IS_WRITABLE and IS_EXECUTABLE to check file or directory permissions.
  • Variables:
  • The CMAKE_INSTALL_PREFIX environment variable was added to provide a default value for the CMAKE_INSTALL_PREFIX variable.
  • The CMAKE_LINKER_TYPE variable and corresponding LINKER_TYPE target property were added to specify what linker to use with some toolchains.
  • The CMAKE__COMPILER_LINKER, CMAKE__COMPILER_LINKER_ID, CMAKE__COMPILER_LINKER_VERSION and CMAKE__COMPILER_LINKER_FRONTEND_VARIANT variables were added to describe the linker used by the language's link step.
  • The CMAKE_PROJECT_INCLUDE, CMAKE_PROJECT_INCLUDE_BEFORE, CMAKE_PROJECT__INCLUDE, and CMAKE_PROJECT__INCLUDE_BEFORE variables learned to support a semicolon-separated list of CMake language files to be included sequentially. These variables can also reference module names to be found in CMAKE_MODULE_PATH or builtin to CMake.
  • The CMAKE_SKIP_TEST_ALL_DEPENDENCY variable was added to control whether the test (or RUN_TESTS) buildsystem target depends on the all (or ALL_BUILD) target.
  • A CMAKE_TEST_LAUNCHER variable and corresponding TEST_LAUNCHER target property were added to specify a launcher to be used by executable targets when invoked by tests added by the add_test() command.
  • Properties:
  • The CROSSCOMPILING_EMULATOR target property now supports generator expressions.
  • The UNITY_BUILD target property now supports the Objective C (OBJC) and Objective C++ (OBJCXX) languages.
  • The XCODE_EMBED_XPC_SERVICES target property was added to tell the Xcode generator what targets to put in the Embed XPC Resources build phase.
  • Modules:
  • The CMakePackageConfigHelpers module gained new generate_apple_platform_selection_file() and generate_apple_architecture_selection_file() functions, which can be used to generate a file that includes another Apple-platform-specific file or the includes an architecture-specific implementation of a package for an Apple platform, respectively.
  • The FindOpenGL module learned to find a GLU include directory different than the GL include directory. A new OPENGL_INCLUDE_DIRS result variable provides all include directories.
  • CTest:
  • ctest(1) gained a --http-header option to add custom headers on submission to CDash.
  • ctest(1) gained the --tests-from-file and --exclude-from-file options to run or exclude tests named in a file.
  • ctest(1) now supports job server integration on POSIX systems.
  • The ctest -j option may now be given without a value to let ctest choose a default level of parallelism, or with 0 to let ctest use unbounded parallelism. The corresponding CTEST_PARALLEL_LEVEL environment variable, if set to the empty string, is now equivalent to passing -j with no value.
  • The ctest_test() command gained options INCLUDE_FROM_FILE and EXCLUDE_FROM_FILE to run or exclude tests named in a file.
  • CPack:
  • The CPack DEB Generator CPACK_DEBIAN_FILE_NAME variable may now be set without any suffix, and the .deb suffix will be added automatically.
  • The CPack RPM Generator CPACK_RPM_FILE_NAME variable may now be set without any suffix, and the .rpm suffix will be added automatically.
  • The CPack WIX Generator gained a new variable, CPACK_WIX_INSTALL_SCOPE, to control the InstallScope property of WiX MSI installers.
  • Other Changes:
  • CMake learned to de-duplicate libraries on link lines based on linker capabilities. See policy CMP0156.
  • The add_test() command now honors CMAKE_CROSSCOMPILING_EMULATOR only when cross-compiling. See policy CMP0158.
  • On Windows, when targeting the MSVC ABI, the find_library() command now accepts .a file names after first considering .lib. This is symmetric with existing behavior when targeting the GNU ABI, in which the command accepts .lib file names after first considering .a.
  • On Windows, when targeting the MSVC ABI, the find_library() command now considers .dll.lib file names before .lib. This is the default suffix for DLL import libraries created by Rust toolchains for the MSVC ABI.
  • The Ninja and NMake Makefiles generators now use the -external:I flag for system includes when using IntelLLVM as of version 2021.4. The -external:W0 flag is also used as of version 2022.2.
  • The create_test_sourcelist() command now provides a full path to the generated driver source file.
  • The CPACK_PRODUCTBUILD_DOMAINS variable now defaults to true. See policy CMP0161.
  • The CPack WIX Generator now produces WiX MSI installers that create start menu and uninstall entries for all users by default, as documented by the CPACK_WIX_INSTALL_SCOPE variable perMachine value. Previously, without a custom WiX template, it produced installers that would only create start menu and uninstall entries for the current user, even though they install for all users.

New in CMake 3.29.0 RC 1 (Feb 14, 2024)

  • New Features:
  • Command-Line:
  • cmake(1) -E cat can now print the standard input by passing the - argument.
  • Generators:
  • Visual Studio Generators now support selecting between the Intel oneAPI Fortran compiler (ifx) and the Intel classic Fortran compiler (ifort) using a fortran= field in CMAKE_GENERATOR_TOOLSET.
  • File-Based API:
  • The cmake-file-api(7) "codemodel" version 2 version field has been updated to 2.7.
  • The cmake-file-api(7) "codemodel" version 2 "target" object gained a new "launchers" field.
  • Compilers:
  • The LLVM/Clang GNU-like frontend on Windows (clang++) may now be used to compile CUDA language sources.
  • Compilers targeting the GNU ABI on Windows (MinGW) may now be used to compile Objective C (OBJC) and Objective C++ (OBJCXX). These include GNU compilers (gcc and g++) and the LLVM/Clang GNU-like frontends (clang and clang++).
  • TI Clang-based compilers are now supported with compiler id TIClang.
  • Commands:
  • The add_custom_command(TARGET) signature now supports adding build events through Alias Targets.
  • The cmake_language(EXIT) sub-command was added to terminate cmake -P scripts with a specified exit code.
  • The export(SETUP) sub-command was added to configure export sets. Its PACKAGE_DEPENDENCY option configures how find_dependency() calls are exported. Its TARGET option's XCFRAMEWORK_LOCATION setting specifies the location of a .xcframework that can be substituted for an installed target.
  • The if() command gained new tests IS_READABLE, IS_WRITABLE and IS_EXECUTABLE to check file or directory permissions.
  • install(EXPORT) and export(EXPORT) learned a new EXPORT_PACKAGE_DEPENDENCIES argument, which can be used to generate find_dependency() calls based on what targets the exported targets depend on.
  • Variables:
  • The CMAKE_INSTALL_PREFIX environment variable was added to provide a default value for the CMAKE_INSTALL_PREFIX variable.
  • The CMAKE_LINKER_TYPE variable and corresponding LINKER_TYPE target property were added to specify what linker to use with some toolchains.
  • The CMAKE__COMPILER_LINKER, CMAKE__COMPILER_LINKER_ID, CMAKE__COMPILER_LINKER_VERSION and CMAKE__COMPILER_LINKER_FRONTEND_VARIANT variables were added to describe the linker used by the language's link step.
  • The CMAKE_PROJECT_INCLUDE, CMAKE_PROJECT_INCLUDE_BEFORE, CMAKE_PROJECT__INCLUDE, and CMAKE_PROJECT__INCLUDE_BEFORE variables learned to support a semicolon-separated list of CMake language files to be included sequentially. These variables can also reference module names to be found in CMAKE_MODULE_PATH or builtin to CMake.
  • The CMAKE_SKIP_TEST_ALL_DEPENDENCY variable was added to control whether the test (or RUN_TESTS) buildsystem target depends on the all (or ALL_BUILD) target.
  • A CMAKE_TEST_LAUNCHER variable and corresponding TEST_LAUNCHER target property were added to specify a launcher to be used by executable targets when invoked by tests added by the add_test() command.
  • Properties:
  • The CROSSCOMPILING_EMULATOR target property now supports generator expressions.
  • The EXPORT_FIND_PACKAGE_NAME target property was added to allow targets to specify what package name to pass when exporting find_dependency() calls. This property is initialized with a new CMAKE_EXPORT_FIND_PACKAGE_NAME variable.
  • The UNITY_BUILD target property now supports the Objective C (OBJC) and Objective C++ (OBJCXX) languages.
  • The XCODE_EMBED_XPC_SERVICES target property was added to tell the Xcode generator what targets to put in the Embed XPC Resources build phase.
  • Modules:
  • The CMakePackageConfigHelpers module gained new generate_apple_platform_selection_file() and generate_apple_architecture_selection_file() functions, which can be used to generate a file that includes another Apple-platform-specific file or the includes an architecture-specific implementation of a package for an Apple platform, respectively.
  • The FindOpenGL module learned to find a GLU include directory different than the GL include directory. A new OPENGL_INCLUDE_DIRS result variable provides all include directories.
  • CTest:
  • ctest(1) gained a --http-header option to add custom headers on submission to CDash.
  • ctest(1) gained the --tests-from-file and --exclude-from-file options to run or exclude tests named in a file.
  • ctest(1) now supports job server integration on POSIX systems.
  • The ctest_test() command gained options INCLUDE_FROM_FILE and EXCLUDE_FROM_FILE to run or exclude tests named in a file.
  • CPack:
  • The CPack DEB Generator CPACK_DEBIAN_FILE_NAME variable may now be set without any suffix, and the .deb suffix will be added automatically.
  • The CPack RPM Generator CPACK_RPM_FILE_NAME variable may now be set without any suffix, and the .rpm suffix will be added automatically.
  • The CPack WIX Generator gained a new variable, CPACK_WIX_INSTALL_SCOPE, to control the InstallScope property of WiX MSI installers.
  • Other Changes:
  • CMake learned to de-duplicate libraries on link lines based on linker capabilities. See policy CMP0156.
  • The add_test() command now honors CMAKE_CROSSCOMPILING_EMULATOR only when cross-compiling. See policy CMP0158.
  • FetchContent_MakeAvailable() now sets the CMAKE_EXPORT_FIND_PACKAGE_NAME variable for CMake projects.
  • On Windows, when targeting the MSVC ABI, the find_library() command now accepts .a file names after first considering .lib. This is symmetric with existing behavior when targeting the GNU ABI, in which the command accepts .lib file names after first considering .a.
  • On Windows, when targeting the MSVC ABI, the find_library() command now considers .dll.lib file names before .lib. This is the default suffix for DLL import libraries created by Rust toolchains for the MSVC ABI.
  • The Ninja and NMake Makefiles generators now use the -external:I flag for system includes when using IntelLLVM as of version 2021.4. The -external:W0 flag is also used as of version 2022.2.
  • The create_test_sourcelist() command now provides a full path to the generated driver source file.
  • The CPACK_PRODUCTBUILD_DOMAINS variable now defaults to true. See policy CMP0161.
  • The CPack WIX Generator now produces WiX MSI installers that create start menu and uninstall entries for all users by default, as documented by the CPACK_WIX_INSTALL_SCOPE variable perMachine value. Previously, without a custom WiX template, it produced installers that would only create start menu and uninstall entries for the current user, even though they install for all users.

New in CMake 3.28.3 (Feb 6, 2024)

  • Brad King (5):
  • zlib: Fix 1.2.13 version and date notice
  • Tests: Add case covering PCH in a unity build
  • cmGlobalGenerator: Add unity/pch sources after computing compile features
  • Unity: Clarify source comments on unity build transformation
  • CMake 3.28.3
  • zlib upstream (1):
  • zlib 2022-10-12 (04f42cec)

New in CMake 3.28.2 (Jan 30, 2024)

  • Ben Boeckel (12):
  • cmNinjaTargetGenerator: use scan flag for modmap usage inexported commands
  • cmDyndepCollation: clarify CXX_MODULES-without-BMI error message
  • Help: update lua.org links to be HTTPS
  • ExternalProject: revert `BYPRODUCTS` for download outputs
  • Tests/CXXModules: add a test with unity build support
  • cmGlobalGenerator: add unity sources after computing target compile features
  • cmLocalGenerator: ignore scanned sources for unity builds
  • cmVisualStudio10TargetGenerator: fix typo in flag name
  • Tests/CXXModules: add a test case for VS generation without flags
  • cmVisualStudio10TargetGenerator: always specify scanning
  • Tests/CXXModules/scan_properties: use `ixx` extension
  • cxxmodules: make export trampoline script files unique
  • Brad King (12):
  • FindBoost: Add support for Boost 1.84
  • zlib: Update script to get zlib 1.2.13
  • CUDA/Clang: Update architectures supported by CUDA 12
  • CUDA/Clang: Record architectures supported by Clang 16
  • Source: Simplify hasher object construction
  • Tests: Add missing include in testUVProcessChainHelper on Windows
  • cmUVProcessChain: Simplify builder initialization
  • cmUVProcessChain: Simplify SetExternalStream usage
  • cmUVProcessChain: Tolerate fileno() of invalid FILE stream
  • Revert use of libuv for process execution for 3.28
  • FindFreetype: Revert use of upstream freetype cmake package
  • CMake 3.28.2
  • Craig Scott (7):
  • Help: Fix typo not accounting for addition of visionOS
  • Help: Note CMAKE_IOS_INSTALL_COMBINED deprecation in toolchains example
  • Help: Update missed text for dynamically generated resource spec files
  • Help: Use for non-keyword arguments in property command signatures
  • Help: Use consistently in property getter commands
  • Help: Add missing DIRECTORY keyword to set_tests_properties() signature
  • Help: Fix wrong return values for unset inherited properties
  • Florian Weimer (1):
  • Tests: Improve C compatibility of LoadCommand tests
  • Gergely Meszaros (2):
  • HIP: Really forward CMAKE_HIP_HOST_COMPILER in check_language(HIP)
  • HIP: Propagate CMAKE_HIP_PLATFORM from/to the test project in check_language
  • Hermann von Kleist (8):
  • FindMatlab: Restore support for versions without VersionInfo.xml
  • FindMatlab: use correct registry view when extracting versions
  • FindMatlab: Restore support for finding EXACT major.minor version
  • FindMatlab: matlab_get_release_name_from_version is a function now
  • FindMatlab: Document all registry paths for version lookup
  • FindMatlab: Fix error message from function
  • FindMatlab: Some versions use major.minor.patch in the registry
  • FindMatlab: Document that version mappings do not apply to MCR
  • Jason E. Hale (1):
  • UsePkgConfig: Restore removal of trailing whitespace from pkg-config output
  • Marc Chevrier (3):
  • Xcode: Restore support for standalone IMPORTED_LOCATION_
  • Ninja: LINK_OPTIONS property should support newlines
  • Help: string(LENGTH): Fix synopsis link to command description
  • Matheus Izvekov (1):
  • cxxmodules: compute link information for C++ module-consuming targets
  • Orkun Tokdemir (4):
  • Makefile: Reduce string copies
  • Makefile: Fix double escaping when DEPFILE is used
  • cmQtAutoGenInitializer: Improve Const-correctness
  • Autogen: Forward dependencies when both Makefile and DEPFILE are used
  • Rafael Sadowski (1):
  • Source: Restore compilation on OpenBSD
  • Robert Maynard (2):
  • CUDAToolkit: Correctly search all include paths from compiler
  • Tests: Verify CUDA::cupti existence on a subset of machines
  • scivision (2):
  • FindMatlab: Fix major.minor version lookups in Windows Registry
  • FindMatlab: Accept long version in matlab_get_release_name_from_version
  • zlib upstream (1):
  • zlib 2022-10-12 (04f42cec)

New in CMake 3.28.1 (Dec 15, 2023)

  • Ben Boeckel (12):
  • Help/create_test_sourcelist: reflow prose
  • Help/create_test_sourcelist: add formatting markup
  • Help/create_test_sourcelist: format arguments in the signature docs
  • cmGeneratorTarget: disable C++ module scanning for verify targets
  • cmQtAutoGenInitializer: disable C++ module scanning for autogen sources
  • cmLocalGenerator: disable C++ module scanning for copied PCH sources
  • cmLocalGenerator: disable C++ module scanning for unity sources
  • cmGlobalXCodeGenerator: disable C++ module scanning for force-lang files
  • FindFreetype: always find the config module quietly
  • FindFreetype: also consider RelWithDebInfo-built libraries
  • FindTIFF: always find the config module quietly
  • FindTIFF: consider `IMPLIB`-using platforms
  • Brad King (8):
  • FindCUDAToolkit: Fix stub library representation on reconfigure
  • Tests: Update for changes to upstream ninja development version
  • gitlab-ci: update macOS jobs to use Xcode 15.1
  • FindMatlab: Fix regression on Windows Registry lookup failure
  • FindFreetype: Fix success message when config module is found
  • FindTIFF: Restore support for projects that do not enable CMP0057
  • FindMatlab: Fix processing of multiple versions from Windows Registry
  • CMake 3.28.1
  • Craig Scott (4):
  • Help: Fix malformed cross-reference in FetchContent docs
  • Help: Add missing versionadded directives for IMPORTED_IMPLIB
  • Help: XCFrameworks and stubs are supported on all Apple, not just macOS
  • Help: Note case where IMPORTED_IMPLIB isn't needed for (xc)frameworks
  • Mattias Ellert (1):
  • Tests: Do not expect EINTR when sleep is interrupted on GNU/Hurd
  • Robert Maynard (1):
  • CUDAToolkit: Restore ability to find cupti headers

New in CMake 3.28.0 (Dec 7, 2023)

  • New Features:
  • Languages:
  • C++ 20 named modules are now supported by Ninja Generators and Visual Studio Generators for VS 2022 and newer, in combination with the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang 16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and newer. See "cmake-cxxmodules(7)" for details.
  • "HIP" language code may now be compiled for NVIDIA GPUs using the NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.
  • Platforms:
  • On Apple platforms, ".xcframework" folders are now supported:
  • The "find_library()" command now finds ".xcframework" folders.
  • The "target_link_libraries()" command now supports linking against a ".xcframework" folder.
  • The "IMPORTED_LOCATION" target property of an imported library target may now be the path to a ".xcframework" folder.
  • Apple visionOS and its "xros" and "xrsimulator" SDKs are now supported. Compiling for Apple visionOS can be requested by setting "CMAKE_SYSTEM_NAME" to "visionOS". See Cross Compiling for iOS, tvOS, visionOS, or watchOS for more information.
  • Presets:
  • "cmake-presets(7)" files now support schema version "8". It adds support for a "$schema" field.
  • Compilers:
  • Cray Clang-based compilers are now supported with "compiler id" "CrayClang".
  • The OrangeC compiler is now supported with "compiler id" "OrangeC".
  • Commands:
  • The "add_custom_command()" and "add_custom_target()" commands gained a "JOB_SERVER_AWARE" option.
  • The "cmake_host_system_information()" command gained a "MSYSTEM_PREFIX" query for the installation prefix of a MSYS or MinGW development environment on Windows hosts.
  • The "set_property()" command "TEST" mode gained a "DIRECTORY" option to set properties on tests in other directories.
  • The "set_tests_properties()" command gained a "DIRECTORY" option to set properties on tests in other directories.
  • The "get_property()" command "TEST" mode gained a "DIRECTORY" option to get properties on tests in other directories.
  • The "get_test_property()" command gained a "DIRECTORY" option to get properties on tests in other directories.
  • Variables:
  • The "CMAKE_CROSSCOMPILING_EMULATOR" environment variable was added to initialize the "CMAKE_CROSSCOMPILING_EMULATOR" cache variable.
  • The "CMAKE_HIP_PLATFORM" variable was added to specify the GPU platform for which HIP language sources are to be compiled ("amd" or "nvidia").
  • Properties:
  • On imported shared libraries, the "IMPORTED_IMPLIB" target property may now be used without "IMPORTED_LOCATION". This can be used to represent a stub library whose location should not be added as a runtime search path to dependents that link it.
  • The "IMPORTED_LOCATION" property of a macOS framework may now be a path to the ".framework" folder itself.
  • The "XCODE_EMBED_RESOURCES" target property was added to tell the "Xcode" generator what targets to put in the "Embed Resources" build phase.
  • Modules:
  • The "ExternalProject" module now includes the "BUILD_JOB_SERVER_AWARE" option for the "ExternalProject_Add()" command. This option enables the integration of the GNU Make job server when using an explicit "BUILD_COMMAND" with certain Makefile Generators. Additionally, the "ExternalProject_Add_Step()" command has been updated to support the new "JOB_SERVER_AWARE" option.
  • The "ExternalProject" module now declares "BYPRODUCTS" for the downloaded file for generated "download" steps. Previously, if multiple external projects downloaded to the same file, hash verification could fail. Now, when using the Ninja Generators, this scenario is detected and Ninja will raise an error stating that multiple rules generate the same file.
  • The "FetchContent" module's "FetchContent_Declare()" command gained an "EXCLUDE_FROM_ALL" option, which propagates through to the "add_subdirectory()" call made by "FetchContent_MakeAvailable()" for the dependency.
  • The "FindCURL" module gained a "CURL_USE_STATIC_LIBS" hint to select static libraries.
  • The "FindEXPAT" module gained an "EXPAT_USE_STATIC_LIBS" hint to select static libraries.
  • The "FindPkgConfig" module "pkg_get_variable()" command gained a "DEFINE_VARIABLES" option to pass variables to "pkg-config".
  • Generator Expressions:
  • The "generator expressions" "$ ", "$ ", and "$ " short-circuit to avoid unnecessary evaluation of parameters.
  • CTest:
  • CTest may now take a dynamically-generated resource spec file, which can be specified by the "GENERATED_RESOURCE_SPEC_FILE" test property.
  • Deprecated and Removed Features:
  • The "exec_program()" command, which has been deprecated since CMake 3.0, has been removed by policy "CMP0153". Use the "execute_process()" command instead.
  • The "Visual Studio 11 2012" generator has been removed.
  • The "Visual Studio 12 2013" generator is now deprecated and will be removed in a future version of CMake.
  • The "IOS_INSTALL_COMBINED" target property and corresponding "CMAKE_IOS_INSTALL_COMBINED" variable have been deprecated. Their functionality does not make sense on Apple Silicon hosts.
  • The "Xcode" generator will now issue a fatal error if the Legacy Build System has been selected for Xcode 14 and newer. Those Xcode versions dropped support for the Legacy Build System and expect the project to be set-up for their current Build System.
  • Other Changes:
  • Generated files, in targets using File Sets, are now considered private by default. Generated public headers must be specified using file sets. This allows Ninja Generators to produce more efficient build graphs. See policy "CMP0154".
  • The "find_library()", "find_path()", and "find_file()" commands no longer search in installation prefixes derived from the "PATH" environment variable. This behavior was added in CMake 3.3 to support MSYS and MinGW ("MSYSTEM") development environments on Windows, but it can search undesired prefixes that happen to be in the "PATH" for unrelated reasons. Users who keep some "/bin" directories in the "PATH" just for their tools do not necessarily want any corresponding "/lib" or "/include" directories searched. The behavior was reverted for non-Windows platforms by CMake 3.6. Now it has been reverted on Windows platforms too.
  • One may set the "CMAKE_PREFIX_PATH" environment variable with a semicolon-separated list of prefixes that are to be searched.
  • When using MinGW tools in a "MSYSTEM" environment on Windows, the "$MSYSTEM_PREFIX/local" and "$MSYSTEM_PREFIX" prefixes are now added to "CMAKE_SYSTEM_PREFIX_PATH".
  • The precompiled Linux "x86_64" binaries provided on cmake.org now require GLIBC 2.17 or higher.

New in CMake 3.27.9 (Nov 29, 2023)

  • Ben Boeckel (3):
  • Tests/FortranModules: add test for TARGET_OBJECTS-as-sources module usage
  • Tests/FortranModules: add test for TARGET_OBJECTS-as-linked-items module usage
  • Ninja: Revert exact collation dependencies for 3.27
  • Brad King (3):
  • Help: Document that CMP0149 should be set before project()
  • Help: Fix ctest(1) manual links to www.cdash.org
  • CMake 3.27.9
  • Kyle Edwards (1):
  • fileapi: Fix file sets' base directories relative to top source
  • Marc Chevrier (1):
  • Ninja: depfile: keep rules without dependencies

New in CMake 3.27.8 (Nov 16, 2023)

  • Ben Boeckel (4):
  • Tests/ObjectLibrary: fix comment
  • cmComputeLinkDepends: also copy the target from object link items
  • cmComputeLinkInformation: skip over linking to items for object purposes
  • Fortran: Restore support for TARGET_OBJECTS providing modules
  • Brad King (5):
  • curl: Backport SOCKS5 heap buffer overflow fix from curl 8.4.0
  • GetPrerequisites: Revert "Ignore relative paths printed by ldd"
  • cmCommonTargetGenerator: Factor out GetLinkedTargetDirectories loop body
  • cmComputeLinkInformation: Track targets named by TARGET_OBJECTS sources
  • CMake 3.27.8
  • Christoph Reiter (1):
  • FindOpenMP: Add support for openmp 5.1 (llvm 17) and 5.2

New in CMake 3.28.0 RC 1 (Oct 11, 2023)

  • New Features:
  • Languages:
  • C++ 20 named modules are now supported by Ninja Generators and Visual Studio Generators for VS 2022 and newer, in combination with the MSVC 14.34 toolset (provided with VS 17.4) and newer, LLVM/Clang 16.0 and newer, and GCC 14 (after the 2023-09-20 daily bump) and newer. See "cmake-cxxmodules(7)" for details.
  • "HIP" language code may now be compiled for NVIDIA GPUs using the NVIDIA CUDA Compiler (NVCC). See the "CMAKE_HIP_PLATFORM" variable.
  • Platforms:
  • On Apple platforms, ".xcframework" folders are now supported:
  • The "find_library()" command now finds ".xcframework" folders.
  • The "target_link_libraries()" command now supports linking against
  • a ".xcframework" folder.
  • The "IMPORTED_LOCATION" target property of an imported library target may now be the path to a ".xcframework" folder.
  • Apple visionOS and its "xros" and "xrsimulator" SDKs are now supported. Compiling for Apple visionOS can be requested by setting "CMAKE_SYSTEM_NAME" to "visionOS". See Cross Compiling for iOS, tvOS, visionOS, or watchOS for more information.
  • Presets:
  • "cmake-presets(7)" files now support schema version "8". It adds support for a "$schema" field.
  • Compilers:
  • Cray Clang-based compilers are now supported with "compiler id" "CrayClang".
  • The OrangeC compiler is now supported with "compiler id" "OrangeC".
  • Commands:
  • The "add_custom_command()" and "add_custom_target()" commands gained a "JOB_SERVER_AWARE" option.
  • The "cmake_host_system_information()" command gained a "MSYSTEM_PREFIX" query for the installation prefix of a MSYS or MinGW development environment on Windows hosts.
  • The "set_property()" command "TEST" mode gained a "DIRECTORY" option to set properties on tests in other directories.
  • The "set_tests_properties()" command gained a "DIRECTORY" option to set properties on tests in other directories.
  • The "get_property()" command "TEST" mode gained a "DIRECTORY" option to get properties on tests in other directories.
  • The "get_test_property()" command gained a "DIRECTORY" option to get properties on tests in other directories.
  • Variables:
  • The "CMAKE_CROSSCOMPILING_EMULATOR" environment variable was added to initialize the "CMAKE_CROSSCOMPILING_EMULATOR" cache variable.
  • The "CMAKE_HIP_PLATFORM" variable was added to specify the GPU platform for which HIP language sources are to be compiled ("amd" or "nvidia").
  • Properties:
  • On imported shared libraries, the "IMPORTED_IMPLIB" target property may now be used without "IMPORTED_LOCATION". This can be used to represent a stub library whose location should not be added as a runtime search path to dependents that link it.
  • The "IMPORTED_LOCATION" property of a macOS framework may now be a path to the ".framework" folder itself.
  • The "XCODE_EMBED_RESOURCES" target property was added to tell the "Xcode" generator what targets to put in the "Embed Resources" build phase.
  • Modules:
  • The "ExternalProject" module now includes the "BUILD_JOB_SERVER_AWARE" option for the "ExternalProject_Add()" command. This option enables the integration of the GNU Make job server when using an explicit "BUILD_COMMAND" with certain Makefile Generators. Additionally, the "ExternalProject_Add_Step()" command has been updated to support the new "JOB_SERVER_AWARE" option.
  • The "ExternalProject" module now declares "BYPRODUCTS" for the downloaded file for generated "download" steps. Previously, if multiple external projects downloaded to the same file, hash verification could fail. Now, when using the Ninja Generators, this scenario is detected and Ninja will raise an error stating that multiple rules generate the same file.
  • The "FetchContent" module's "FetchContent_Declare()" command gained an "EXCLUDE_FROM_ALL" option, which propagates through to the "add_subdirectory()" call made by "FetchContent_MakeAvailable()" for the dependency.
  • The "FindCURL" module gained a "CURL_USE_STATIC_LIBS" hint to select static libraries.
  • The "FindEXPAT" module gained an "EXPAT_USE_STATIC_LIBS" hint to select static libraries.
  • The "FindPkgConfig" module "pkg_get_variable()" command gained a "DEFINE_VARIABLES" option to pass variables to "pkg-config".
  • Generator Expressions:
  • The "generator expressions" "$ ", "$ ", and "$ " short-circuit to avoid unnecessary evaluation of parameters.
  • CTest:
  • CTest may now take a dynamically-generated resource spec file, which can be specified by the "GENERATED_RESOURCE_SPEC_FILE" test property.
  • Deprecated and Removed Features:
  • The "exec_program()" command, which has been deprecated since CMake 3.0, has been removed by policy "CMP0153". Use the "execute_process()" command instead.
  • The "Visual Studio 11 2012" generator has been removed.
  • The "Visual Studio 12 2013" generator is now deprecated and will be removed in a future version of CMake.
  • The "IOS_INSTALL_COMBINED" target property and corresponding "CMAKE_IOS_INSTALL_COMBINED" variable have been deprecated. Their functionality does not make sense on Apple Silicon hosts.
  • The "Xcode" generator will now issue a fatal error if the Legacy Build System has been selected for Xcode 14 and newer. Those Xcode versions dropped support for the Legacy Build System and expect the project to be set-up for their current Build System.
  • Other Changes:
  • Generated files, in targets using File Sets, are now considered private by default. Generated public headers must be specified using file sets. This allows Ninja Generators to produce more efficient build graphs. See policy "CMP0154".
  • The "find_library()", "find_path()", and "find_file()" commands no longer search in installation prefixes derived from the "PATH" environment variable. This behavior was added in CMake 3.3 to support MSYS and MinGW ("MSYSTEM") development environments on Windows, but it can search undesired prefixes that happen to be in the "PATH" for unrelated reasons. Users who keep some "/bin" directories in the "PATH" just for their tools do not necessarily want any corresponding "/lib" or "/include" directories searched. The behavior was reverted or non-Windows platforms by CMake 3.6. Now it has been reverted on Windows platforms too.
  • One may set the "CMAKE_PREFIX_PATH" environment variable with a semicolon-separated list of prefixes that are to be searched.
  • When using MinGW tools in a "MSYSTEM" environment on Windows, the "$MSYSTEM_PREFIX/local" and "$MSYSTEM_PREFIX" prefixes are now added to "CMAKE_SYSTEM_PREFIX_PATH".
  • The precompiled Linux "x86_64" binaries provided on cmake.org now require GLIBC 2.17 or higher.

New in CMake 3.27.7 (Oct 9, 2023)

  • Brad King (6):
  • Android: Require Clang 18 for -std=c++23
  • Tests: Clarify RunCMake.CTestTimeout case name
  • ctest: Restore support for --timeout values higher than default test timeout
  • Help: Document CMP0124 behavior on already-set variables
  • FindPostgreSQL: Add support for version 16
  • CMake 3.27.7
  • Orkun Tokdemir (1):
  • Linting: Fix empty evaluated genex

New in CMake 3.27.6 (Sep 22, 2023)

  • Ben Boeckel (5):
  • Tests/FortranModules: move issue 25112 fix from FortranOnly
  • Tests/FortranModules: add a test case for #25223
  • add_custom_target: Fix regression with Fortran sources
  • Tests/FortranModules: also test INTERFACE targets with Fortran sources
  • Tests/FortranModules: add a test for iface Fortran sources
  • Brad King (1):
  • CMake 3.27.6

New in CMake 3.27.4 (Aug 23, 2023)

  • Brad King (5):
  • cppdap: Update script to get version as of 2023-08-17
  • VS: Remove duplicate import in compiler id vcxproj
  • Help: Document cmake_minimum_required deprecation of old versions
  • FindZLIB: Fix extraction of two-component version number 1.3
  • CMake 3.27.4
  • Marc Chevrier (1):
  • list(INSERT): restore old behavior
  • Tarun Prabhu (1):
  • LLVMFlang-Fortran: Add flags for build types
  • cppdap Upstream (1):
  • cppdap 2023-08-17 (cc2f2058)

New in CMake 3.27.3 (Aug 17, 2023)

  • Brad King (3):
  • FindJNI: Restore support for macOS without Xcode
  • Utilities/Release: Remove unused documentation build settings
  • CMake 3.27.3
  • Marc Chevrier (1):
  • Apple Text Stubs (.tbd): various fixes
  • Raul Tambre (1):
  • Clang: use -std=c23 for Clang 18+
  • Sylvain Joubert (1):
  • Unity: use C-style comments to work both with C and C++
  • Vasily Ryabov (1):
  • FindPython: add support for Python 3.13
  • William Sciaroni (1):
  • GHS: Escape custom command comments
  • Đoàn Trần Công Danh (1):
  • testDebuggerNamedPipe: fix for cppdap with nlohmann_json

New in CMake 3.27.2 (Aug 11, 2023)

  • Adrien Ollier (1):
  • Help/guide/importing-exporting: Update line numbers in prose
  • Brad King (12):
  • Help: Document that if(EXISTS) requires paths to be readable
  • Source: Link libatomic when needed on Linux 32-bit ARM
  • VS: Revert "Add CMake input files to ZERO_CHECK"
  • Help: Add 3.27 release note on VS default SDK selection
  • ci: Suppress cmake.org html documentation search results for index entries
  • Tests: Remove redundant condition in RunCMake.GeneratorPlatform test
  • VS: Do not print empty Windows SDK version when none is selected
  • VS: Consolidate Windows SDK major version selection dispatch
  • VS: Teach CMAKE_GENERATOR_PLATFORM to use Windows 10 SDKs for
  • older versions
  • VS: Teach CMAKE_GENERATOR_PLATFORM to support Windows 8.1 SDK selection
  • VS: Select latest Windows SDK even when targeting Windows 8.1 and below
  • CMake 3.27.2
  • Christian Oyarzun (1):
  • FindJNI: Update for Xcode greater than 12.1 on macOS
  • Craig Scott (4):
  • Help: Fix indenting within TARGET_RUNTIME_DLLS genex docs
  • Help: Improve formatting and cross-references for DEPENDS_EXPLICIT_ONLY
  • Help: Improve formatting and fix wording for ENABLE_EXPORTS
  • cmLocalGenerator: Fix trivial spelling error in code comment
  • Evan Wilde (1):
  • file(GENERATE): Restore INPUT|CONTENT parse checking
  • Marc Chevrier (2):
  • FindPython: Restore Python_SITE* values for versions below 3.10
  • cmList: Fix performance regression in append/prepend

New in CMake 3.27.1 (Jul 26, 2023)

  • Ben Boeckel (4):
  • Tests/FortranOnly: add a test case for issue #25112
  • Tests/RunCMake/CXXModules: add a test for issue #25112
  • cmComputeLinkInformation: track OBJECT library dependencies
  • cmTarget: Restore Fortran_PREPROCESS property initialization
  • Brad King (2):
  • FindOpenSSL: Prefer OPENSSL_ROOT_DIR only if non-empty
  • CMake 3.27.1
  • Kyle Edwards (1):
  • CTest: Fix regression in calculating test timeout
  • Tomoharu Kitawaki (1):
  • FindCUDAToolkit: Fix nvrtc_builtins library name
  • Zack Galbreath (1):
  • ctest: Update ctest_submit for CDash behavior change

New in CMake 3.26.5 (Jul 20, 2023)

  • Brad King (2):
  • Help: Restore project command docs for default languages and NONE
  • CMake 3.26.5
  • Craig Scott (3):
  • Sphinx: Specify encoding when opening files for title extraction
  • Sphinx: Modernize UTF-8 encoding handling when updating CMake.qhp
  • Tests: Always load presets schema as UTF-8
  • Daniel Brondani (1):
  • ARMClang: Fix computation of compiler semantic version patch level
  • Jared Dillard (1):
  • Utilities/Sphinx: Fix parallel documentation builds for 3.26
  • Raul Tambre (1):
  • CMakeDetermineCompilerABI: Avoid removing the flag after -Werror

New in CMake 3.26.4 (May 19, 2023)

  • Ben Boeckel (1):
  • FindPython: fix interpreter launcher variable spelling
  • Brad King (3):
  • Help: Remove duplicated word in COMPILE_OPTIONS target property docs
  • Ninja: Restore detection of msvc-wine showIncludes prefix
  • CMake 3.26.4
  • Even Rouault (1):
  • FindJNI: add Ubuntu specific paths for more recent JDK versions
  • Marc Chevrier (1):
  • Help: CMP0105 policy: clarifications
  • Robert Maynard (5):
  • FindCUDAToolkit: nvptxcompiler_static correctly specify dependencies
  • FindCUDAToolkit: Add dependency between cusparse and nvJitLink
  • FindCUDAToolkit: Fix nvrtc_static dependencies on Windows
  • FindCUDAToolkit: Add missing static library dependencies on pthread and libdl
  • FindCUDAToolkit: Support CUDA version extraction from version.json

New in CMake 3.26.3 (Apr 7, 2023)

  • Brad King (4):
  • VS: Remove extra try_compile argument in Intel Fortran check
  • Xcode: Fix detection of Swift compiler location for Xcode 14.3
  • Tests: Teach RunCMake to ignore Xcode DVTCoreDeviceEnabledState warnings
  • CMake 3.26.3

New in CMake 3.26.2 (Mar 31, 2023)

  • Brad King (4):
  • cmGlobalGenerator: Factor out helper to check target ordering
  • Ninja,Makefile: Restore Fortran module scanning in static library cycle
  • Ninja: Restore slash style for MinGW tools when extra languages are enabled
  • CMake 3.26.2
  • YR Chen (1):
  • Swift: Restore compatibility with old C++ driver

New in CMake 3.26.1 (Mar 24, 2023)

  • Brad King (13):
  • WriteBasicConfigVersionFile: Fix regression in ARCH_INDEPENDENT check
  • cmCxxModuleMapper: Remove redundant path conversion callbacks
  • cmCxxModuleMapper: Use value semantics in path conversion callback
  • cmGlobalNinjaGenerator: Factor out GNU-like command-line detection on Windows
  • cmGlobalNinjaGenerator: Detect GNU-like command-line for dyndep collator
  • cmLocalNinjaGenerator: De-duplicate condition for using 'cmd /C' on Windows
  • cmDyndepCollation: Drop outdated mentions of CXX_MODULE_INTERNAL_PARTITIONS
  • cmGlobalNinjaGenerator: Use forward slashes in clang modmap format on Windows
  • Tests: Comment RunCMake.Ninja ShowIncludes sample input languages
  • Clang: Record Clang 16.0 C++ modules flags only for GNU-like front-end
  • Ninja: Wrap rules using '>' shell redirection with 'cmd /C' on Windows
  • FindHDF5: Restore parallel HDF5 detection with only CXX enabled
  • CMake 3.26.1
  • Marc Chevrier (1):
  • FindPython: ensure Stable ABI is correctly handled
  • YR Chen (1):
  • Ninja: Restore detection of clang-cl showIncludes prefix
  • scivision (1):
  • FindMatlab: add version/release map for R2023a

New in CMake 3.25.3 (Mar 9, 2023)

  • Ben Boeckel (1):
  • Ninja: require Ninja 1.11 for C++ module support
  • Brad King (6):
  • Android: Provide CMAKE_ANDROID_NDK_VERSION with NDK legacy toolchain file
  • curl: Backport upstream curl fixes for no_proxy to CMake 3.25 release
  • ExternalProject: Restore driving install through build system
  • GoogleTest: Restore suite name for type-parametrized tests
  • file(INSTALL): Fix file ownership regression when running as root on macOS
  • CMake 3.25.3
  • Kefu Chai (1):
  • FindOpenSP: Use pkg-config only as hints for main code path
  • Marc Chevrier (1):
  • FindPython: Policy CMP0007 must be set to NEW

New in CMake 3.26.0 RC 1 (Feb 3, 2023)

  • The “ASM_MARMASM” language was added to support the Microsoft ARM assembler language.
  • CMake now writes a YAML log of configure-time checks to “CMakeFiles/CMakeConfigureLog.yaml” under the top of the build tree. See the “cmake-configure-log(7)” manual.
  • The “cmake-file-api(7)” “codemodel” version 2 “target” object gained a new “fileSets” field and associated “fileSetIndex” field to “sources” objects.
  • The “$” generator expression was added to prevent usage requirements from being exported to dependent projects.
  • Language Standard Flags, such as “-std=c++11”, when generated due to “target_compile_features()” or “CMAKE__STANDARD”, are now placed before flags added by “target_compile_options()”, rather than after them.
  • The top-level “project()” call will now emit an author warning if the documented command order in relation to “cmake_minimum_required()” is not respected.

New in CMake 3.25.2 (Jan 20, 2023)

  • Andrey Vostrikov (1):
  • CheckSymbolExists: Restore newline at end of test source
  • Brad King (14):
  • Utilities/Release: Use explicit digest for Win7-compatible signature
  • Help: Clarify SYSTEM property default for imported targets
  • gitlab-ci: replace '$os' tags with '$os-x86_64' on 3.25 release branch
  • gitlab-ci: drop unnecessary linux kernel version tag on 3.25 release branch
  • ccmake: Restore compilation with AIX curses.h
  • ASM_MASM: Populate MSVC debug information format abstraction table
  • VS: Do not enable ASM_MASM debug information unless requested
  • gitlab-ci: update macOS jobs to use Xcode 14.2
  • Tests: Fix CTest.UpdateGIT under repo-local defaultBranch config
  • try_run: Avoid crash in keyword-dispatched signature when cross-compiling
  • Restore implicit include directory extraction for adaptive relative paths
  • IntelLLVM: Avoid unnecessary -Qstd=c++11 flag on Windows
  • Help: Restore cmake-buildsystem(7) header-only library example
  • CMake 3.25.2
  • Craig Scott (3):
  • FetchContent: Don't pass SYSTEM through to sub-build
  • Help: Clarify and update SYSTEM-related docs
  • Code comments: Fix trivial typos
  • Marc Chevrier (2):
  • Help: Add version information for SYSTEM option of add_subdirectory
  • Help: string(JSON): avoid duplicate labels
  • Michael Hirsch (2):
  • IntelLLVM: Avoid finding not-yet-supported icpx on Windows
  • Help: Clarify compiler id distinction between Intel Classic and IntelLLVM
  • Robert Maynard (2):
  • CUDA: Add support for cuda_std_20 for nvcc 12.0+
  • FindCUDAToolkit: Handle CUDA::nvToolsExt not existing
  • leha-bot (2):
  • zlib: Fix typo in mangling the crc32() function
  • FindBoost: Add Boost 1.81 support

New in CMake 3.25.0 (Dec 1, 2022)

  • New Features:
  • Presets:
  • The cmake-presets(7) schema version has been bumped to 6.
  • The cmake-presets(7) format now supports a packagePresets field to specify presets for cpack --preset.
  • The cmake-presets(7) format now supports a workflowPresets field to specify presets for cmake --workflow.
  • The cmake-presets(7) format now supports an outputJUnitFile field to specify JUnit output in test presets.
  • Languages:
  • The Compile Features functionality is now aware of C++26, and defines a cxx_std_26 meta-feature. C++26 compiler modes may also be specified via the CXX_STANDARD, CUDA_STANDARD, HIP_STANDARD, or OBJCXX_STANDARD target properties.
  • CUDA language support now includes device link-time optimization when using nvcc. The CMAKE_INTERPROCEDURAL_OPTIMIZATION variable and the associated INTERPROCEDURAL_OPTIMIZATION target property will activate device LTO.
  • Command-Line:
  • A cmake --workflow --preset mode was added to drive sequences of configure, build, test, and package operations through a single command.
  • The cmake -E capabilities command gained a new tls field that tells whether or not TLS is enabled.
  • The cmake -E env command-line tool gained a --modify flag to support ENVIRONMENT_MODIFICATION operations.
  • The cmake --debug-trycompile option now prints log messages reporting the directory in which each try-compile check is done.
  • Compilers:
  • Support for the Tasking compiler toolsets (SmartCode, TriCore, Standalone: ARM, MCS, 8051) was added with compiler id Tasking. See the CMAKE_TASKING_TOOLSET variable.
  • Commands:
  • The add_subdirectory() command gained a SYSTEM option to enable the SYSTEM directory property in the subdirectory.
  • The block() and endblock() commands were added to manage specific scopes (policy or variable) for a contained block of commands.
  • The cmake_language() command gained a new GET_MESSAGE_LOG_LEVEL sub-command. It can be used to query the current message logging level.
  • The find_file(), find_path(), find_library(), and find_program() commands gained a VALIDATOR option to specify a function to be called for each candidate item to validate it.
  • The find_package() command now considers paths of the form /*/(cmake|CMake)/*/ when searching for package configuration files.
  • The return() command gained a PROPAGATE option to propagate variables to the scope to which control returns. See policy CMP0140.
  • The try_compile() and try_run() commands gained new signatures that more consistently use keyword dispatch and do not require a binary directory to be specified. Additionally, these signatures use a unique directory for each invocation, which allows multiple outputs to be preserved when using cmake --debug-trycompile.
  • The try_compile() and try_run() commands gained the option NO_CACHE to store results in normal variables.
  • The try_run() command gained RUN_OUTPUT_STDOUT_VARIABLE and RUN_OUTPUT_STDERR_VARIABLE options to capture stdout and stderr separately from the output of the compiled program.
  • Variables:
  • The BSD and CMAKE_HOST_BSD variables are now set to a string value when the target or host system is BSD, respectively.
  • The LINUX and CMAKE_HOST_LINUX variables are now set to true when the target or host system is Linux, respectively.
  • The CMAKE_MSVC_DEBUG_INFORMATION_FORMAT variable and MSVC_DEBUG_INFORMATION_FORMAT target property were introduced to select the debug information format for compilers targeting the MSVC ABI. See policy CMP0141.
  • The CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION variable and corresponding XCODE_SCHEME_ENABLE_GPU_API_VALIDATION target property were added to tell the Xcode generator what to put in the scheme's Metal: API Validation setting.
  • The CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION variable and corresponding XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION target property were added to tell the Xcode generator what to put in the scheme's Metal: Shader Validation setting.
  • The CMAKE_XCODE_SCHEME_LAUNCH_MODE variable and corresponding XCODE_SCHEME_LAUNCH_MODE target property were added to tell the Xcode generator what to put in the scheme's "Launch" mode setting.
  • The CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION variable and corresponding XCODE_SCHEME_LAUNCH_CONFIGURATION target property were added to tell the Xcode generator what configuration to put in the scheme's Launch action.
  • Properties:
  • The _COMPILER_LAUNCHER target property now supports generator expressions.
  • The EXPORT_NO_SYSTEM target property was added to specify that install(EXPORT) and export() commands will generate na imported target with SYSTEM property OFF.
  • The SYSTEM target property was added to specify whether a target should be treated as a system library (i.e. its include directories are automatically SYSTEM when compiling consumers). If not set, the default is the previous behavior: on for imported targets and off for other targets.
  • The SYSTEM directory property was added to initialize the SYSTEM target property for targets created in that directory.
  • Modules:
  • The FetchContent module FetchContent_Declare() command gained a SYSTEM option to enable the SYSTEM directory property in the subdirectory.
  • The FindCUDAToolkit module now provides a target for nvtx3 for CUDA 10.0+, which supersedes nvToolsExt. A deprecation warning is emitted when using nvToolsExt if the project requires CMake 3.25 and CUDA 10.0+ is used.
  • The FindDoxygen module's version handling has been improved:
  • Multiple candidate installations will now be considered, if needed, to satisfy version constraints. Previously, only the first one encountered would be considered.
  • Version ranges are supported.
  • Variations in the version format reported by Doxygen are now tolerated (e.g. a trailing git commit hash).
  • The FindOpenAL module now provides an imported target.
  • The FindOpenSP module was added to find the OpenSP library.
  • The FindVulkan module gained support for new components:
  • dxc:
  • DirectX Shader Compiler.
  • volk:
  • Volk open-source vulkan meta-loader.
  • CPack:
  • The CPack Archive Generator gained a new CPACK_ARCHIVE_FILE_EXTENSION variable to control the package file name extension.
  • The CPack NSIS Generator gained two new variables CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS and CPACK_NSIS_EXECUTABLE_POST_ARGUMENTS to provide arguments to the nsis executable invocation.
  • The CPack module gained the CPACK_READELF_EXECUTABLE, CPACK_OBJCOPY_EXECUTABLE, and CPACK_OBJDUMP_EXECUTABLE variables to control the locations of binutils used by cpack(1).
  • Deprecated and Removed Features:
  • The IMPORTED_NO_SYSTEM target property has been deprecated in favor of SYSTEM and EXPORT_NO_SYSTEM.
  • The Visual Studio 10 2010 generator has been removed.
  • The Visual Studio 11 2012 generator is now deprecated and will be removed in a future version of CMake.
  • Other Changes:
  • The SSL_CERT_FILE and SSL_CERT_DIR environment variables can now be used to override where to find certificate authorities for TLS/SSL operations.
  • If _CLANG_TIDY includes a -p argument, the full compiler command line is no longer appended after --.
  • The Xcode generator no longer adds the per-config suffix $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to library search paths. See policy CMP0142.
  • Updates:
  • Changes made since CMake 3.25.0 include the following.

New in CMake 3.25.0 RC 3 (Nov 2, 2022)

  • Alex Turbov (3):
  • Help: Reformat find_package search paths as Sphinx tables
  • Help: Mention CMake version for a recently-added `find_package` search path
  • Help: Add more CLI `:option:` references to various pages
  • Anthony Roberts (1):
  • Tests: Fix RunCMake.VsDotnetSdk with VS >= 17.3 on ARM64
  • Aurelien Regat-Barrel (1):
  • file(DOWNLOAD): Fix LOG with EXPECTED_HASH on download failure
  • Brad King (21):
  • Tests: Explicitly allow usage of git file-based protocol in test cases
  • cm/filesystem: Fix crash with pre-C++11 std::string GNU ABI in C++17
  • Tests: Avoid running C++11 test on GNU < 4.7
  • Xcode: Evaluate Swift compile definitions separately
  • VS: Fix crash finding vswhere on 32-bit Windows
  • Ninja: Restore support for non-ascii paths on Windows with ninja

New in CMake 3.24.3 (Nov 2, 2022)

  • Brad King (16):
  • cmStringAlgorithms: Add functions to parse strings to long long integers
  • file: Avoid strange istringstream crash in cmake.org binaries on Alpine Linux
  • Xcode: Drop CMAKE_INTDIR= definition in Swift targets
  • Tests: Update RunCMake.XcodeProject iOS cases for Xcode 14.0
  • gitlab-ci: update macOS jobs to use Xcode 14.0
  • COMPILE_WARNING_AS_ERROR: Fix internal formatting of options table
  • LLVMFlang: Add support for mixed-language linking with Fortran
  • Help: Add versionadded for string(TIMESTAMP) %f specifier
  • try_compile: Honor CMP0128 setting in test project
  • Tests: Explicitly allow usage of git file-based protocol in test cases
  • cm/filesystem: Fix crash with pre-C++11 std::string GNU ABI in C++17
  • Tests: Avoid running C++11 test on GNU < 4.7
  • VS: Fix crash finding vswhere on 32-bit Windows
  • Ninja: Restore support for non-ascii paths on Windows with ninja

New in CMake 3.25.0 RC 2 (Nov 2, 2022)

  • Andrew Kaster (1):
  • SerenityOS: Unset CMAKE_DL_LIBS because LibDl no longer exists
  • Brad King (6):
  • Help: Fix typo that crashes older pygments lexers
  • Help: Add versionadded for string(TIMESTAMP) %f specifier
  • Help: Clarify historical-only role of CMAKE_ANDROID_API variable
  • try_compile: Honor CMP0128 setting in test project
  • Help: Clarify how language-specific flag environment values are used
  • CMake 3.25.0-rc2
  • Ed Hartley (1):
  • MinGW Makefiles: Quote UNC paths on command lines
  • Kyle Edwards (4):
  • CMakePresets.json: Disallow extra properties in test output schema
  • Tests: Add test for outputLogFile in CMakePresets.json
  • CMakePresets.json: Add outputJUnitFile to test presets schema
  • CTest: Add support for outputJUnitFile in presets
  • Marc Chevrier (1):
  • Xcode: ensure framework with custom output directory can be consumed
  • Robert Maynard (2):
  • FindCUDAToolkit: cuFile_rdma_static needs to link to cuFile_static
  • CUDA: Revert "Always mark cuda toolkit as system include"
  • Sergiu Deitsch (2):
  • FindJNI: replace CMAKE_ANDROID_API by CMAKE_SYSTEM_VERSION
  • Android: Avoid searching API level directories matching architecture bitness
  • Steven (1):
  • Tutorial: Fix variable name typo in step 1
  • leha-bot (3):
  • FindGLUT: Use pkg-config's results as HINTS for normal search
  • FindGLUT: Drop the now-unnecessary ALLOW_SYSTEM_CFLAGS logic
  • FindGLUT: Drop the now-unnecessary exclusion of pkg-config for multiconfig

New in CMake 3.25.0 RC 1 (Oct 13, 2022)

  • The “find_file()”, “find_path()”, “find_library()”, and “find_program()” commands gained a “VALIDATOR” option to specify a function to be called for each candidate item to validate it.
  • The “try_compile()” and “try_run()” commands gained new signatures that more consistently use keyword dispatch and do not require a binary directory to be specified. Additionally, these signatures use a unique directory for each invocation, which allows multiple outputs to be preserved when using “cmake –debug-trycompile”.
  • The “add_subdirectory()” command gained a “SYSTEM” option to enable the “SYSTEM” directory property in the subdirectory.
  • The “block()” and “endblock()” commands were added to manage specific scopes (policy or variable) for a contained block of commands.
  • The “return()” command gained a “PROPAGATE” option to propagate variables to the scope to which control returns. See policy “CMP0140”.
  • The “BSD” and “CMAKE_HOST_BSD” variables are now set to a string value when the target or host system is BSD, respectively.
  • The “LINUX” and “CMAKE_HOST_LINUX” variables are now set to true when the target or host system is Linux, respectively.
  • The “CMAKE_MSVC_DEBUG_INFORMATION_FORMAT” variable and “MSVC_DEBUG_INFORMATION_FORMAT” target property were introduced to select the debug information format for compilers targeting the MSVC ABI. See policy “CMP0141”.

New in CMake 3.24.2 (Sep 14, 2022)

  • Albert Astals Cid (1):
  • automoc: avoid more compiler warnings in linker-warning-silencing code
  • Ben Boeckel (1):
  • ExternalProject: note the default of `GIT_TAG` being `master`
  • Brad King (8):
  • Help: Clarify that variable references may use cache entries
  • ci: use CMake 3.24.1
  • gitlab-ci: Use separate MSVC toolset specification for packaging jobs
  • gitlab-ci: Update non-packaging Windows builds to MSVC 14.33 toolset
  • Tests: Teach RunCMake.SymlinkTrees to tolerate CCACHE_BASEDIR
  • automoc: revert attempts to silence linker warning on macos
  • Tests: Add cases covering bad ctest output truncation types
  • CMake 3.24.2
  • Craig Scott (6):
  • Help: Add missing closing quote on C++ example
  • Help: Add crossrefs to ctest output control options
  • Help: Fix typos, grammar and formatting in CMP0134 policy docs
  • Help: Fix wrong casing of GTest in FetchContent integration example
  • FetchContent: Fix unsetting wrong variable name after provider returns
  • FetchContent: Ignore EXACT for redirected find_package() calls
  • Daniel Scharrer (1):
  • FindZLIB: fix CMAKE_FIND_LIBRARY_PREFIXES being unset when it was empty
  • Frank Winklmeier (2):
  • RunCMakeTest: fix Truncation test definition
  • ctest: print error for invalid CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION
  • Gilles Gouaillardet (1):
  • FortranCInterface: Add support for LLVMFlang mangling
  • Kargatum (1):
  • FindBoost: Add support for Boost 1.80
  • Kyle Edwards (2):
  • Tests: Fix VS10Project SourceGroupTreeCMakeLists check
  • FILE_SET: Fix source group detection
  • Marc Chevrier (4):
  • Xcode: Fix erroneous MACOSX_BUNDLE link
  • Help: cmake-developer: Add section for Windows registry access.
  • renames method FinalizeTargetCompileInfo() in FinalizeTargetConfiguration().
  • Check link libraries properties: fix performances regression
  • Mathieu Malaterre (1):
  • Help: Fix typo in FetchContent example, extras should read extra
  • Robert Maynard (4):
  • FindCUDAToolkit: Search the cuda toolkit include path for cupti
  • cmFindBase: Refactor CMAKE_FIND_USE_INSTALL_PREFIX handling
  • CMAKE_FIND_USE_INSTALL_PREFIX considers CMAKE_STAGING_PREFIX
  • FindCUDAToolkit: Correctly state cusolver and cublas dependencies
  • parkesb (1):
  • FindPostgreSQL: Add brew-style directories to search path

New in CMake 3.24.1 (Aug 22, 2022)

  • Albert Astals Cid (1):
  • automoc: avoid compiler warnings in linker-warning-silencing code
  • Brad King (7):
  • FindThreads: Skip check for -pthread flag when targeting the MSVC ABI
  • IPO: Do not use -flto=auto with GCC 10.x on Windows
  • export: Restore exclusion of private shared library dependencies from checks
  • MinGW: Restore using windres when toolchain-prefixed name is not available
  • FindVulkan: Restore tolerance of unknown FATAL_ERROR component
  • Help: Add 3.24 release note about FindVulkan component enforcement
  • CMake 3.24.1
  • Craig Scott (3):
  • TI compiler: Add support for COMPILE_WARNING_AS_ERROR target property
  • Help: List compiler IDs supported by COMPILE_WARNING_AS_ERROR
  • Help: A missing cross-reference to --compile-no-warning-as-error

New in CMake 3.23.3 (Jul 29, 2022)

  • Brad King (10):
  • cmake-gui: Restore support for internationalization with Qt5 on Windows
  • Tutorial: Simplify logic checking for cmath functions
  • ci: update to use ninja 1.11.0
  • Xcode: Use ad-hoc signing during compiler id on macOS
  • Xcode: Suppress "Run Script" build phase warning during compiler id
  • Tests: Teach RunCMake to ignore Xcode DVTSDK warnings
  • ExternalProject: Fix regression in stamp creation for Xcode+iOS
  • Utilities/Release: Update macOS notarization script to use notarytool
  • gitlab-ci: update macOS jobs to use Xcode 13.4
  • CMake 3.23.3
  • Eisuke Kawashima (1):
  • FindLAPACK: Add '-fortranlibs' flag only with NVHPC/PGI compilers
  • Igor Molchanov (1):
  • LCC: link with -lgfortran instead of -llfortran since 1.26.03
  • Kyle Edwards (2):
  • install(EXPORT): Check for missing file sets at generate time
  • cmGlobalGenerator: Only compute build files for all targets
  • Robert Maynard (2):
  • cmake: simplify to a single source of truth of working mode
  • cmake: In -P mode ignore extra paths on the command line

New in CMake 3.24.0 RC 1 (Jun 16, 2022)

  • The “FetchContent” module and the “find_package()” command now support integration capabilities.
  • The “LINK_LIBRARY” generator expression was added to manage how libraries are specified during the link step.
  • The Visual Studio Generators now support “SYSTEM” headers when using VS 2019 Update 11 or later.
  • “cmake(1)” gained the “–fresh” command-line option to remove any existing “CMakeCache.txt” file and associated “CMakeFiles/” directory, when configuring a build tree, thus starting a new configuration as if the build tree were freshly created.
  • The “CMAKE_COMPILE_WARNING_AS_ERROR” variable and corresponding “COMPILE_WARNING_AS_ERROR” target property were added to enable compilation with a compiler-specific flag to treat warnings as errors, such as “-Werror”.
  • The “find_file()”, “find_path()”, “find_library()”, “find_program()”, and “find_package()” commands gained the “NO_CMAKE_INSTALL_PREFIX” option to control searching “CMAKE_INSTALL_PREFIX”.
  • The “find_file()”, “find_path()”, “find_library()”, “find_program()”, and “find_package()” commands gained the ability to specify which Windows Registry views must be queried.

New in CMake 3.23.2 (May 26, 2022)

  • Alex Turbov (1):
  • CPack/NuGet: Restore component packaging on Windows
  • Ben Boeckel (2):
  • cmInstallCommand: tweak error message
  • cmExportBuildFileGenerator: handle genex-wrapped source paths
  • Brad King (20):
  • ci: use CMake 3.23.1
  • CheckLinkerFlag: Catch linker warning when the checked flag is ignored
  • CheckCompilerFlags: Revert "Catch linker warning about ignored flags"
  • Tests: Teach RunCMake to ignore Xcode extension point warnings
  • gitlab-ci: update macOS jobs to use Xcode 13.3
  • FindBoost: Add support for Boost 1.79
  • Utilities/Sphinx: Clarify names of variables listing post-sphinx commands
  • Utilities/Sphinx: Add variables listing pre-sphinx commands
  • Tutorial: Provide a source archive when published on cmake.org
  • cmGeneratedFileStream: Do not remove empty path
  • FindPkgConfig: Fix preservation of ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS}
  • gitlab-ci: Update Windows builds to MSVC 19.32 toolset
  • VS: Fix CUDA CodeGeneration field for CMAKE_CUDA_ARCHITECTURES=OFF
  • FortranCInterface: Fix failure with gfortran 12 and Clang
  • Clang: Use -imsvc flag without space to support Clang tools
  • file(GET_RUNTIME_DEPENDENCIES): Support VS 2022 without VS 2019
  • libarchive: Update script to get 3.5.3
  • libarchive: include archive_platform.h first in blake2s sources
  • libarchive: Update build within CMake after changes in 3.5.3
  • CMake 3.23.2
  • Craig Scott (1):
  • productbuild: Restore CPACK_PACKAGEMAKER_CHOICES variable
  • Eisuke Kawashima (1):
  • Help: Document when HIP_COMPILER generator expressions were added
  • Gregor Jasny (1):
  • Tests: Ignore all classes in Xcode internal objc warnings
  • Jean-Philippe Lebel (1):
  • CPackIFW: Fix regression in icon file names
  • Kyle Edwards (2):
  • FILE_SET: Make INTERFACE libraries with HEADER_SETS participate in buildsystem
  • Help: Remove references to MODULE in $ doc
  • LibArchive Upstream (1):
  • LibArchive 2022-02-08 (673c1eae)
  • Marc Chevrier (3):
  • FindPython: Add support for pypy v7.3.9 and uppers
  • FindPython: fix typo error
  • FindJava, FindJNI: ensure correct handling of versions on Windows
  • Martin Duffy (4):
  • Help/guide: Fix wrong header file reference
  • ccmake: Move Initialization of Fields Inline
  • ccmake: Fix crash when deleting all cache entries
  • ccmake: Fix infinite loop during invalid search
  • Michael Hirsch (1):
  • FindPython: add support for Python 3.12
  • friendlyanon (1):
  • CMakePackageConfigHelpers: Fix note about version files supporting ranges

New in CMake 3.23.1 (Apr 13, 2022)

  • Ben Boeckel (3):
  • CMakeDependentOption: improve documentation
  • cmFileSet: store visibility with the fileset
  • cmTarget: make HEADER_SETS and INTERFACE_HEADER_SETS read-only
  • Brad King (19):
  • GNUInstallDirs: Revert "Apply Debian multiarch LIBDIR to more prefixes"
  • Help: Clarify when policy CMP0112 takes effect
  • gitlab-ci: clarify name of package upload job template
  • gitlab-ci: distinguish release and development pipeline schedules
  • gitlab-ci: add sanity check to upload jobs
  • gitlab-ci: simplify package pipeline job conditions
  • gitlab-ci: start release package pipelines manually
  • Utilities/Sphinx: Add undocumented option to build docs for cmake.org
  • Utilities/Sphinx: Add option to build outdated version banner for cmake.org
  • Utilities/Sphinx: Add OpenSearch link to html page headers on cmake.org
  • gitlab-ci: consolidate jobs for cmake.org/cmake/help/git-{master,stage} docs
  • gitlab-ci: update cmake.org documentation in release package pipeline
  • gitlab-ci: Add objects.inv to cmake.org html documentation
  • gitlab-ci: Build qthelp-format release documentation for cmake.org
  • Help: Add "Updates" section header in 3.22 release notes
  • Utilities/Sphinx: Update qthelp generation to qhelpgenerator
  • CheckCompilerFlag: Fix regression in locale environment preservation
  • Help: Document that target_sources defines [INTERFACE_]HEADER_SETS
  • CMake 3.23.1
  • Craig Scott (3):
  • CheckSourceCompiles: Avoid linker warning with -fembed-bitcode
  • Help: Correct/add missing details for CheckPIESupported
  • CheckPIESupported: Prevent separate output lines running together
  • Cristian Adam (1):
  • PCH: Fix Xcode non-pch language exclusion
  • Eugene Shalygin (1):
  • Help: Fix typo in install command documentation
  • Even Rouault (1):
  • FindPostgreSQL: add support for PostgreSQL 14
  • Gregor Jasny (1):
  • Tests: Ignore all classes in Xcode internal objc warnings
  • Kyle Edwards (1):
  • FILE_SET: Forbid adding header sets to Apple FRAMEWORK libraries
  • Robert Maynard (2):
  • CUDA: Ninja generator generates valid compile database
  • cmake: --list=presets=[type] doesn't generate incorrect warnings
  • Tobias Nießen (2):
  • Help: Fix string(JSON ... LENGTH ...) signature
  • Help: Add that CMAKE_CACHEFILE_DIR might not be defined

New in CMake 3.22.3 (Mar 7, 2022)

  • Alex Turbov (1):
  • while: Restore tolerance of condition error
  • Brad King (11):
  • FindMPI: Place static first in mpi test source
  • NMake: Document response file encoding heuristic in a comment
  • NMake: Use UTF-8 BOM in response files only with MSVC tooling
  • message: Restore explicit flushing of messages on stderr
  • gitlab-ci: enable assertions on fedora34-ninja jobs
  • CompilerId: Fix default extensions check for Clang targeting MSVC
  • ABI
  • Intel: Add dependencies on system header files on Windows
  • Tests: Add missing guards on Qt4 and Qt5 tests
  • BinUtils: Avoid llvm-ar on Apple platforms
  • Tests: Simplify RunCMake.{if,while} unbalanced parenthesis cases
  • CMake 3.22.3
  • Eugene Shalygin (1):
  • install(TARGETS): Restore per-export INCLUDES DESTINATION
  • Heiko Thiel (1):
  • Help: Add MSVC_TOOLSET_VERSION value for v143 toolset
  • Raul Tambre (1):
  • IAR/CXX: Fix compatibility with CMP0057 OLD
  • Silvio Traversaro (1):
  • FindGLUT: Use link directories for libs from pkg-config
  • Tom M (1):
  • FindMatlab: Fix version detection for MCR >= 9.10
  • William R. Dieter (1):
  • IntelLLVM: Add dependencies on system header files on Windows
  • friendlyanon (1):
  • Help: Drop incorrect versionadded for try_compile result variable
  • Mehdi Chinoune (1):
  • FindGSL: Improve version extraction regex

New in CMake 3.22.2 (Jan 25, 2022)

  • Benjamin Sluis (1):
  • VS: Remove the '/guard:cf' flag from v143 link flag table
  • Björn Esser (1):
  • FortranCInterface: Fix compatibility with GCC gfortran 12 LTO
  • Brad King (10):
  • FindBoost: Add support for Boost 1.78
  • ci: Explicitly disable Java tests on Windows
  • FindGLUT: Provide legacy GLUT_INCLUDE_DIR result in pkg-config code path
  • FindBoost: Do not warn about now-supported version 1.78
  • ci: Explicitly disable Java tests on VS builds
  • file: Restore error capture in undocumented READ_ELF mode
  • MSVC: Use -external:I flag without space to support Clang tools
  • Help: Add missing 3.22.1 section to the release notes
  • gitlab-ci: update macOS jobs to use Xcode 13.2
  • CMake 3.22.2
  • Jukka Jalkanen (1):
  • ASM: Fix identification of armasm 6.17+
  • Oleg Sidorkin (1):
  • FindBoost: Add support for Python 3.10
  • Raul Tambre (4):
  • XL: Detect default extensions mode for legacy compiler
  • CMP0128: Prefix test names with mode
  • CMP0128: Avoid test code duplication
  • CMP0128: Add flag in OLD mode even when standard matches the default
  • Ryan Prichard (1):
  • Android: Fix linking android_support for pre-21 system STL
  • Tomáš Hrnciar (1):
  • FindPython: Add support for Python 3.11
  • William R. Dieter (1):
  • VS: Fix detecting icx.exe with Intel Compiler toolsets newer than 2021

New in CMake 3.22.1 (Dec 8, 2021)

  • Ben Boeckel (2):
  • gitlab-ci: fix comment typo
  • gitlab-ci: shorten job prefixes
  • Brad King (15):
  • ci: add gmock to Debian base images
  • try_compile: Do not use CMAKE_BUILD_TYPE or CMAKE_CONFIGURATION_TYPES env vars
  • Help: Document more use cases for CMAKE_POLICY_DEFAULT_CMPNNNN
  • Help: Suggest CMAKE_POLICY_DEFAULT_CMP0077 in CMP0077 docs
  • Help: Suggest CMAKE_POLICY_DEFAULT_CMP0126 in CMP0126 docs
  • gitlab-ci: update macOS jobs to use Xcode 13.1
  • CompilerId: Restore support for classic C by avoiding C++ style comments
  • cmSystemTools: Remove unnecessary mark-as-used casts to void
  • file(RPATH): Restore tolerance of unknown formats if new RPATH is empty
  • FindPkgConfig: Restore finding pkg-config before pkgconf
  • VS: Revert "Add missing label in C# project-build events"
  • ci: Enable more VS tests that use managed code
  • Utilities/Release: Add script to sign/notarize macOS application bundle
  • HIP: Enable CMAKE_EXPORT_COMPILE_COMMANDS for HIP
  • CMake 3.22.1
  • Christoph Reiter (1):
  • mingw: fix calling convention for strftime()
  • Craig Scott (4):
  • Help: ENVIRONMENT_MODIFICATION path_list_... separator is based on host
  • Help: Use definition list for allowed values of CMAKE_INSTALL_MODE
  • Help: Explicitly state that if(ENV{some_var}) is always false
  • Help: Be more explicit about the behavior of if()
  • Felix Lelchuk (1):
  • Help: Clarify CMAKE_INSTALL_MODE documentation
  • Marc Chevrier (2):
  • UseSWIG: ensure directory for depfile exists
  • FindPython: clarify static libraries hint usage
  • Raphael Gozzo (1):
  • CMakeParseLibraryArchitecture: Fix parsing /lib/ implicit object path
  • Robert Maynard (1):
  • GNUInstallDirs: Prefer system lib64 over conda lib when ambiguous

New in CMake 3.21.4 (Oct 28, 2021)

  • Ben Boeckel (2):
  • Tests/RunCMake/Autogen: test CMP0111 behavior
  • cmQtAutoGenInitializer: support IMPLIB-only imported targets
  • Brad King (11):
  • Tests: Fix RunCMake.XcodeProject XcodeIOSInstallCombined cases for Xcode 13.0
  • gitlab-ci: update macOS jobs to use Xcode 13.0
  • bootstrap: Enable cmake_language command to support cmake-gui with Qt 6.2
  • ci: Enable CTest.Update{CVS,SVN,HG} tests
  • MSVC: Tolerate cxx_std_23 feature on older compiler versions
  • zstd: Backport fix for SIGBUS on armv6 from zstd 1.5.0
  • IRSL: Fix discovery of VS 2022 v143 toolset redistributables for preview 5
  • Source: Fix typo in _WIN32 preprocessor checks
  • BinUtils: Avoid llvm-strip versions older than Clang 11
  • VS: Update Visual Studio 17 2022 generator for the Release Candidates
  • CMake 3.21.4
  • Erlend E. Aasland (1):
  • CPack/IFW: Add support for QtIFW 4.1
  • Gregor Jasny (1):
  • Tests: Specify destination for Xcode scheme
  • Michael Hirsch (1):
  • FindMatlab: Add R2021b => 9.11 version
  • Robert Maynard (1):
  • NVHPC: only use '-MD' for the C and CXX languages
  • Seth R Johnson (1):
  • FortranCInterface: Fix regression in timestamp check
  • Sylvain Joubert (1):
  • TestDriver: Fix old-style-cast warning in C++ mode
  • Timo Röhling (1):
  • GNUInstallDirs: Fix misinterpretation of Debian Policy on LIBEXECDIR

New in CMake 3.21.3 (Sep 21, 2021)

  • Brad King (10):
  • FindBoost: Add support for Boost 1.77
  • MSVC: Fix MSVC_TOOLSET_VERSION for VS 2022 v143 toolset
  • IRSL: Add discovery of VS 2022 v143 toolset redistributables
  • gitlab-ci: Update Windows builds to MSVC 19.29-16.11 toolset
  • VS: Fix managed C++ project generation for VS 2022
  • VS: Update Visual Studio 17 2022 generator for Preview 4
  • HIP: Detect ROCm path earlier
  • HIP: Remove ROMClang compiler id and use Clang directly
  • HIP: Simplify detection of HIP runtime CMake package
  • CMake 3.21.3
  • Haibo Huang (1):
  • Android: Restore searching PATH for executables
  • Jean-Marc Hengen (1):
  • IAR: Restore support for projects not enabling policy CMP0057
  • Marc Chevrier (1):
  • FindPython: Ensure homebrew on Mac M1 is used
  • Martin Kojtal (1):
  • Ninja: fix ARMClang paths for Windows
  • Zack Galbreath (1):
  • HIP: Use 'rocm_agent_enumerator' to determine CMAKE_HIP_ARCHITECTURES
  • ulatekh (1):
  • KWSys: SystemTools: Ensure Windows Vista APIs are available before using them

New in CMake 3.21.2 (Aug 26, 2021)

  • Alexey Edelev (1):
  • AUTOUIC: Add test for cyclic dependency between UI headers and timestamp
  • Artur Samarin (1):
  • CPackRPM: avoid a spurious `;` in the `%pre` and other sections
  • with scripts
  • Ben Boeckel (2):
  • FindMPI: do not detect `-framework` as a compile flag
  • GNUInstallDirs: avoid unwanted variable dereference
  • Brad King (7):
  • VS: Fix assertion failure on INCLUDE_DIRECTORIES in INTERFACE libraries
  • VS: Fix /reference and /headerUnit flag table entries for v142 and v143
  • CheckLanguage: Avoid CMP0126 warning
  • AUTOUIC: Revert "Fix generating of dependency rules for UI header files"
  • VS: Add special case for '-T version=14.29.16.11' under VS 16.11
  • VS: Update Visual Studio 17 2022 generator for Preview 3.1
  • CMake 3.21.2
  • Craig Scott (2):
  • Help: Add missing versionadded annotation for CPACK_DMG_FILESYSTEM
  • Help: Fix unlinked mention of CMAKE_TOOLCHAIN_FILE
  • Cristian Adam (1):
  • BinUtils: Avoid searching CMAKE_PREFIX_PATH
  • Evan Miller (1):
  • macOS: Restore support for Mac OS X 10.4 (Tiger)
  • Jessica Hamilton (1):
  • Platform/Haiku: Remove the include-once behavior
  • Kyle Edwards (2):
  • CMakePresets: Check presets with their own file version
  • CTest: Reset multi-options to persistent multi-options
  • Marc Chevrier (3):
  • add_custom_command(DEPFILE) independent from CMAKE_DEPENDS_USE_COMPILER
  • Help: get_filename_component: fix version info for cmake_path
  • FindPkgConfig: Restore legacy behavior when CMP0126 is set to NEW
  • Michael Hirsch (1):
  • Help: cmake_path: add missing parameter
  • Robert Maynard (3):
  • NVHPC: Support 21.07 change to '-MD' where it behaves like gcc
  • NVHPC-CXX: Add support for C++20
  • NVHPC-C: Add support for C17
  • Thomas Bernard (1):
  • FindBinUtils: Fall back to ld for Clang without lld
  • WangBin (1):
  • Android: Fix NDK toolchain dir on arm64 mac
  • Raul Tambre (2):
  • CUDA/Clang: Fix separable compilation in non-root directories
  • with Makefiles
  • CUDA/Clang: Simplify --register-link-binaries logic
  • Đoàn Trần Công Danh (1):
  • Ninja: Revert accidental LINK_WHAT_YOU_USE impl for static libraries

New in CMake 3.21.1 (Jul 27, 2021)

  • Alexey Edelev (2):
  • AUTOUIC: Fix cyclic dependency between generated UI headers and timestamp
  • AUTOUIC: Fix generating of dependency rules for UI header files
  • Ben Boeckel (5):
  • ci: use CMake 3.21.0
  • Help/ctest_memcheck: mention `ctest_test` arguments
  • TestDriver: suppress deprecated header lints for time.h
  • TestDriver: use `CM_NULL` to avoid lints about `nullptr` usage
  • Help/ctest_test: add a comment to also update `ctest_memcheck`
  • Brad King (29):
  • enable_language: Fix test for working compiler with CMP0126 NEW behavior
  • VS: Recognize CSharp VS 2019 compiler version v142
  • VS: Improve v142 CL flag table LanguageStandard ordering
  • VS: Add CSharp VS 2022 compiler version and flag table v143
  • VS: Add v143 flag tables for VS 17.0 Preview 2
  • VS: Fix `/MANIFESTUAC:` link flag mapping for v143
  • VS: Map the link `/debug` flag for v143
  • VS: Remove the /MERGE flag from v143 link flag table
  • VS: Fix `/analyze:log` flag mapping for v143
  • VS: Add `-Zc:inline[-]` flag table entry for v143
  • VS: Populate `/Y-` flag table entry for v143
  • VS: Populate `-Qspectre-` flag table entry for v143
  • VS: Populate `/JMC-` flag table entry for v143
  • VS: Remove empty ConformanceMode entry from flag table for v143
  • VS: Remove empty LanguageStandard entries from flag table for v143
  • VS: Remove empty ExternalWarningLevel entry from flag table for v143
  • VS: Remove broken EnableASAN entry from flag table for v143
  • VS: Fix `/sourceDependencies` flag table entries for v143
  • VS: Update Visual Studio 17 2022 generator for Preview 2
  • CMakeDetermineCompilerId: Fix CMAKE_EXECUTABLE_FORMAT in CMP0126 NEW behavior
  • try_compile: Propagate CMP0126 to the generated test project
  • CMakeDependentOption: Revert "Allow parentheses in the depends string"
  • cmMessenger: Revert to non-color messages on Windows
  • cmGeneratorExpressionNode: Factor out local variable for global generator
  • Swift: Update test case to try CMP0126 NEW behavior
  • Ninja Multi-Config: Restore TARGET_OBJECTS support in cross-configs
  • VS: Remove cl /FS entry from flag table for v142 and v143
  • VS: Remove C++ module CompileAs flag table entries for v142 and v143
  • CMake 3.21.1
  • Craig Scott (10):
  • Help: Clarify wording of CMP0124
  • Help: Explain policy CMP0125 in more detail
  • Help: Make policy CMP0126 wording more accurate
  • Help: Fix trivial typo
  • Help: Clarify which project() call PROJECT_IS_TOP_LEVEL is for
  • Help: Re-order file() sub-commands in Filesystem section
  • Help: Expand details for file(COPY_FILE)
  • Help: Clarify and correct wording around DEPFILE option
  • Help: Improve wording and cross-referencing for ctest JUnit output
  • Help: Add cross-references between test output size ctest variables
  • Jean-Marc Hengen (1):
  • IAR: Moved search logic to BinUtils.
  • Joerg Bornemann (1):
  • AutoGen: Fix needless compilation of mocs_compilation.cpp
  • KWSys Upstream (1):
  • KWSys 2021-07-26 (d5fd6ca2)
  • Kyle Edwards (2):
  • CMakePresets.json: Fix expansion issue with empty binaryDir
  • Tests: Clean up Ninja Multi-Config test from cb777dd
  • Lorenzo Cappelletti (3):
  • Compiler/IAR: search for both IAR's binaries * and *.exe
  • Compiler/IAR: Avoid clobbering CMAKE_EXECUTABLE_SUFFIX
  • Help: Document CMAKE_EXECUTABLE_SUFFIX_ explicitly
  • Martin Storsjö (1):
  • libuv: Fix building with mingw toolchains for ARM/AArch64
  • Raul Tambre (1):
  • GNU: Correct C23 flags
  • Yauheni Khnykin (1):
  • FindXCTest: Fix output directory for test bundle with Xcode 12.5
  • Đoàn Trần Công Danh (2):
  • Tests/CompileOptions: allow CMAKE_BUILD_TYPE=None
  • Add option to explicitly avoid using execinfo for backtraces

New in CMake 3.20.5 (Jun 22, 2021)

  • Brad King (7):
  • gitlab-ci: update macOS jobs to use Xcode 12.5
  • cmGlobalVisualStudio10Generator: Move static functions to anonymous namespace
  • cmGlobalVisualStudio10Generator: Adopt GetVSInstanceVersion method
  • VS: Do not apply '/external:W*' flag table mapping on VS < 16.10
  • Tests: Fix xcode version detection for Xcode 13 on ARM
  • Help: Add 3.20 release note section for 3.20.{3,4,5}
  • CMake 3.20.5
  • Craig Scott (1):
  • ExternalProject: Use ${ref}^0 to avoid MSYS/Cygwin shell substitutions
  • Kyle Edwards (1):
  • CMake: Allow override of unexpected non-flow-control commands

New in CMake 3.20.4 (Jun 15, 2021)

  • Ben Boeckel (1):
  • ci: use consistent sccache builds
  • Brad King (8):
  • VS: Add special case for '-T version=14.29.16.10' under VS 16.10
  • VS: Add flag table entries for '/external:W*' flags in VS 16.10
  • gitlab-ci: Update Windows builds to MSVC 19.29-16.10 toolset
  • Makefiles: Fix CMAKE_EXPORT_COMPILE_COMMANDS crash with custom compile rule
  • presets: Fix buildPreset "jobs" field test case
  • IRSL: Add Intel oneAPI redist location on Windows
  • fileapi: Fix codemodel-v2 link command fragment relative paths
  • CMake 3.20.4
  • John Drouhard (1):
  • FindBoost: Add check for json component header in Boost 1.75+
  • Marc Chevrier (1):
  • Help: cmake_path: fix erroneous example for IS_PREFIX
  • Raul Tambre (2):
  • MSVC: C++20 final flag, C++23 support
  • Clang/MSVC: C++20 final flag, C++23 support
  • Sam Freed (2):
  • presets: Fix buildPreset "jobs"
  • presets: Fix buildPreset "targets" not allowing a single string

New in CMake 3.20.3 (May 28, 2021)

  • Brad King (7):
  • Help: Use relative path for IDE Integration guide link to preset schema
  • BinUtils: Use more-private temporary variable names
  • ObjectiveC: Respect OSX_ARCHITECTURES for OBJC
  • FindBoost: Add support for Boost 1.76
  • Ninja: Restore support for Fortran in a symlinked build tree
  • Utilities/Sphinx: Update man page config for Sphinx 4
  • CMake 3.20.3
  • Craig Scott (2):
  • ExternalProject: Ensure git fetch if updating to hash we don't have yet
  • ExternalProject: Only add git config setting with git 1.7.7 or later
  • Kyle Edwards (2):
  • Ninja Multi-Config: Split long command lines by config
  • CMP0082: Check EXCLUDE_FROM_ALL property at generate time
  • Raul Tambre (3):
  • GNU: C++17 default version
  • GNU: Final C++20 flags
  • GNU: C++23 support
  • Robert Maynard (6):
  • CUDA: improve regex for CUDA Toolkit root from nvcc verbose output
  • cmCommandLineArgument: Correctly record parsing failures
  • cmake: `--build` and `--install` error out when encountering bad flags
  • cmCommandLineArgument: Provide more information syntax error messages
  • NVHPC: Support explicit language flags
  • NVHPC: Support Ninja dependency scanning

New in CMake 3.20.2 (Apr 29, 2021)

  • Ben Boeckel (2):
  • ci: pay attention to the machine load when running tests
  • ci: limit builds by machine load
  • Brad King (8):
  • Help: Add 3.20 release note for error on unknown arguments
  • gitlab-ci: equally delay all jobs on integration branches
  • Autogen: Restore mocs_compilation in OBJECT libraries
  • Help: Fix typos in cmake-compile-features(7)
  • Help: Do not recommend WCDH in cmake-compile-features(7)
  • Intel: Update Classic compiler version detection for 2021
  • IntelLLVM: Add special case for ifx 2021.1 version extraction
  • CMake 3.20.2
  • Craig Scott (2):
  • Help: Behavior of file(TO_NATIVE_PATH) depends on the host platform
  • Help: Document special cases for if(IS_ABSOLUTE)
  • Joel Johnson (1):
  • Add missing 'not' in error messages
  • KWIML Upstream (1):
  • KWIML 2021-04-21 (49d91529)
  • Kyle Edwards (2):
  • autogen: fix race in depfile parsing
  • Ninja Multi-Config: Correctly generate POST_BUILD custom targets
  • Lihua Zhao (1):
  • BinUtils: Restore toolchain prefix detection from compiler name 'c++'
  • Rafael Sadowski (1):
  • OpenBSD: Fix system feature definitions

New in CMake 3.20.1 (Apr 9, 2021)

  • The FindIntl module in CMake 3.20.0 added checks Intl_HAVE_GETTEXT_BUILTIN, Intl_HAVE_DCGETTEXT_BUILTIN, and Intl_IS_BUILTIN, but they were not implemented correctly. These have been removed and replaced with a single Intl_IS_BUILT_IN check, whose name is consistent with the FindIconv module.
  • The -rpath linker flag is now specified as supported on all Apple platforms, not just macOS. The install_name_dir used for iOS, tvOS and watchOS should now default to @rpath instead of using a full absolute path and failing at runtime when the library or framework is embedded in an application bundle (see XCODE_EMBED_).

New in CMake 3.20.0 (Mar 24, 2021)

  • New Features:
  • Presets:
  • "cmake-presets(7)" gained support for build and test presets.
  • Generators:
  • Makefile Generators, for some toolchains, now use the compiler to extract implicit dependencies while compiling source files.
  • Languages:
  • C++23 compiler modes may now be specified via the "CXX_STANDARD", "CUDA_STANDARD", or "OBJCXX_STANDARD" target properties, or via the "Compile Features" functionality’s "cxx_std_23" meta-feature.
  • "CUDA" language support now works when "nvcc" is a symbolic link, for example due to a "ccache" or "colornvcc" wrapper script.
  • The "CUDAARCHS" environment variable was added for initializing "CMAKE_CUDA_ARCHITECTURES". Useful in cases where the compiler default is unsuitable for the machine’s GPU.
  • Compilers:
  • The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC".
  • The Intel oneAPI NextGen LLVM compilers are now supported with compiler id "IntelLLVM":
  • The "icx"/"icpx" C/C++ compilers on Linux, and the "icx" C/C++ compiler on Windows, are fully supported as of oneAPI 2021.1.
  • The "ifx" Fortran compiler on Linux is partially supported. As of oneAPI 2021.1, "ifx" does not define several identification macros, so CMake identifies it as the classic "Intel" compiler. This works in many cases because "ifx" accepts the same command line parameters as "ifort". A future version of oneAPI may fix this.
  • The "ifx" Fortran compiler on Windows is not yet supported.
  • The Intel oneAPI Classic compilers ("icc", "icpc", and "ifort") continue to be supported with compiler id "Intel".
  • Support was added for the IAR STM8 compiler.
  • Platforms:
  • CMake’s support for Cross Compiling for Android is now merged with the Android NDK’s toolchain file. They now have similar behavior, though some variable names differ. User-facing changes include:
  • "find_*" functions will search NDK ABI / API specific paths by default.
  • The default "CMAKE_BUILD_TYPE" for Android is now "RelWithDebInfo".
  • The "CMAKE_ANDROID_NDK_VERSION" variable was added to report the version of the NDK.
  • File-Based API:
  • The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language.
  • Commands:
  • "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options.
  • Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "" and "" that control cross-config handling when using the "Ninja Multi-Config" generator.
  • The "add_custom_command()" command gained "DEPFILE" support on Makefile Generators.
  • The "add_library()" command previously prohibited imported object libraries when using potentially multi-architecture configurations. This mostly affected the "Xcode" generator, e.g. when targeting iOS or one of the other device platforms. This restriction has now been removed.
  • The "cmake_path()" command was added for operations on filesystem paths.
  • The "configure_file()" command gained "USE_SOURCE_PERMISSIONS" and "FILE_PERMISSIONS" options to support copying of permissions of the source file and using specified permissions respectively.
  • The "file(GENERATE)" command gained a "NEWLINE_STYLE" option to specify how newlines are handled for the generated file.
  • The "file(GENERATE)" command gained "NO_SOURCE_PERMISSIONS", "USE_SOURCE_PERMISSIONS", and "FILE_PERMISSIONS" options for controlling the permissions of the generated file.
  • The "install(FILES)" command "RENAME" option learned to support "generator expressions".
  • The "target_include_directories()" command gained a new option "AFTER".
  • The "target_sources()" command now supports targets created by the "add_custom_target()" command.
  • The "try_run()" command gained a "WORKING_DIRECTORY" option to set the working directory in which to run the compiled check executable.
  • Variables:
  • The "CMAKE__BYTE_ORDER" variable was added to provide the target architecture byte order detected from the toolchain.
  • The "CMAKE_RUNTIME_OUTPUT_DIRECTORY", "CMAKE_LIBRARY_OUTPUT_DIRECTORY", and "CMAKE_ARCHIVE_OUTPUT_DIRECTORY" variables now support target-dependent generator expressions.
  • Properties:
  • The "_CLANG_TIDY" target property and the associated "CMAKE__CLANG_TIDY" variable learned to support the "OBJC" and "OBJCXX" languages.
  • The "EXPORT_COMPILE_COMMANDS" target property was added for the associated "CMAKE_EXPORT_COMPILE_COMMANDS" variable to allow for configuration of exporting compile commands per target.
  • The "GENERATED" source-file property is now visible from any directory scope, regardless of the scope in which it is set. See policy "CMP0118".
  • The "UNITY_BUILD_UNIQUE_ID" target property was added to support generation of an identifier that is unique per source file in unity builds. It can help to resolve duplicate symbol problems with anonymous namespaces.
  • The "WIN32_EXECUTABLE" target property now works with Clang on Windows.
  • The "XCODE_EMBED_FRAMEWORKS" target property was added to tell the "Xcode" generator to embed frameworks. Aspects of the embedding can be customized with the "XCODE_EMBED_FRAMEWORKS_PATH", "XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY", and "XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY" target properties.
  • Modules:
  • The "ExternalData" module "ExternalData_Add_Target()" function gained a "SHOW_PROGRESS " option for controlling whether or not to show progress output during the build.
  • The "ExternalProject" module "ExternalProject_Add()" function gained a "CONFIGURE_HANDLED_BY_BUILD" option. This can be used to make subsequent runs of the configure step be triggered by the build step when an external project dependency rebuilds instead of always re- running the configure step in such cases.
  • The "FindBoost" module gained a "Boost_NO_WARN_NEW_VERSIONS" option to silence the warning about unknown dependencies for new Boost versions.
  • The "FindCUDAToolkit" module gained support for finding CUDA toolkits when "nvcc" is a symbolic link, for example due to a "ccache" or "colornvcc" wrapper script.
  • The "FindGDAL" module has been improved to document and mark as advanced its cache variables. There is a new "FindGDAL_SKIP_GDAL_CONFIG" variable which may be used to skip over the "gdal-config"-based search. Users may also set "GDAL_ADDITIONAL_LIBRARY_VERSIONS" to add additional versions to the library name search strategy.
  • The "FindIntl" module now provides an imported target.
  • The "FindOpenSSL" module learned to support a version range.
  • The "FindPython3", "FindPython2" and "FindPython" modules gained options controlling how unversioned interpreter names are searched.
  • The "UseJava" module "add_jar()" command’s "GENERATE_NATIVE_HEADERS" feature gained options to export the generated target.
  • The "UseSWIG" module gained the capability, for Makefile and Ninja generators, to use the "swig" tool to generate implicit dependencies.
  • Autogen:
  • The AUTOMOC feature now works with per-config sources.
  • CTest
  • "ctest(1)" gained a "--test-dir" option to specify the directory in which to look for tests.
  • CPack:
  • "CPack" gained the "CPACK_THREADS" variable to control the number of threads used for parallelized operations, such as compressing the installer package.
  • The "CPack DEB Generator" learned a new "CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS" variable to specify additional search directories for resolving private library dependencies when using "dpkg-shlibdeps".
  • The "CPack IFW Generator" gained a new "CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST" variable to control visibility of the widget listing installer pages on the left side of the wizard. This feature available only since QtIFW 4.0.
  • The "CPack NSIS Generator" gained new "CPACK_NSIS_BRANDING_TEXT" and "CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION" variables to change the text at the bottom of the install window and change its trim position
  • The "CPack NSIS Generator" now correctly handles Unicode characters. If you want to have a "CPACK_RESOURCE_FILE_LICENSE" with UTF-8 characters, it needs to be encoded in UTF-8 BOM.
  • The "CPack NuGet Generator" gained options:
  • "CPACK_NUGET_PACKAGE_ICON" and "CPACK_NUGET__PACKAGE_ICON" allow package icons to be specified by local files.
  • "CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION" and "CPACK_NUGET__PACKAGE_LICENSE_EXPRESSION" add support for specifying licenses recognized by the Software Package Data Exchange (SPDX).
  • "CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME" and "CPACK_NUGET__PACKAGE_LICENSE_FILE_NAME" allow licenses to be specified by local files.
  • "CPACK_NUGET_PACKAGE_LANGUAGE" and "CPACK_NUGET__PACKAGE_LANGUAGE" allow the locale for a package to be specified, for example "en_CA".
  • Deprecated and Removed Features:
  • The "cmake-server(7)" mode has been removed. Clients should use the "cmake-file-api(7)" instead.
  • The "WriteCompilerDetectionHeader" module has been deprecated via policy "CMP0120". Projects should be ported away from it.
  • The "TestBigEndian" module has been deprecated in favor of the "CMAKE__BYTE_ORDER" variable.
  • The "AddFileDependencies" module is deprecated. Port projects to use "set_property()" directly.
  • The "CPack NuGet Generator" deprecated some variables to reflect changes in the NuGet specification:
  • "CPACK_NUGET_PACKAGE_ICONURL" and "CPACK_NUGET__PACKAGE_ICONURL" have been deprecated; replace with a reference to a local icon file.
  • "CPACK_NUGET_PACKAGE_LICENSEURL" and
  • "CPACK_NUGET__PACKAGE_LICENSEURL" have been deprecated; replace with a reference to the project’s license file or SPDX license expression.
  • Other Changes:
  • Source file extensions must now be explicit. See policy "CMP0115" for details.
  • The "LANGUAGE" source file property now forces compilation as the specified language. See policy "CMP0119".
  • On AIX, installation of XCOFF executables and shared libraries no longer requires relinking to change the runtime search path from the build-tree RPATH to the install-tree RPATH. CMake now edits the XCOFF binaries directly during installation, as has long been done on ELF platforms.
  • With MSVC-like compilers the value of "CMAKE_CXX_FLAGS" no longer contains the "/GR" flag for runtime type information by default. See policy "CMP0117".
  • Ninja generators now transform the "DEPFILE" generated by an "add_custom_command()". See policy "CMP0116" for details.
  • The precompiled Linux binaries provided on cmake.org have changed their naming pattern to "cmake-$ver-linux-$arch", where "$arch" is either "x86_64" or "aarch64".
  • The precompiled Windows binaries provided on cmake.org have changed their naming pattern to "cmake-$ver-windows-$arch", where "$arch" is either "x86_64" or "i386".

New in CMake 3.19.7 (Mar 16, 2021)

  • Brad King (6):
  • Revert "Cray: Fix Cray compiler detection on new platforms"
  • Xcode: Restore support for spaces in framework names
  • cmGlobalVisualStudioVersionedGenerator: Clarify local variable name
  • VS: Fix '-T version=14.28' under VS 16.9
  • VS: Accept and translate '-T version=' values with three components
  • CMake 3.19.7
  • Justin LaPolla (1):
  • Cray: Enable Cray compiler wrapper detection on all platforms

New in CMake 3.19.6 (Feb 25, 2021)

  • Brad King (3):
  • Intel: Make explicit Fortran preprocessing under Ninja more robust
  • Tests: Update for upstream ninja change to write status on stderr
  • CMake 3.19.6
  • Kyle Edwards (1):
  • CMakePresets.json: Remove undocumented support for comments
  • Marc Chevrier (1):
  • FindPython: fix erroneous variable handling

New in CMake 3.19.5 (Feb 16, 2021)

  • Brad King (7):
  • Apple: Fix linking to frameworks that do not exist until build time
  • FindBoost: Add support for Boost 1.75
  • Help: Restore docs that find_library considers LIB, not INCLUDE
  • LexerParser: Do not override existing _POSIX_C_SOURCE definition
  • CTest: Restore running dashboard client Test step with modified files
  • Clang: Use -imsvc for system include only with MSVC-like front-end
  • CMake 3.19.5
  • Craig Scott (4):
  • cmComputeLinkInformation: Fix misspelt private variable name
  • Xcode: Don't hard-code SDK-provided implicit framework search paths
  • IOS_INSTALL_COMBINED: Support Xcode 12 (command line only)
  • Help: Add 3.19.5 release notes for Xcode iOS-related changes
  • Robert Maynard (1):
  • FindCUDAToolkit: Restore use of CUDA_PATH environment variable
  • Yauheni Khnykin (1):
  • FindXCTest: Fix output directory for test bundle with new build system

New in CMake 3.19.4 (Jan 31, 2021)

  • Ben Boeckel (2):
  • FindHDF5: avoid writing to the output when testing h5cc
  • FindHDF5: silence STATUS messages when found with QUIET
  • Bianca van Schaik (2):
  • GetPrerequisites: Include weak macOS dependencies
  • file(GET_RUNTIME_DEPENDENCIES): Fix weak macOS libraries not detected
  • Brad King (5):
  • ci: speed up cmake and ninja downloads on Windows
  • ci: download WiX on Windows
  • Intel: Replace deprecated Fortran flag -nofor_main with -nofor-main
  • Help: Add Ninja Multi-Config to list in GENERATOR_IS_MULTI_CONFIG
  • CMake 3.19.4
  • Kelly Walker (1):
  • IRSL: Install msvcp${v}${d}_atomic_wait.dll if available with CRT
  • Marc Chevrier (1):
  • Restore support for cross-compiling CMake itself
  • jonathan molinatto (1):
  • VS: Generalize Win10 max SDK version to all VS generators

New in CMake 3.19.3 (Jan 14, 2021)

  • Brad King (14):
  • cmSystemTools: Revert use of MOVEFILE_WRITE_THROUGH by RenameFile on Windows
  • Tests: Fix ConfigSources test with empty CMAKE_BUILD_TYPE
  • gitlab-ci: consolidate Linux release package job spec for x86_64
  • Help: Add 3.19.3 release note for Linux aarch64 binary
  • gitlab-ci: update macOS jobs to use Xcode 12.3
  • cmGlobalXCodeGenerator: Adopt pbxproj object id generation
  • cmGlobalXCodeGenerator: Add infrastructure for deterministic object ids
  • Xcode: Use deterministic object ids for script build phases
  • gitlab-ci: update upload jobs to go to cmake.org
  • cmake-gui: Fix macOS styling for binaries distributed with Qt 5.10+
  • Utilities/Release: Fix macOS Qt 5.9 build script umask
  • Utilities/Release: Add script to build Qt 5.15.2 macOS universal binaries
  • ci: build separate macOS packages for macOS 10.13+ and macOS 10.10+
  • CMake 3.19.3
  • Craig Scott (2):
  • Help: Fix Sphinx not recognising list in XCODE_LINK_BUILD_PHASE_MODE
  • FetchContent: Relative SOURCE_DIR override cannot be a hard error
  • Eduard Valeyev (1):
  • FindMPI: remove single quotes from include path
  • Hi Key (2):
  • Utilities/Release: Add docker specs for Linux aarch64 binaries
  • gitlab-ci: add jobs to make Linux release packages for aarch64 on 3.19 branch
  • Kris Thielemans (1):
  • FindHDF5: Fix finding both debug and release libs
  • Kyle Edwards (1):
  • cmake-gui: Restore linking of Qt resources
  • Raul Tambre (1):
  • cmMakefile: Don't expand bracket arguments in --trace-expand

New in CMake 3.19.2 (Dec 18, 2020)

  • Adam Weisi (1):
  • Compiler/TI: Fix C standard flags in C-only project
  • Asit Dhal (1):
  • execute_process: Improve COMMAND_ERROR_IS_FATAL error capture scenarios
  • Ben Boeckel (3):
  • FindHDF5: improve error messages when a location variable isn't known
  • FindHDF5: support the hdf5hl_fortran-based variable names
  • FindPython2: avoid doubling the extension in CPython2 SOABI
  • Brad King (28):
  • Tests: Add CMake_TEST_Java option to control Java tests
  • Tests: Teach RunCMake to ignore Xcode install_name_tool signature warnings
  • gitlab-ci: update macOS jobs to use Xcode 12.2
  • Tests: Fix RunCMake.Check* conditions for enabling Fortran
  • Check*: Tolerate variables set with names of languages
  • Ninja: Clean metadata after regen during build on Windows with 1.10.2+
  • ci: update to use ninja 1.10.2
  • Tests: Look for Visual Studio only on Windows hosts
  • CMakeDetermineCompilerId: Filter IAR-AVR format INFO strings earlier
  • CMakeDetermineCompilerId: Add whitespace to clarify logic
  • CMakeDetermineCompilerId: Tolerate stray text around INFO strings
  • Revert "Intel: Add Intel Clang compiler identification"
  • Revert "Intel: Add Intel DPC++ compiler identification"
  • Tests: Add cache entry to control XCTest deployment target
  • Tests: Remove outdated exclusion of tests on OS X 10.3
  • ci: Hard-code XCTest deployment target to 10.15
  • Utilities/Release: Add script to build Qt 5.9.9 macOS universal binaries
  • ci: update to pre-built Qt 5.9.9 universal binaries for macOS packages
  • ci: do not use sccache for macOS packaging
  • ci: update macOS package to produce universal binaries
  • macOS: Offer control over host architecture on Apple Silicon hosts
  • Tests: Cover macOS host architecture selection on Apple Silicon hosts
  • cmake: Clear INSTALL file properties between runs
  • macOS: Add /opt/homebrew to CMAKE_SYSTEM_PREFIX_PATH on Apple Silicon
  • Ninja: Remove cleandead on regeneration
  • Utilities/Release: Update macOS Qt 5.9 build for platform versioning
  • cmake-gui: Restore completion during path editing
  • CMake 3.19.2
  • Craig Scott (4):
  • Help: xref variable that cmake_minimum_required() sets
  • Help: Mention how OPTIMIZE_DEPENDENCIES is initialized
  • Help: Re-sort indexes in the manuals
  • Help: Clarify scope details of deferred call ids for cmake_language()
  • Cristian Adam (1):
  • PCH: Fix compiler errors on iOS multi-arch using Ninja Multi-Config
  • Deniz Bahadir (1):
  • export: Do not fail generation for separate namelink only case
  • Justin LaPolla (1):
  • Cray: Fix Cray compiler detection on new platforms
  • Marc Chevrier (3):
  • FPHSA: ensure it can be used outside 'find_package'
  • Clang on Windows: 'LINKER:' prefix must be honored
  • CMakePackageConfigHelpers: Relax restrictions on version range
  • Raul Tambre (2):
  • CUDA: Fix user-set architectures during detection with Visual Studio
  • macOS: Add architecture flags only for native ASM dialect
  • Robert Maynard (7):
  • Modules: Rename Internal/CMake{CheckCompiler => TryCompilerOrLinker}Flag
  • ISPC: Ninja properly compute ISPC_HEADER_DIRECTORY location
  • ISPC: Handle OBJECT sources in different directories
  • Document CMP0112 covers $
  • ISPC: Treat system includes as '-I' includes
  • FindGLUT: Handle Mojave and Big Sur 'tbd' framework files
  • ISPC: Generated Headers suffix configurable with a better default
  • Sam Freed (1):
  • Help: Fix presets typo (longDescription to displayName)
  • Stephen Kelly (1):
  • QNX: Do not disable compiler extensions for CMake itself
  • Thomas Bernard (2):
  • llvm-rc: Force C language for the clang gnu frontend
  • llvm-rc: Add CMAKE_VFS_OVERLAY to the preprocessing flags

New in CMake 3.19.1 (Nov 25, 2020)

  • Brad King (10):
  • ci: update to use CMake 3.19.0
  • gitlab-ci: update macOS jobs to use Xcode 12.0
  • Revert “specify language flag when source LANGUAGE property is set”
  • FindGTest: Revert “Allow either “Debug” or “Release” configurations.”
  • Makefiles: Fix CMAKE_EXPORT_COMPILE_COMMANDS crash with custom compile rule
  • Xcode: Fix custom command work-dir placeholders in “new build system”
  • Tests: Match RunCMake.CMP0111 stderr more strictly
  • cmTarget: Do not enforce CMP0111 on imported INTERFACE libraries
  • cmVisualStudio10TargetGenerator: Avoid GetFullPath on INTERFACE library
  • CMake 3.19.1
  • Kyle Edwards (1):
  • cmGlobalGenerator: FindMakeProgram() at a generator-specific time
  • Marc Chevrier (1):
  • cmFileTime: Fix overflow on time computation
  • Nikita Nemkin (1):
  • Help: Fix ‘… versionadded’ directives for CTEST_CUSTOM_* variables
  • Raul Tambre (2):
  • CUDA: Clang CUDA 11.1 support
  • CUDA: Error if can’t determine toolkit library root

New in CMake 3.19.0 (Nov 20, 2020)

  • New Features:
  • Presets:
  • cmake(1) and cmake-gui(1) now recognize CMakePresets.json and CMakeUserPresets.json files (see cmake-presets(7)).
  • Generators:
  • The Xcode generator now uses the Xcode “new build system” when generating for Xcode 12.0 or higher. See the CMAKE_XCODE_BUILD_SYSTEM variable. One may use -T buildsystem=1 to switch to the legacy build system.
  • The Xcode generator gained support for linking libraries and frameworks via the Link Binaries With Libraries build phase instead of always by embedding linker flags directly. This behavior is controlled by a new XCODE_LINK_BUILD_PHASE_MODE target property, which is initialized by a new CMAKE_XCODE_LINK_BUILD_PHASE_MODE variable.
  • The Visual Studio Generators for VS 2015 and above gained support for the Visual Studio Tools for Android. One may now set CMAKE_SYSTEM_NAME to Android to generate .vcxproj files for the Android tools.
  • Languages:
  • CMake learned to support ISPC as a first-class language that can be enabled via the project() and enable_language() commands. ISPC is currently supported by the Makefile Generators and the Ninja generator on Linux, macOS, and Windows using the Intel ISPC compiler.
  • CUDA language support for Clang now includes:
  • separable compilation (CUDA_SEPARABLE_COMPILATION), and
  • finding scattered toolkit installations when cross-compiling.
  • CUDA language support now works on QNX.
  • File-Based API:
  • The cmake-file-api(7) “codemodel” version 2 version field has been updated to 2.2.
  • The cmake-file-api(7) “codemodel” version 2 “target” object gained a new languageStandard field in the compileGroups objects.
  • Command-Line:
  • The cmake(1) command-line tool’s --install mode gained a --default-directory-permissions option.
  • cmake(1) gained a -E create_hardlink command-line tool that can be used to create hardlinks between files.
  • GUI:
  • The CMake GUI now has an environment variable editor.
  • Commands:
  • The add_test() command now (officially) supports whitespace and other special characters in the name for the test it creates. See policy CMP0110.
  • The cmake_language() command gained a DEFER mode to schedule command calls to occur at the end of processing a directory.
  • The configure_file() command gained a NO_SOURCE_PERMISSIONS option to suppress copying the input file’s permissions to the output file.
  • The execute_process() command gained a COMMAND_ERROR_IS_FATAL option to specify a fatal error.
  • The file(ARCHIVE_CREATE) command gained a COMPRESSION_LEVEL option to specify the compression level.
  • The file(CHMOD) and file(CHMOD_RECURSE) subcommands were added to set permissions of files and directories.
  • The file(DOWNLOAD) command argument is now optional. If it is not specified, the file is not saved.
  • The file(GENERATE) command gained a new TARGET keyword to support resolving target-dependent generator expressions.
  • The file() command gained a new REAL_PATH sub-command to compute a path with symlinks resolved.
  • The find_package() command learned to handle a version range.
  • The separate_arguments() command gained a new PROGRAM option. It allows the arguments to be treated as a program invocation and will resolve the executable to a full path if it can be found.
  • The DIRECTORY option of the set_property(), get_property(), and get_directory_property() commands now accepts references to binary directory paths, such as the value of CMAKE_CURRENT_BINARY_DIR.
  • The string() command gained a set of new JSON sub commands that provide JSON parsing capabilities.
  • Variables:
  • The CMAKE_CLANG_VFS_OVERLAY variable was added to tell Clang to use a VFS overlay to support the Windows SDK when cross-compiling from hosts with case-sensitive filesystems.
  • The CMAKE_MFC_FLAG variable now supports generator expressions.
  • The CMAKE_OPTIMIZE_DEPENDENCIES variable was added to initialize the new OPTIMIZE_DEPENDENCIES target property and avoid unnecessarily building dependencies for a static library.
  • The CMAKE_PCH_INSTANTIATE_TEMPLATES variable was added to initialize the new PCH_INSTANTIATE_TEMPLATES target property.
  • The CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM variable was added to tell the Visual Studio Generators what maximum version of the Windows SDK to choose.
  • Properties:
  • The EXCLUDE_FROM_ALL target property now supports generator expressions.
  • The OPTIMIZE_DEPENDENCIES target property was added to avoid unnecessarily building dependencies for a static library.
  • The PCH_INSTANTIATE_TEMPLATES target property was added to enable template instantiation in the precompiled header. This is enabled by default and may significantly improve compile times. Currently only supported for Clang (version 11 or later).
  • The WIN32_EXECUTABLE target property now supports generator expressions.
  • Modules:
  • The CheckCompilerFlag module has been added to generalize CheckCCompilerFlag and CheckCXXCompilerFlag to more languages. It also supports the CUDA and ISPC languages.
  • The CheckLinkerFlag module now supports the CUDA language.
  • The CheckSourceCompiles module has been added to generalize CheckCSourceCompiles and CheckCXXSourceCompiles to more languages. It also supports the CUDA and ISPC languages.
  • The CheckSourceRuns module has been added to generalize CheckCSourceRuns and CheckCXXSourceRuns to more languages. It also supports the CUDA language.
  • The CMakePackageConfigHelpers module gained support for version ranges.
  • The FindCUDAToolkit module gained support for finding CUDA toolkits that do not contain nvcc, as well as for finding scattered toolkit installations when cross-compiling.
  • The FindPackageHandleStandardArgs module learned to handle version ranges. It also gained the find_package_check_version() command to check the validity of a version against version-related arguments of find_package() command.
  • The FindPython3, FindPython2 and FindPython modules gained the ability to handle a version range.
  • The FindPython3, FindPython2 and FindPython modules provide, respectively, the variable Python3_LINK_OPTIONS, Python2_LINK_OPTIONS and Python_LINK_OPTIONS for link options.
  • The FindSDL module now provides:
  • An imported target SDL::SDL.
  • Result variables SDL_LIBRARIES and SDL_INCLUDE_DIRS.
  • Version variables SDL_VERSION, SDL_VERSION_MAJOR, SDL_VERSION_MINOR, and SDL_VERSION_PATCH.
  • The FindSWIG module gained the ability to handle a version range.
  • The FindTIFF module gained a CXX component to find the tiffxx library containing C++ bindings.
  • The FindVulkan module now provides a Vulkan::glslc imported target and associated Vulkan_GLSLC_EXECUTABLE variable which contain the path to the GLSL SPIR-V compiler.
  • The UseSWIG module gained support for new source file properties OUTPUT_DIR and OUTFILE_DIR to manage output directories on a per-source basis.
  • CTest:
  • ctest(1) now supports the CUDA compute-sanitizer checker (previously known as cuda-memcheck) as the CTEST_MEMORYCHECK_COMMAND. The different tools (memcheck, racecheck, synccheck and initcheck) supported by compute-sanitizer can be selected by adding appropriate flags to the CTEST_MEMORYCHECK_COMMAND_OPTIONS variable. The default flags are --tool memcheck --leak-check full.
  • CPack:
  • CPack gained the CPACK_PRE_BUILD_SCRIPTS, CPACK_POST_BUILD_SCRIPTS, and CPACK_PACKAGE_FILES variables.
  • The CPack External Generator gained the CPACK_EXTERNAL_BUILT_PACKAGES variable.
  • The CPack WIX Generator gained a CPACK_WIX_CUSTOM_XMLNS option to specify custom XML namespaces.
  • Other:
  • Interface Libraries may now have source files added via add_library() or target_sources(). Those with sources will be generated as part of the build system.
  • Deprecated and Removed Features:
  • Compatibility with versions of CMake older than 2.8.12 is now deprecated and will be removed from a future version. Calls to cmake_minimum_required() or cmake_policy() that set the policy version to an older value now issue a deprecation diagnostic.
  • An explicit deprecation diagnostic was added for policy CMP0071 (CMP0071 and below were already deprecated). The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
  • macOS SDKs older than 10.5 are no longer supported.
  • cmake-gui(1) now requires Qt5. Support for compiling with Qt4 has been removed.
  • The cmake(1) command-line option --warn-unused-vars has been removed and is now silently ignored. The option has not worked correctly since CMake 3.3.
  • Documentation:
  • The following guides have been added:
  • IDE Integration Guide
  • Importing and Exporting Guide
  • Other Changes:
  • Building for macOS will now use the latest SDK available on the system, unless the user has explicitly chosen a SDK using CMAKE_OSX_SYSROOT. The deployment target or system macOS version will not affect the choice of SDK.
  • The CMAKE__COMPILER variable may now be used to store “mandatory” compiler flags like the CC and other environment variables.
  • The CMAKE__FLAGS_INIT variable will now be considered during the compiler identification check if other sources like CMAKE__FLAGS or CFLAGS are not set.
  • The find_program() command now requires permission to execute but not to read the file found. See policy CMP0109.
  • An imported target missing its location property fails during generation if the location is used. See policy CMP0111.
  • The following target-based generator expressions that query for directory or file name components no longer add a dependency on the evaluated target. See policy CMP0112.
  • TARGET_FILE_DIR
  • TARGET_LINKER_FILE_BASE_NAME
  • TARGET_LINKER_FILE_NAME
  • TARGET_LINKER_FILE_DIR
  • TARGET_SONAME_FILE_NAME
  • TARGET_SONAME_FILE_DIR
  • TARGET_PDB_FILE_NAME
  • TARGET_PDB_FILE_DIR
  • TARGET_BUNDLE_DIR
  • TARGET_BUNDLE_CONTENT_DIR
  • Makefile Generators no longer repeat custom commands from target dependencies. See policy CMP0113.
  • The ExternalProject module handling of step target dependencies has been revised. See policy CMP0114.
  • The OSX_ARCHITECTURES target property is now respected for the ASM language.
  • If CUDA compiler detection fails with user-specified CMAKE_CUDA_ARCHITECTURES or CMAKE_CUDA_HOST_COMPILER, an error is raised.

New in CMake 3.19.0 RC 1 (Oct 14, 2020)

  • New Features:
  • Presets:
  • cmake(1) and cmake-gui(1) now recognize CMakePresets.json and CMakeUserPresets.json files.
  • Generators:
  • The Xcode generator now uses the Xcode “new build system” when generating for Xcode 12.0 or higher. See the CMAKE_XCODE_BUILD_SYSTEM variable. One may use -T buildsystem=1 to switch to the legacy build system.
  • The Xcode generator gained support for linking libraries and frameworks via the Link Binaries With Libraries build phase instead of always by embedding linker flags directly. This behavior is controlled by a new XCODE_LINK_BUILD_PHASE_MODE target property, which is initialized by a new CMAKE_XCODE_LINK_BUILD_PHASE_MODE variable.
  • The Visual Studio Generators for VS 2015 and above gained support for the Visual Studio Tools for Android. One may now set CMAKE_SYSTEM_NAME to Android to generate .vcxproj files for the Android tools.
  • Languages:
  • CMake learned to support ISPC as a first-class language that can be enabled via the project() and enable_language() commands. ISPC is currently supported by the Makefile Generators and the Ninja generator on Linux, macOS, and Windows using the Intel ISPC compiler.
  • CUDA language support for Clang now includes:
  • separable compilation (CUDA_SEPARABLE_COMPILATION), and
  • finding scattered toolkit installations when cross-compiling.
  • File-Based API:
  • The cmake-file-api(7) “codemodel” version 2 version field has been updated to 2.2.
  • The cmake-file-api(7) “codemodel” version 2 “target” object gained a new languageStandard field in the compileGroups objects.
  • Command-Line:
  • The cmake(1) command-line tool’s --install mode gained a --default-directory-permissions option.
  • cmake(1) gained a -E create_hardlink command-line tool that can be used to create hardlinks between files.
  • GUI:
  • The CMake GUI now has an environment variable editor.
  • Commands:
  • The add_test() command now (officially) supports whitespace and other special characters in the name for the test it creates. See policy CMP0110.
  • The cmake_language() command gained a DEFER mode to schedule command calls to occur at the end of processing a directory.
  • The cmake_path() command was added for operations on filesystem paths.
  • The configure_file() command gained a NO_SOURCE_PERMISSIONS option to suppress copying the input file’s permissions to the output file.
  • The execute_process() command gained a COMMAND_ERROR_IS_FATAL option to specify a fatal error.
  • The file(ARCHIVE_CREATE) command gained a COMPRESSION_LEVEL option to specify the compression level.
  • The file(CHMOD) and file(CHMOD_RECURSE) subcommands were added to set permissions of files and directories.
  • The file(DOWNLOAD) command argument is now optional. If it is not specified, the file is not saved.
  • The file(GENERATE) command gained a new TARGET keyword to support resolving target-dependent generator expressions.
  • The file() gained sub-command REAL_PATH to compute a path with symlinks resolved.
  • The find_package() command learned to handle a version range.
  • The separate_arguments() command gained new PROGRAM option to search program.
  • The set_property(), get_property(), and get_directory_property() commands’ DIRECTORY options now accept references to binary directory paths, such as the value of CMAKE_CURRENT_BINARY_DIR.
  • The string() command gained set of new JSON sub commands to provide JSON parsing capabilities.
  • Variables:
  • The CMAKE_CLANG_VFS_OVERLAY variable was added to tell Clang to use a VFS overlay to support the Windows SDK when cross-compiling from hosts with case-sensitive filesystems.
  • The CMAKE_MFC_FLAG variable now supports generator expressions.
  • The CMAKE_OPTIMIZE_DEPENDENCIES variable was added to initialize the new OPTIMIZE_DEPENDENCIES target property and avoid unnecessarily building dependencies for a static library.
  • The CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM variable was added to tell the Visual Studio Generators what maximum version of the Windows SDK to choose.
  • Properties:
  • The EXCLUDE_FROM_ALL target property now supports generator expressions.
  • The OPTIMIZE_DEPENDENCIES target property was added to avoid unnecessarily building dependencies for a static library.
  • The PCH_INSTANTIATE_TEMPLATES target property was added to enable template instantiation in the precompiled header. This is enabled by default and offers a roughly 20% compile time improvement. Currently only supported by Clang 11.
  • The WIN32_EXECUTABLE target property now supports generator expressions.
  • Modules:
  • The CheckCompilerFlag module has been added to generalize CheckCCompilerFlag and CheckCXXCompilerFlag to more languages. It also supports the CUDA and ISPC languages.
  • The CheckLinkerFlag module now supports the CUDA language.
  • The CheckSourceCompiles module has been added to generalize CheckCSourceCompiles and CheckCXXSourceCompiles to more languages. It also supports the CUDA and ISPC languages.
  • The CheckSourceRuns module has been added to generalize CheckCSourceRuns and CheckCXXSourceRuns to more languages. It also supports the CUDA language.
  • CMakePackageConfigHelpers module learned to manage version range.
  • The FindCUDAToolkit module gained support for finding CUDA toolkits that do not contain nvcc, as well as for finding scattered toolkit installations when cross-compiling.
  • The FindPackageHandleStandardArgs module learned to handle version range. It also gained the find_package_check_version() command to check the validity of a version against version-related arguments of find_package() command.
  • The FindPython3, FindPython2 and FindPython modules gained the capability to manage a version range.
  • The FindPython3, FindPython2 and FindPython modules provide, respectively, the variable Python3_LINK_OPTIONS, Python2_LINK_OPTIONS and Python_LINK_OPTIONS for link options.
  • The FindSDL module now provides:
  • imported target SDL::SDL,
  • result variables SDL_LIBRARIES and SDL_INCLUDE_DIRS,
  • version variables SDL_VERSION, SDL_VERSION_MAJOR SDL_VERSION_MINOR, and SDL_VERSION_PATCH.
  • FindSWIG module gains the capability to manage a version range.
  • The FindTIFF module gained a CXX component to find the tiffxx library containing C++ bindings.
  • The FindVulkan module now provides a Vulkan::glslc imported target and associated Vulkan_GLSLC_EXECUTABLE variable which contain the path to the GLSL SPIR-V compiler.
  • UseSWIG module gains new source file properties OUTPUT_DIR and OUTFILE_DIR to manage output directories on per source basis.
  • CTest:
  • ctest(1) now supports compute-sanitizer (cuda-memcheck) as CTEST_MEMORYCHECK_COMMAND. The different tools (memcheck, racecheck, synccheck, initcheck) supplied by compute-sanitizer can be selected by adding appropriate flags to the CTEST_MEMORYCHECK_COMMAND_OPTIONS variable. The default flags are --tool memcheck --leak-check full.
  • CPack:
  • CPack gained the CPACK_PRE_BUILD_SCRIPTS, CPACK_POST_BUILD_SCRIPTS, and CPACK_PACKAGE_FILES variables.
  • The CPack External Generator gained the CPACK_EXTERNAL_BUILT_PACKAGES variable.
  • The CPack WIX Generator gained a CPACK_WIX_CUSTOM_XMLNS option to specify custom XML namespaces.
  • Other:
  • Interface Libraries may now have source files added via add_library() or target_sources(). Those with sources will be generated as part of the build system.
  • Deprecated and Removed Features:
  • Compatibility with versions of CMake older than 2.8.12 is now deprecated and will be removed from a future version. Calls to cmake_minimum_required() or cmake_policy() that set the policy version to an older value now issue a deprecation diagnostic.
  • An explicit deprecation diagnostic was added for policy CMP0071 (CMP0071 and below were already deprecated). The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
  • macOS SDKs older than 10.5 are no longer supported.
  • cmake-gui(1) now requires Qt5. Support for compiling with Qt4 has been removed.
  • The cmake(1) command-line option --warn-unused-vars has been removed and is now silently ignored. The option has not worked correctly since CMake 3.3.
  • Documentation:
  • The following guides have been added:
  • IDE Integration Guide
  • Importing and Exporting Guide
  • Other Changes:
  • Building for macOS will now use the latest SDK available on the system, unless the user has explicitly chosen a SDK using CMAKE_OSX_SYSROOT. The deployment target or system macOS version will not affect the choice of SDK.
  • The CMAKE__COMPILER variable may now be used to store “mandatory” compiler flags like the CC and other environment variables.
  • The CMAKE__FLAGS_INIT variable will now be considered during the compiler identification check if other sources like CMAKE__FLAGS or CFLAGS are not set.
  • The find_program() command now requires permission to execute but not to read the file found. See policy CMP0109.
  • An imported target with a missing location now fails during generation if the location is used. See policy CMP0111.
  • The following target-based generator expressions that query for directory or file name components no longer add a dependency on the evaluated target. See policy CMP0112.
  • TARGET_FILE_DIR
  • TARGET_LINKER_FILE_BASE_NAME
  • TARGET_LINKER_FILE_NAME
  • TARGET_LINKER_FILE_DIR
  • TARGET_SONAME_FILE_NAME
  • TARGET_SONAME_FILE_DIR
  • TARGET_PDB_FILE_NAME
  • TARGET_PDB_FILE_DIR
  • TARGET_BUNDLE_DIR
  • TARGET_BUNDLE_CONTENT_DIR
  • Makefile Generators no longer repeat custom commands from target dependencies. See policy CMP0113.
  • The ExternalProject module handling of step target dependencies has been revised. See policy CMP0114.
  • The OSX_ARCHITECTURES target property is now respected for the ASM language.
  • If CUDA compiler detection fails with user-specified CMAKE_CUDA_ARCHITECTURES or CMAKE_CUDA_HOST_COMPILER, an error is raised.

New in CMake 3.18.4 (Oct 7, 2020)

  • Brad King (3):
  • FindJNI: Add aarch64 support
  • VS: Populate `std:c{11,17}` flag table entries for v142
  • CMake 3.18.4
  • Cristian Adam (1):
  • OBJCXX: Fix regression for compiling cpp files as objcxx
  • Kinan Mahdi (1):
  • VS: Fix regression in C# source links
  • Marc Chevrier (1):
  • FindPython: Fix erroneous regex in ABI check
  • Shoaib Meenai (1):
  • Clang: Look for llvm-lib when using MSVC-like front-end
  • zasdfg bnm (1):
  • FindCUDA/select_compute_arch: Add CUDA 11.1 and SM86 support

New in CMake 3.18.3 (Sep 23, 2020)

  • Alexandru Croitor (1):
  • AutoGen: Fix moc and uic dependencies when building Qt itself
  • Ben McMorran (1):
  • foreach: Fix crash parsing integer out of range
  • Brad King (5):
  • gitlab-ci: Prefer MR rules for any pipeline associated with a MR
  • Help: Update 3.18.2 release notes to mention 3.16.9 and 3.17.5
  • gitlab-ci: update macOS jobs to use Xcode 11.7
  • Check*CompilerFlag: Do not set result as a normal variable too
  • CMake 3.18.3
  • Cristian Adam (2):
  • PCH: Mark CMake PCH source files as -x -header
  • PCH: Fix 30s wait for VS2008 when used via -Tv90
  • Joerg Bornemann (2):
  • AutoMoc: Restore support for re-running after project file changes
  • AutoMoc: Re-run moc if a dependency is missing
  • Josef Angstenberger (1):
  • file(GENERATE): Create output file structures for all directories first
  • Kyle Edwards (5):
  • Tests: Pass additional Qt information to Ninja and NMC tests
  • Ninja Multi-Config: Fix clean:all target
  • Ninja Multi-Config: Fix cleaning of utility targets with commands
  • Ninja Multi-Config: Fix dependencies of utility targets
  • Ninja Multi-Config: Fix dependencies of custom commands
  • Malcolm Parsons (1):
  • FindJNI: Add arm64 support
  • Marc Chevrier (4):
  • UseSWIG: Update option -interface usage
  • FindPython: enhance ABI checks against include directory
  • FindPython: CMP0012 must be set to NEW
  • ARMClang: Fix link line generation after addition of armlink support
  • Michael Hirsch (1):
  • FindMatlab: add R2020b => 9.9
  • Raul Tambre (1):
  • MSVC: Record support for c_static_assert
  • Robert Maynard (1):
  • CUDA: Support setting CUDA14/17 when using MSVC
  • Sumit Bhardwaj (1):
  • Implement cm::static_reference_cast by declval

New in CMake 3.18.2 (Aug 21, 2020)

  • Alexandru Croitor (2):
  • AutoGen: Fix over-specified direct dependencies of custom command
  • AutoGen: Add test to check for correct AutoMoc dependencies
  • Axel Huebl (1):
  • FindMPI: Fix regression in pthread guard
  • Ben Boeckel (1):
  • FPHSA: detect inclusion between find modules
  • Brad King (8):
  • Tests: Isolate RunCMake.FindPkgConfig from caller environment
  • FindRuby: Restore compatibility variable RUBY_INCLUDE_PATH
  • Xcode: Explicitly turn off signing in try_compile projects
  • PCH: Avoid Apple-specific architecture flags on other platforms
  • gitlab-ci: add 'cmake' tag to all jobs
  • Tests: Fix RunCMake.try_compile test for C standards with MSVC 19.27
  • gitlab-ci: Update Windows builds to MSVC 19.27
  • CMake 3.18.2
  • Craig Scott (2):
  • ExternalProject: Stop patch target from always appearing out-of-date
  • ExternalProject: Stop configure target from always appearing out-of-date
  • Cristian Adam (1):
  • PCH: Avoid unnecessary 30s delay on MSBuild Generator with REUSE_FROM
  • Daniele E. Domenichelli (1):
  • FindRuby: Add documentation for deprecated variables
  • Joerg Bornemann (2):
  • Autogen: Turn off moc path prefix generation by default
  • Help: Add 3.18.2 release note about AUTOMOC_PATH_PREFIX default change
  • Kyle Edwards (1):
  • Ninja: Restore shorter path to response files
  • Laurits Riple (1):
  • GoogleTest: Restore support for list arguments in TEST_EXECUTOR
  • Marc Chevrier (3):
  • FindPython: ensure user's policies are respected
  • FindPython: manage SOABI for all Python versions
  • FindPython: enhance robustness of version extraction from library name
  • Raul Tambre (1):
  • MSVC: Record support for C11 and c_restrict
  • Robert Maynard (1):
  • CMakeFindBinUtils: Always consider plain binutils when not cross-compiling
  • Seth R Johnson (1):
  • FindHDF5: fix compiler detection when HL is disabled
  • Thomas Bernard (1):
  • llvm-rc: Fix quoting of path to cmake in CMAKE_RC_COMPILE_OBJECT

New in CMake 3.18.1 (Jul 31, 2020)

  • Ben Boeckel (1):
  • gitlab-ci: avoid failing dependent steps
  • Brad King (16):
  • cmGlobalXCodeGenerator: Save CMAKE_SYSTEM_NAME in member
  • Swift: Fix regression in linking to interface libraries
  • Xcode: Explicitly specify default native architecture on macOS
  • bootstrap: Add options to control use of system nghttp2
  • GHS: Fix crash when GHS_NO_SOURCE_GROUP_FILE property is not defined
  • Auxiliary: Add options to control Vim and Emacs file installation
  • cmake-gui: Fix crash when built with Qt 5.14 or later
  • VS: Restore toleration of target-wide -TP flag with MSVC
  • Xcode: Suppress legacy build system deprecation warning
  • Help: Update file(GET_RUNTIME_DEPENDENCIES) prose to match option names
  • FindXalanC: Fix version parsing for XalanC 1.12
  • bootstrap: Fix support for Intel compiler with modern GNU system compiler
  • Compilers: Ignore -print-sysroot prefix when it is '/'
  • add_test: Revert "Allow special characters in test name"
  • Clang: Fix fallback compile features when simulating old MSVC versions
  • CMake 3.18.1
  • Cristian Adam (1):
  • Unity Builds: Do not set SKIP_AUTOGEN to source files
  • Julien Schueller (1):
  • centos5: Fix FTBFS with strdup
  • Kyle Edwards (1):
  • Ninja Multi-Config: Make link response files per-config
  • Mike Gelfand (1):
  • FindCURL: Fix list index check after search
  • Nate Avers (1):
  • ExternalProject: omit --no-checkout from git clone when using git 2.20.x.
  • Stephan Rohmen (2):
  • Graphviz: Restore support for per-target dependency graph options
  • Tests: Cover Graphviz support for per-target dependency graph options

New in CMake 3.17.3 (May 28, 2020)

  • Selection of the Objective C or C++ compiler now considers the CC or CXX environment variable if the OBJC or OBJCXX environment variable is not set.
  • The FindPkgConfig module now extracts include directories prefixed with -isystem into the *_INCLUDE_DIRS variables and INTERFACE_INCLUDE_DIRECTORIES target properties. Previously they would be places in *_CFLAGS_OTHER variables and INTERFACE_COMPILE_OPTIONS target properties.

New in CMake 3.17.2 (Apr 29, 2020)

  • PGP sig by 2D2CEF1034921684

New in CMake 3.17.0 (Apr 8, 2020)

  • New Features:
  • Generators:
  • 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.
  • Visual Studio Generators for VS 2010 and above now support specifying the VCTargetsPath value for project files in CMAKE_GENERATOR_TOOLSET setting.
  • Visual Studio Generators for VS 2010 and above learned to support .NET Standard and .NET Core. See the DOTNET_TARGET_FRAMEWORK target property and associated CMAKE_DOTNET_TARGET_FRAMEWORK variable.
  • Languages:
  • 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.
  • Compilers:
  • The IBM XL Fortran compiler is now supported by the Ninja generator.
  • Command-Line:
  • cmake(1) gained a --debug-find command-line option to enable additional human-readable output on where find_* commands search.
  • cmake(1) gained a --trace-format command-line option that can be used to set the --trace output format. Currently, the old human readable and the new JSON format are supported. The new JSON format is easier to parse automatically than the existing format.
  • 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.
  • Commands:
  • The add_custom_command() command learned to interpret paths in DEPENDS arguments that are specified relative to the current binary directory.
  • The foreach() command learned a new ZIP_LISTS option to iterate over multiple lists simultaneously.
  • The load_cache(READ_WITH_PREFIX) command mode is now allowed when using cmake -P to Run a Script.
  • The message() command learned to output context provided in the CMAKE_MESSAGE_CONTEXT variable for log levels NOTICE and below. Enable this output with the new --log-context command-line option or CMAKE_MESSAGE_CONTEXT_SHOW variable.
  • The message() command gained new keywords CHECK_START, CHECK_PASS and CHECK_FAIL.
  • The target_compile_options() command now honors the BEFORE keyword more consistently. See policy CMP0101.
  • Variables:
  • A CMAKE_CTEST_ARGUMENTS variable was added to specify a list of command-line arguments passed to CTest when running through the test (or RUN_TESTS) target of the generated build system.
  • The following variables are now defined inside a function()
  • CMAKE_CURRENT_FUNCTION
  • CMAKE_CURRENT_FUNCTION_LIST_DIR
  • CMAKE_CURRENT_FUNCTION_LIST_FILE
  • CMAKE_CURRENT_FUNCTION_LIST_LINE
  • 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 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 CMAKE_EXPORT_COMPILE_COMMANDS variable now takes its initial value from the CMAKE_EXPORT_COMPILE_COMMANDS environment variable if no explicit configuration is given.
  • The CMAKE__COMPILER_LAUNCHER variable, if not set explicitly, now takes its initial value from the CMAKE__COMPILER_LAUNCHER environment variable.
  • The CMAKE_MESSAGE_LOG_LEVEL variable can now be used to persist a log level between CMake runs, unlike the --log-level command line option which only applies to that particular run.
  • The CMAKE_XCODE_SCHEME_ENVIRONMENT variable was added to initialize the XCODE_SCHEME_ENVIRONMENT target property.
  • The CMAKE_XCODE_SCHEME_WORKING_DIRECTORY variable and associated XCODE_SCHEME_WORKING_DIRECTORY target property were added to tell the Xcode generator to set the value of the Custom Working Directory schema option.
  • Properties:
  • The AIX_EXPORT_ALL_SYMBOLS target property and associated CMAKE_AIX_EXPORT_ALL_SYMBOLS variable were created to optionally explicitly disable automatic export of symbols from shared libraries on AIX.
  • The DEPRECATION target property was added to mark a target as deprecated. If a linked target is marked as deprecated, a warning with the deprecation message is issued at generate time.
  • The INSTALL_NAME_DIR target property now supports generator expressions. In particular, the $ generator expression can be used to set the directory relative to the install-time prefix.
  • Target properties MACHO_COMPATIBILITY_VERSION and MACHO_CURRENT_VERSION were added to set the compatibility_version and curent_version, respectively, for Mach-O binaries. For backwards compatibility, if these properties are not set, SOVERSION and VERSION are used respectively as fallbacks.
  • The VS_DOTNET_DOCUMENTATION_FILE target property was added to tell Visual Studio Generators to generate a DocumentationFile reference in .csproj files.
  • Modules:
  • The ExternalProject module ExternalProject_Add() command gained a GIT_SUBMODULES_RECURSE option to specify whether Git submodules should be updated recursively. The default is on to preserve existing behavior.
  • The FindCUDAToolkit module was added to find the CUDA Toolkit without enabling CUDA as a language.
  • 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 FindFLEX module’s FLEX_TARGET command now runs flex with CMAKE_CURRENT_BINARY_DIR as the working directory. See policy CMP0098.
  • The FindLibArchive module now provides an imported target for libarchive.
  • The FindPython module has learned to find Python components in active virtual environments managed by conda.
  • The FindPython3 and FindPython modules gained, respectively, variable Python3_SOABI and Python_SOABI giving the standard extension suffix for modules. Moreover, commands Python3_add_library() and Python_add_library() gained the option WITH_SOABI to prefix the library suffix with the value of SOABI.
  • The FindLibXml2 module now provides an imported target for the xmllint executable.
  • Autogen:
  • AUTOMOC and AUTOUIC learned to process headers with a .hh extension. See policy CMP0100.
  • CTest:
  • The CTEST_CONFIGURATION_TYPE variable is now set from the command line when ctest(1) is invoked with -C .
  • The ctest(1) tool gained support for Dr. Memory to run memcheck runs.
  • The ctest(1) tool gained a --no-tests= 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.
  • The ctest_test() command gained a REPEAT : option to specify conditions in which to repeat tests.
  • CPack:
  • The CPack DragNDrop Generator learned to use the CPACK_DMG__FILE_NAME variable to set a custom filename when packaging components into their own DMGs.
  • The CPack DragNDrop Generator learned to handle RTF formatted license files. When CPACK_DMG_SLA_DIR variable is set, .license.rtf is considered, but only as a fallback when the plaintext (.txt) file is not found in order to maintain backwards compatibility.
  • The CPack NSIS Generator gained a new variable CPACK_NSIS_MUI_HEADERIMAGE to set the header image. To not break existing setups, it still defaults to CPACK_PACKAGE_ICON if the new variable is not set.
  • The CPack NSIS Generator now supports CPACK_NSIS_UNINSTALL_NAME. This can be used to specify the name of the Uninstall program.
  • The CPack NSIS Generator now supports CPACK_NSIS_WELCOME_TITLE and CPACK_NSIS_WELCOME_TITLE_3LINES. These can be used to specify the welcome page title and display it in 3 lines.
  • The CPack NSIS Generator now supports CPACK_NSIS_FINISH_TITLE and CPACK_NSIS_FINISH_TITLE_3LINES. These can be used to specify the finish page title and display it in 3 lines.
  • The CPack productbuild Generator gained support for a CPACK_PRODUCTBUILD_BACKGROUND variable to specify a background image for the macOS installer.
  • Other:
  • ccmake(1) now displays cache values using colors based on the entry type if the terminal supports color.
  • ccmake(1) now displays messages and a progress bar during configure and generate. It will keep the output displayed if any errors or warnings occurred.
  • Deprecated and Removed Features:
  • An explicit deprecation diagnostic was added for policy CMP0068 and policy CMP0069 (CMP0067 and below were already deprecated). The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
  • The CPack PackageMaker Generator generator has been deprecated because Xcode no longer distributes the PackageMaker tools. The undocumented OSXX11 generator has also been deprecated.
  • The cmake(1) command-line -E remove and -E remove_directory tools are deprecated in favor of the new -E rm tool. The older tools always returned 0 if a named path did not exist even without the force option and cannot be fixed without breaking compatibility, and so have been superseded.
  • Other Changes:
  • The file API index file now emits a multiConfig flag specifying whether or not the generator supports multiple output configurations.
  • 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 MinGW Makefiles generator no longer issues an error if sh.exe is present in the environment’s PATH.
  • 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.
  • With SDCC the sdar tool is now preferred over sdcclib as librarian. The latter was deprecated by SDCC 3.2.0 and removed in SDCC 3.8.6.
  • With SDCC the default flags no longer include any target-specific flags. Previously the default flags were hard-coded for 8051.
  • The CMAKE_VS_GLOBALS variable value now applies during compiler identification and in targets created by the add_custom_target() command.
  • The Xcode generator no longer hard-codes -Wmost, -Wno-four-char-constants, and -Wno-unknown-pragmas warning flags.

New in CMake 3.16.5 (Mar 5, 2020)

  • Brad King (5):
  • libarchive: Fix WideCharToMultiByte output buffer size
  • libarchive: Add support for UTF-8 locale on Windows
  • Propagate backtraces from LINK_LIBRARIES through to link line items
  • Help: Update CMake 3.16 release notes for 3.16.5
  • CMake 3.16.5
  • Francisco Facioni (1):
  • Ninja: Do not use nvcc response files with non-nvcc tools
  • Kyle Edwards (1):
  • install: Fix regression when using default destinations
  • Marc Chevrier (2):
  • FindPython: Mark non-public cache entries INTERNAL in CMake 3.16
  • FindPython: Do not cache computed result variables in CMake 3.16
  • Rolf Eike Beer (1):
  • FindPkgConfig: set policies CMP0054 and CMP0057 to new

New in CMake 3.16.4 (Feb 6, 2020)

  • Brad King (6):
  • ASM_MASM: Populate MSVC runtime library abstraction table
  • VS: Tell VS 16.4 not to verify SYMBOLIC custom command inputs
  • AIX: Restore pre-3.16 undocumented method to suppress exports with XL
  • Android: Fix binutils selection with NDK r19+ unified toolchain
  • VS: Do not use native unity builds on VS 2017 versions less than 15.8
  • CMake 3.16.4
  • Kyle Edwards (3):
  • file(GET_RUNTIME_DEPENDENCIES): Tolerate empty list arguments
  • Help: Add more variable documentation to FindMPI
  • CPack: Fix regression in Deb description

New in CMake 3.16.3 (Jan 22, 2020)

  • Ashley Whetter (1):
  • FindOpenSSL: Fix ordering of dependency link flags
  • Brad King (3):
  • GNUtoMS: Add search path for VS 2019 environment scripts
  • IRSL: Install msvcp140_{1,2,codecvt_ids}.dll if available
  • CMake 3.16.3
  • Cristian Adam (4):
  • ObjC: Add _COMPILE_LAUNCHER support
  • ObjC: Add VISIBLITY_INLINES_HIDDEN support
  • Unity Build: include language in generated source file name
  • PCH: No repeated path for internal generated PCH files (MSVC case)
  • Kyle Edwards (2):
  • CTest: Improve error handling when reading resource spec file
  • CPack: Fix regression in DEB generator description
  • Marc Chevrier (3):
  • FindPython*: Fix erroneous target properties setting
  • macOS: Add support for new Xcode 11 frameworks directory
  • FindPython: ensure new Xcode framework for Python3 is detected
  • Miro Hrončok (1):
  • FindPython: Add support for version 3.9
  • Neil Carlson (1):
  • Fortran: Add support for NAG Fortran submodules
  • Pavel Liavonau (1):
  • VS: Add Fortran link flag table entries for /OPT:*
  • Robert Maynard (1):
  • CUDA: Do not device link if target has no CUDA usage
  • Sebastian Holtermann (1):
  • Autogen: Enable SKIP_UNITY_BUILD_INCLUSION on AUTORCC generated files
  • Silvio Traversaro (2):
  • FindMatlab: add R2019a and R2019b MATLAB_VERSIONS_MAPPING
  • FindMatlab: in matlab_add_mex use the correct version file

New in CMake 3.16.2 (Dec 20, 2019)

  • Brad King (6):
  • VS: Fix support for v142 toolset minor versions in VS 16.5+
  • FindBLAS: Consider OpenBLAS with thread libraries only with C or CXX
  • FindBoost: Add support for Boost 1.72
  • Autogen: Revert processing of .hh files for compatibility
  • FindLAPACK: Fix support for LAPACK symbols inside BLAS libraries
  • CMake 3.16.2
  • Cristian Adam (1):
  • PCH: Append pch header file to list of forced include files
  • Michael Dickens (1):
  • Tests: Fix testCTestResourceSpec struct initialization for some compilers

New in CMake 3.16.1 (Dec 11, 2019)

  • Alexander Grund (2):
  • bootstrap: Add target_link_options command
  • Check for support before adding bigtoc linker flag
  • Ben Boeckel (1):
  • TestDriver: ignore strcpy call
  • Brad King (2):
  • FindThreads: Restore hard-coded '-l' flag on library name
  • CMake 3.16.1
  • Cristian Adam (5):
  • PCH: Do not add #pragma system_header for Xcode generator
  • Unity/PCH: Skip more target types when adding automatic sources
  • Unity: Generic source file handling for all generators
  • Unity: Proper handling of object libraries
  • PCH: Use the target's PREFIX for building the pdb file name
  • Kyle Edwards (1):
  • CTest Resource Allocation: Add test for spec file with no version
  • Tobias Taschner (1):
  • FindwxWidgets: Add support for 3.1.3 on macOS

New in CMake 3.16.0 (Nov 26, 2019)

  • New Features:
  • Languages:
  • CMake learned to support the Objective C (OBJC) and Objective C++ (OBJCXX) languages. They may be enabled via the project() and enable_language() commands. When OBJC or OBJCXX is enabled, source files with the .m or .mm, respectively, will be compiled as Objective C or C++. Otherwise they will be treated as plain C++ sources as they were before.
  • Compilers:
  • The Clang compiler is now supported on Solaris.
  • Platforms:
  • On AIX, executables using the ENABLE_EXPORTS target property now produce a linker import file with a .imp extension in addition to the executable file. Plugins (created via add_library() with the MODULE option) that use target_link_libraries() to link to the executable for its symbols are now linked using the import file. The install(TARGETS) command now installs the import file as an ARCHIVE artifact.
  • On AIX, runtime linking is no longer enabled by default. CMake provides the linker enough information to resolve all symbols up front. One may manually enable runtime linking for shared libraries and/or loadable modules by adding -Wl,-G to their link flags (e.g. in the CMAKE_SHARED_LINKER_FLAGS or CMAKE_MODULE_LINKER_FLAGS variable). One may manually enable runtime linking for executables by adding -Wl,-brtl to their link flags (e.g. in the CMAKE_EXE_LINKER_FLAGS variable).
  • Command-Line:
  • cmake(1) -E now supports true and false commands, which do nothing while returning exit codes of 0 and 1, respectively.
  • cmake(1) gained a --trace-redirect= command line option that can be used to redirect --trace output to a file instead of stderr.
  • The cmake(1) --loglevel command line option has been renamed to --log-level to make it consistent with the naming of other command line options. The --loglevel option is still supported to preserve backward compatibility.
  • Commands:
  • The add_test() command learned the option COMMAND_EXPAND_LISTS which causes lists in the COMMAND argument to be expanded, including lists created by generator expressions.
  • The file() command learned a new sub-command, GET_RUNTIME_DEPENDENCIES, which allows you to recursively get the list of libraries linked by an executable or library. This sub-command is intended as a replacement for GetPrerequisites.
  • The find_file(), find_library(), find_path(), find_package(), and find_program() commands have learned to check the following variables to control the default behavior for groups of search locations:
  • CMAKE_FIND_USE_PACKAGE_ROOT_PATH - Controls the default behavior of searching the _ROOT variables.
  • CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH - Controls the default behavior of searching the CMake-specific environment variables.
  • CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH - Controls the default behavior of searching the standard system environment variables.
  • CMAKE_FIND_USE_CMAKE_PATH - Controls the default behavior of searching the CMake-specific cache variables.
  • CMAKE_FIND_USE_CMAKE_SYSTEM_PATH - Controls the default behavior of searching the platform-specific CMake variables.
  • The find_package() command has learned to check the CMAKE_FIND_USE_PACKAGE_REGISTRY variable to control the default behavior of searching the CMake user package registry and to check the CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY variable to control the default behavior of searching the CMake system package registry.
  • The message() command learned indentation control with the new CMAKE_MESSAGE_INDENT variable.
  • The target_precompile_headers() command was added to specify a list of headers to precompile for faster compilation times.
  • Variables:
  • The CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS variable has been introduced to optionally initialize the CUDA_RESOLVE_DEVICE_SYMBOLS target property.
  • The CMAKE_ECLIPSE_RESOURCE_ENCODING variable was added to specify the resource encoding for the the Eclipse CDT4 extra generator.
  • The CMAKE_UNITY_BUILD variable was added to initialize the UNITY_BUILD target property to tell generators to batch include source files for faster compilation times.
  • Properties:
  • The BUILD_RPATH and INSTALL_RPATH target properties now support generator expressions.
  • The INSTALL_REMOVE_ENVIRONMENT_RPATH target property was added to remove compiler-defined RPATH entries from a target. This property is initialized by the CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH variable.
  • The PRECOMPILE_HEADERS target property was added to specify a list of headers to precompile for faster compilation times. Set it using the target_precompile_headers() command.
  • The UNITY_BUILD target property was added to tell generators to batch include source files for faster compilation times.
  • The VS_CONFIGURATION_TYPE target property now supports generator expressions.
  • The VS_DPI_AWARE target property was added to tell Visual Studio Generators to set the EnableDpiAwareness property in .vcxproj files.
  • The XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING target property was added to tell the Xcode generator to set the value of the Allow debugging when using document Versions Browser schema option.
  • Modules:
  • The FindDoxygen module doxygen_add_docs() command gained a new USE_STAMP_FILE option. When this option present, the custom target created by the command will only re-run Doxygen if any of the source files have changed since the last successful run.
  • The FindGnuTLS module now provides an imported target.
  • The FindPackageHandleStandardArgs module find_package_handle_standard_args() command gained a new REASON_FAILURE_MESSAGE option to specify a message giving the reason for the failure.
  • The FindPkgConfig module pkg_search_module() macro now defines a _MODULE_NAME result variable containing the first matching module name.
  • The FindPython3 and FindPython modules gained options to control which ABIs will be searched.
  • The FindPython3, FindPython2, and FindPython modules now support direct specification of artifacts via cache entries.
  • Autogen:
  • When using AUTOMOC, CMake now generates the -p path prefix option for moc. This ensures that moc output files are identical on different build setups (given, that the headers compiled by moc are in an include directory). Also it ensures that moc output files will compile correctly when the source and/or build directory is a symbolic link.
  • The moc path prefix generation behavior can be configured by setting the new CMAKE_AUTOMOC_PATH_PREFIX variable and/or AUTOMOC_PATH_PREFIX target property.
  • CTest:
  • ctest(1) now has the ability to schedule tests based on resource requirements for each test. See Resource Allocation for details.
  • A new test property, SKIP_REGULAR_EXPRESSION, has been added. This property is similar to FAIL_REGULAR_EXPRESSION and PASS_REGULAR_EXPRESSION, but with the same meaning as SKIP_RETURN_CODE. This is useful, for example, in cases where the user has no control over the return code of the test. For example, in Catch2, the return value is the number of assertion failed, therefore it is impossible to use it for SKIP_RETURN_CODE.
  • CPack:
  • cpack(1) learned support for multiple configurations for -C option.
  • The CPack DEB Generator is now able to format generic text (usually used as the description for multiple CPack generators) according to the Debian Policy Manual. See the CPACK_PACKAGE_DESCRIPTION_FILE and CPACK_DEBIAN__DESCRIPTION variables.
  • The CPack Archive Generator learned to generate .tar.zst packages with Zstandard compression.
  • Deprecated and Removed Features:
  • An explicit deprecation diagnostic was added for policy CMP0067 (CMP0066 and below were already deprecated). The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
  • The CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY variable has been deprecated. Use the CMAKE_FIND_USE_PACKAGE_REGISTRY variable instead.
  • The GetPrerequisites module has been deprecated, as it has been superceded by file(GET_RUNTIME_DEPENDENCIES).
  • The CPACK_INSTALL_SCRIPT variable has been deprecated in favor of the new, more accurately named CPACK_INSTALL_SCRIPTS variable.
  • Other Changes:
  • The cmake(1) -C option now evaluates the initial cache script with CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR set to the top-level source and build trees.
  • The cmake(1) -E remove_directory command-line tool, when given the path to a symlink to a directory, now removes just the symlink. It no longer removes content of the linked directory.
  • The ctest(1) --build-makeprogram command-line option now specifies the make program used when configuring a project with the Ninja generator or the Makefile Generators.
  • The ExternalProject module ExternalProject_Add() command has been updated so that GIT_SUBMODULES "" initializes no submodules. See policy CMP0097.
  • The FindGTest module has been updated to recognize MSVC build trees generated by GTest 1.8.1.
  • The project() command no longer strips leading zeros in version components. See policy CMP0096.
  • The Qt Compressed Help file is now named CMake.qch, which no longer contains the release version in the file name. When CMake is upgraded in-place, the name and location of this file will remain constant. Tools such as IDEs, help viewers, etc. should now be able to refer to this file at a fixed location that remains valid across CMake upgrades.
  • RPATH entries are properly escaped in the generated CMake scripts used for installation. See policy CMP0095.
  • When using CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS on Windows the auto-generated exports are now updated only when the object files providing the symbols are updated.

New in CMake 3.15.5 (Oct 31, 2019)

  • Alan W. Irwin (1):
  • Help: Fix COMPILE_LANG_AND_ID genex example
  • Brad King (7):
  • VS: Fix support for v142 toolset minor versions
  • Xcode: Restore CMAKE_XCODE_GENERATE_SCHEME for custom targets
  • VS: Tell VS 16.4 not to verify CMake-provided custom command outputs
  • VS: Add toolset v142 CSharp flag table
  • IRSL: Prefer MSVC runtime libraries from newest toolset first
  • IRSL: Install vcruntime140_1.dll if available
  • CMake 3.15.5

New in CMake 3.15.4 (Oct 3, 2019)

  • PGP sig by 2D2CEF1034921684

New in CMake 3.15.3 (Sep 5, 2019)

  • Brad King (13):
  • Flang: Implement MSVC runtime library abstraction
  • CTest: Fix --show-only=json-v1 output with REQUIRED_FILES property
  • cmGlobalGenerator: Fix CheckCompilerIdCompatibility local var lifetime
  • cmAffinity: Add include for CPU_ZERO on Alpine Linux
  • find_path: Fix crash on empty old-style list of names
  • fileapi: Fix codemodel v2 target file name for CMP0037 OLD behavior
  • FindBoost: Simplify conditional block for last known version
  • FindBoost: Remove incorrect 1.70 timer dependency
  • FindBoost: Unwrap compatibility INTERFACE targets for legacy variables
  • FindBoost: Add support for Boost 1.71
  • FindBoost: Clarify role of legacy variables in warning message
  • FindBoost: Tolerate future Boost INTERFACE libraries
  • CMake 3.15.3
  • Chuck Atkins (1):
  • CrayPrgEnv: Change default linking mode based on PE version
  • M Furkan USLU (1):
  • ccmake: handle cache entries with empty STRINGS property
  • Marvin Schmidt (1):
  • libarchive: We now require at least version 3.3.3
  • Robert Maynard (1):
  • FindMPI: Restore MPI__COMPILE_FLAGS and MPI__COMPILE_OPTIONS
  • Sebastian Holtermann (3):
  • Ninja: Add support for ADDITIONAL_CLEAN_FILES in custom targets
  • Tests: Extend MakeClean test to test various target types
  • Autogen: Fix AUTOUIC segfault, when file includes colliding ui_*.h file

New in CMake 3.15.1 (Aug 8, 2019)

  • Brad King (8):
  • Swift: Restore support for enabling with INTERFACE libraries
  • VS: Fix mapping of `-Qspectre-` flag
  • source_group: Fix regression in relative FILES
  • clang: Restore support for clang-cl on non-Windows hosts
  • fileapi: Fix codemodel target install destination for cross-dir rules
  • clang: Work around toolchain file use of internal CMake variables
  • Help: Add 3.15.2 release notes
  • CMake 3.15.2
  • Claudio Fantacci (3):
  • FindGLEW: Fix macOS library suffix selection
  • FindGLEW: Add required OpenGL dependency in macOS
  • FindGLEW: Fix typo in verbose log message
  • Cristian Adam (1):
  • find_package: Fix prefer-config mode to not fail on missing optional package

New in CMake 3.15.0 (Jul 18, 2019)

  • New Features:
  • Generators:
  • The "Xcode" generator now supports per-target schemes. See the "CMAKE_XCODE_GENERATE_SCHEME" variable and "XCODE_GENERATE_SCHEME" target property.
  • The "Green Hills MULTI" generator has been updated:
  • It now supports the "add_custom_command()" and "add_custom_target()" commands.
  • It is now available on Linux.
  • Languages:
  • Preliminary support for the "Swift" language was added to the "Ninja" generator:
  • Use the "SWIFTC" environment variable to specify a compiler.
  • The "Swift_DEPENDENCIES_FILE" target property and "Swift_DEPENDENCIES_FILE" source file property were added to customize dependency files.
  • The "Swift_MODULE_NAME" target property was added to customize the Swift module name.
  • The "Swift_DIAGNOSTICS_FILE" source property was added to indicate where to write the serialised Swift diagnostics.
  • The Swift support is experimental, not considered stable, and may change in future releases of CMake.
  • Compilers:
  • The "Clang" compiler variant on Windows that targets the MSVC ABI but has a GNU-like command line is now supported.
  • Support for the Clang-based ARM compiler was added with compiler id "ARMClang".
  • Support was added for the IAR compiler architectures Renesas RX, RL78, RH850 and Texas Instruments MSP430.
  • Support was added for the IAR compilers built for Linux (IAR BuildLx).
  • Command-Line:
  • The "CMAKE_GENERATOR" environment variable was added to specify a default generator to use when "cmake(1)" is run without a "-G" option. Additionally, environment variables "CMAKE_GENERATOR_PLATFORM", "CMAKE_GENERATOR_TOOLSET", and "CMAKE_GENERATOR_INSTANCE" were created to configure the generator.
  • The "cmake(1)" "--build" tool "--target" parameter gained support for multiple targets, e.g. "cmake --build . --target Library1 Library2". It now also has a short form "-t" alias, e.g. "cmake --build . -t Library1 Library2".
  • The "cmake(1)" command gained a new "--install" option. This may be used after building a project to run installation without using the generated build system or the native build tool.
  • The "cmake(1)" command learned a new CLI option "--loglevel".
  • The "cmake(1)" "-E remove_directory" command-line tool learned to support removing multiple directories.
  • The "cmake(1)" "-E tar" tool has been improved:
  • It now continues adding files to an archive even if some of the files are not readable. This behavior is more consistent with the classic "tar" tool.
  • It now parses all flags, and if an invalid flag was provided, a warning is issued.
  • It now displays an error if no action flag was specified, along with a list of possible actions: "t" (list), "c" (create) or "x" (extract).
  • It now supports extracting ("-x") or listing ("-t") only specific files or directories.
  • It now supports Zstandard compression with a "--zstd" option. Zstandard was designed to give a compression ratio comparable to that of the DEFLATE (zip) algorithm, but faster, especially for decompression.
  • Commands:
  • The "add_custom_command()" and "add_custom_target()" commands gained a new "JOB_POOL" option that works with the "Ninja" generator to set the pool variable on the build statement.
  • The "add_library()" command "ALIAS" option learned to support import libraries of the "UNKNOWN" type.
  • The "cmake_parse_arguments()" command gained an additional "_KEYWORDS_MISSING_VALUES" output variable to report keyword arguments that were given by the caller with no values.
  • The "execute_process()" command gained a "COMMAND_ECHO" option and supporting "CMAKE_EXECUTE_PROCESS_COMMAND_ECHO" variable to enable echoing of the command-line string before execution.
  • The "file(INSTALL)" command learned a new argument, "FOLLOW_SYMLINK_CHAIN", which can be used to recursively resolve and install symlinks.
  • "list()" learned new sub-commands: "PREPEND", "POP_FRONT" and "POP_BACK".
  • The "message()" command learned new types: "NOTICE", "VERBOSE", "DEBUG" and "TRACE".
  • The "string()" learned a new sub-command "REPEAT".
  • Variables:
  • The "CMAKE_CROSSCOMPILING_EMULATOR" variable and corresponding "CROSSCOMPILING_EMULATOR" target property learned to support arguments to the emulator.
  • 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 "CMAKE_FRAMEWORK" variable was added to initialize the "FRAMEWORK" property on all targets.
  • 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 "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 "CMP0091".
  • The "CMAKE_PROJECT_INCLUDE" and "CMAKE_PROJECT_INCLUDE_BEFORE" variables were added to allow injection of custom code at the sites of "project()" calls without knowing the project name a priori.
  • Properties:
  • The "ADDITIONAL_CLEAN_FILES" target property and "ADDITIONAL_CLEAN_FILES" directory property were added. They allow to register additional files that should be removed during the clean stage.
  • 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 "VS_PACKAGE_REFERENCES" target property was added to tell Visual Studio Generators to add references to "nuget" packages.
  • The "VS_PROJECT_IMPORT" target property was added to allow managed Visual Studio project files to import external ".props" files.
  • The "VS_NO_SOLUTION_DEPLOY" target property was added to tell Visual Studio Generators whether to deploy an artifact to the WinCE or Windows Phone target device.
  • Modules:
  • 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.
  • A new imported target "Boost::headers" is now defined (same as "Boost::boost").
  • New output variables "Boost_VERSION_MACRO", "Boost_VERSION_MAJOR", "Boost_VERSION_MINOR", "Boost_VERSION_PATCH", and "Boost_VERSION_COUNT" were added.
  • The "QUIET" argument passed to "find_package()" is no longer ignored in config mode. Note that the CMake package shipped with Boost "1.70.0" ignores the "QUIET" argument passed to "find_package()". This is fixed in the next Boost release.
  • The input switch "Boost_DETAILED_FAILURE_MSG" was removed.
  • "Boost_VERSION" now reports the version in "x.y.z" format in module mode. See policy "CMP0093".
  • The "FindCups" module now provides imported targets.
  • The "FindEnvModules" module was added to use Lua- and TCL-based environment modules in CTest Scripts.
  • The "FindGLEW" module now provides an interface more consistent with what upstream GLEW provides in its own CMake package files.
  • The "FindPkgConfig" now populates "INTERFACE_LINK_OPTIONS" property of imported targets with other (non-library) linker flags.
  • The "FindPostgreSQL" module learned to find debug and release variants separately.
  • Modules "FindPython3", "FindPython2" and "FindPython" gained additional lookup strategies and controls, and a new default. See policy "CMP0094".
  • Modules "FindPython", "FindPython2" and "FindPython3" gain a new target (respectively "Python::Module", "Python2::Module" and "Python3::Module") which can be used to develop Python modules.
  • Modules "FindPython3", "FindPython2" and "FindPython" gain capability to control how virtual environments are handled.
  • The "UseSWIG" module learned to manage alternate library names by passing "-interface " for "python" language or "-dllimport " for "CSharp" language to the "SWIG" compiler.
  • Generator Expressions:
  • The "generator expressions" "C_COMPILER_ID", "CXX_COMPILER_ID", "CUDA_COMPILER_ID", "Fortran_COMPILER_ID", "COMPILE_LANGUAGE", "COMPILE_LANG_AND_ID", and "PLATFORM_ID" learned to support matching one value from a comma-separated list.
  • CTest:
  • The "ctest_submit()" command learned a new option: "BUILD_ID". This can be used to store the ID assigned to this build by CDash to a variable.
  • The "ctest_update()" command learned to honor a new variable: "CTEST_UPDATE_VERSION_OVERRIDE". This can be used to specify the current version of your source tree rather than using the update command to discover the current version that is checked out.
  • CPack:
  • The "CPack IFW Generator" gained a new "CPACK_IFW_PACKAGE_STYLE_SHEET" variable to customize the installer stylesheet.
  • Deprecated and Removed Features:
  • The "cmake-server(7)" mode has been deprecated and will be removed from a future version of CMake. Please port clients to use the "cmake-file-api(7)" instead.
  • The "ADDITIONAL_MAKE_CLEAN_FILES" directory property is now deprecated. Use the "ADDITIONAL_CLEAN_FILES" directory property instead.
  • The variable "CMAKE_AUTOMOC_RELAXED_MODE" is considered deprecated. Support still exists but will be removed in future versions.
  • The "export(PACKAGE)" command now does nothing unless enabled via "CMAKE_EXPORT_PACKAGE_REGISTRY". See policy "CMP0090".
  • The "Xcode" generator now requires at least Xcode 5.
  • An explicit deprecation diagnostic was added for policy "CMP0066" ("CMP0065" and below were already deprecated). The "cmake-policies(7)" manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
  • Other Changes:
  • CMake learned how to compile C++14 with the IBM AIX XL compiler and the SunPro compiler and to compile C++20 with the AppleClang compiler.
  • With MSVC-like compilers the value of "CMAKE__FLAGS" no longer contains warning flags like "/W3" by default. See policy "CMP0092".
  • IBM Clang-based XL compilers that define "__ibmxl__" now use the compiler id "XLClang" instead of "XL". See policy "CMP0089".
  • The "file(REMOVE)" and "file(REMOVE_RECURSE)" commands were changed to ignore empty arguments with a warning instead of treating them as a relative path and removing the contents of the current directory.

New in CMake 3.14.6 (Jul 17, 2019)

  • Brad King (1):
  • CMake 3.14.6
  • Brian Carlson (1):
  • FindBISON: Fix CMP0088 NEW behavior for non-absolute input paths
  • Chuck Atkins (1):
  • Cray: Fix include parsing when the -hlist= flag is present
  • Marc Chevrier (1):
  • Android: ensure PIE behavior is consistent regardless CMP0083 policy

New in CMake 3.14.5 (Jun 3, 2019)

  • Alex Turbov (1):
  • FindBoost: Add compiler features for Boost Contract library
  • Brad King (5):
  • libarchive: avoid b64_encode name conflict with Solaris built-in function
  • FindThreads: Drop incorrect docs about usage with C++
  • Do not exclude include directories made implicit by CPATH
  • VS: Isolate custom command input/output generation scopes
  • CMake 3.14.5
  • Frans van Dorsselaer (2):
  • VS: Clarify name of custom commands AdditionalInputs variable
  • VS: De-duplicate custom command dependencies

New in CMake 3.14.4 (May 15, 2019)

  • Alex Turbov (2):
  • FindBoost: Record compiler features for Boost 1.67 and above
  • FindBoost: Fix compiler features for `fiber` and `context`
  • Alexandru Croitor (1):
  • iOS: Fix try_compile FILE_COPY not to fail
  • Brad King (3):
  • target_link_libraries: Fix static library private deps in other dirs
  • Help: Add 3.14.4 release notes
  • CMake 3.14.4
  • Daniele E. Domenichelli (1):
  • FindSWIG: Support swig4.0
  • Gregor Jasny (2):
  • Apple: Preserve high resolution mtime for static libraries
  • Apple: Properly lookup XCTest for iOS and tvOS
  • Marc Chevrier (2):
  • FindPython: NumPy: fix erroneous dependencies management
  • FindPython: ensure variable Python_RUNTIME_LIBRARY_DIRS is set correctly

New in CMake 3.14.3 (Apr 23, 2019)

  • Ben Boeckel (1):
  • FindOpenGL: look for GLVND libraries with a libglvnd suffix
  • Brad King (4):
  • FindBoost: Add support for MSVC toolset version 14.2
  • IRSL: Update redist directory for VS 2019 update 1
  • VS: Provide the default platform name to project code
  • CMake 3.14.3
  • Christian Pfeiffer (1):
  • FindQt3: Restore missing lib and bin path suffixes
  • Rolf Eike Beer (1):
  • FindBoost: Fix detection with version suffixes on Gentoo

New in CMake 3.14.2 (Apr 14, 2019)

  • Brad King (9):
  • MSVC: Fix MSVC_TOOLSET_VERSION for VS 2019 v142 toolset
  • ARMCC: Do not identify ARMClang as ARMCC
  • IRSL: Fix discovery of VS 2019 v142 toolset redistributables
  • Tests: Clarify hand-written cases in RunCMake.ParseImplicitIncludeInfo
  • Tests: Teach RunCMake.ParseImplicitIncludeInfo to match output by regex
  • Fix implicit include directory extraction for adaptive relative paths
  • Xcode: Factor out duplicate source group code into lambda
  • Xcode: Avoid mutating App Bundle targets during generation
  • CMake 3.14.2
  • Regina Pfeifer (1):
  • Modules/CTest: Fix SubmitURL

New in CMake 3.14.1 (Mar 30, 2019)

  • Brad King (11):
  • VS: Fix x64 host recognition by x86 cmake process
  • find_program: Restore leading double slash on Windows network path
  • Eclipse: Fix extra generator to not crash on interface libraries
  • ARMCC: Fix identification of ARM compiler when it defines GNU macros
  • Help: Clarify policy CMP0082 documentation
  • Restore support for include_directories() in toolchain files
  • CUDA: Tolerate square brackets in PROMPT environment variable
  • cmake: Fix '-E copy foo .' to avoid clobbering file
  • FindFontconfig: Convert module variables to camel case
  • ParseImplicitIncludeInfo: Canonicalize implicit include dirs
  • CMake 3.14.1
  • Clément Rezvoy (1):
  • CPackIFW: Add missing cpack_ifw_configure_component_group option processing
  • Marc Chevrier (1):
  • FindPython*: ensure correct architecture is selected.
  • Sebastian Holtermann (1):
  • Autogen: Do not treat hard-coded -I/usr/include exclusion as implicit include
  • Sylvain Joubert (1):
  • ctest_coverage: fix out-of-bounds index in Jacoco parser

New in CMake 3.14.0 RC 1 (Feb 11, 2019)

  • CMake now supports Cross Compiling for iOS, tvOS, or watchOS using simple toolchain files.
  • The “Visual Studio 16 2019” generator was added. This is experimental and based on “Visual Studio 2019 Preview 2” because this version of VS has not been released. The VS 2019 generator differs from generators for earlier versions in that it does not provide variants that specify the target platform in the generator name. Instead “CMAKE_GENERATOR_PLATFORM” must be used, e.g. through the “-A” command-line option. Furthermore, the default target platform (architecture) is now based on the *host* platform. The VS host toolset selection is now based
  • on the host architecture as well.
  • A “CMAKE_BUILD_RPATH_USE_ORIGIN” variable and corresponding “BUILD_RPATH_USE_ORIGIN” target property were added to enable use of relative runtime paths (RPATHs). This helps achieving relocatable and reproducible builds that are invariant of the build directory.
  • The “install(TARGETS)” command learned how to install to an appropriate default directory for a given target type, based on variables from the “GNUInstallDirs” module and built-in defaults, in lieu of a “DESTINATION” argument.
  • The “install(FILES)” and “install(DIRECTORY)” commands learned a new set of parameters for installing files as a file type, setting the destination based on the appropriate variables from “GNUInstallDirs” and built-in defaults, in lieu of a “DESTINATION” argument.
  • The “install(CODE)” and “install(SCRIPT)” commands learned to support generator expressions. See policy “CMP0087”.
  • The “if()” command gained support for checking if cache variables are defined with the “DEFINED CACHE{VAR}” syntax.
  • A file-based api for clients to get semantic build systeminformation has been added. See the “cmake-file-api(7)” manual.This is intended to replace the “cmake-server(7)” mode for IDEs.
  • The “cmake(1)” Build Tool Mode (“cmake –build”) gained “– verbose” and “-v” options to specify verbose build output. Some generators such as Xcode don’t support this option currently.
  • The “cmake(1)” “-E compare_files” command learned a new “–ignore-eol” option to specify that end-of-line differences (e.g. LF vs CRLF) should be ignored when comparing files.

New in CMake 3.13.4 (Feb 5, 2019)

  • Ben Boeckel (2):
  • Tests: add cases for providing Qt5Core_VERSION manually
  • AutoGen: query Qt5 version from directory properties
  • Brad King (5):
  • Revert "file: Allow DOWNLOAD/UPLOAD using alternate authentication
  • methods"
  • Intel: Record support for relaxed constexpr by version 18.0.5
  • macOS: Restore compatibility for setting FRAMEWORK after install()
  • FindLAPACK: Distinguish check result variable name from FindBLAS
  • CMake 3.13.4
  • Chuck Atkins (1):
  • macOS: Add missing explicit dependency on CoreServices framework
  • Craig Scott (3):
  • cmake: Convert no source/build dir error to warning
  • Help: Add 3.13.4 release note for no source/build dir error/warning
  • FindDoxygen: Escape backslashes in default values

New in CMake 3.13.3 (Jan 16, 2019)

  • Brad King (4):
  • VS: Exclude VS 2019 instances when using VS 2017 generator
  • Tests: Add cases for -{C,D,U} without a source tree
  • Tests: Add case for warning when AUTOMOC/UIC/RCC gets disabled
  • CMake 3.13.3
  • Craig Scott (2):
  • cmake: Stop processing if -P option lacks file name
  • cmake: Ensure source and binary dirs are set
  • Paul Seyfert (1):
  • cmake: distinguish '-Cpath' from '-C path' in source dir parsing
  • Sebastian Holtermann (1):
  • Autogen: Issue a warning when AUTOMOC/UIC/RCC gets disabled.
  • Tim Blechmann (1):
  • BundleUtilities: Ensure target dir exists when creating symlinks

New in CMake 3.13.2 (Dec 14, 2018)

  • Anton Chernov (1):
  • CUDA: Add CUDA 10 (Turing) detection
  • Brad King (2):
  • CUDA: Fix crash on linking to a CUDA target without CUDA enabled
  • CMake 3.13.2
  • Nils Gladitz (1):
  • CPack/External: Fix status messages of staging scripts
  • Sebastian Holtermann (1):
  • Autogen: Revert passing compiler implicit includes to moc

New in CMake 3.13.1 (Dec 5, 2018)

  • Brad King (3):
  • Fortran: Fix module dependency scanning with upper-case SUBMODULE
  • FindBoost: Restore finding without CXX language enabled
  • CMake 3.13.1
  • Harry Mallon (1):
  • VS: Avoid crash with VS 2015 when all SDKs are higher than 10.0.14393.0
  • Sebastian Holtermann (1):
  • Autogen: Fix empty uic executable string

New in CMake 3.13.0 (Dec 5, 2018)

  • The Visual Studio Generators for VS 2010 and above learned to support the “INTERPROCEDURAL_OPTIMIZATION” target property and supporting “CheckIPOSupported” module.
  • The “Green Hills MULTI” generator has been updated to include support for platform, architecture, and toolset selection.
  • The “cmake” command gained the “-S ” command line option to specify the location of the source directory. This option can be used independently of “-B”.
  • The “cmake” command gained the “-B ” command line option to specify the location of the build directory. This option can be used independently of “-S”.
  • The “cmake” “-E create_symlink” command can now be used on Windows.
  • The “target_link_directories()” command was created to specify link directories for targets and their dependents.
  • The “target_link_options()” command was created to specify link options for targets and their dependents.
  • The “target_link_libraries()” command may now be called to modify targets created outside the current directory. See policy “CMP0079”.
  • The “install(TARGETS)” command learned to install targets created outside the current directory.
  • A “VS_DEBUGGER_COMMAND_ARGUMENTS” target property was created to set the debugging command line arguments with Visual Studio Generators for VS 2010 and above.
  • A “VS_DEBUGGER_ENVIRONMENT” target property was created to set the debugging environment with Visual Studio Generators for VS 2010 and above.
  • The “option()” command now honors an existing normal variable of the same name and does nothing instead of possibly creating a cache entry (or setting its type) and removing the normal variable. See policy “CMP0077”.
  • The “target_sources()” command now interprets relative source file paths as relative to the current source directory. This simplifies incrementally building up a target’s sources from subdirectories.
  • The “CMP0076” policy was added to provide backward compatibility with the old behavior where required.

New in CMake 3.12.3 (Oct 4, 2018)

  • CTest: Fix --test-load regression
  • FindMPI: Restore MPI__COMPILE_FLAGS as a command-line string
  • FindDoxygen: Ensure policy settings allow use of IN_LIST
  • libarchive: Backport fix for build with LibreSSL 2.7
  • libuv: do not require PATH_MAX to be defined
  • VS: Fix CSharp flag selection when linking to a static C++ library
  • CSharp: Fix regression in VS project type selection
  • CMake 3.12.3
  • CTest: Fix regression in ctest_start()
  • Help: TESTS property: clarify usage.

New in CMake 3.12.2 (Sep 11, 2018)

  • Android: Add support for NDK r18
  • CheckIPOSupported: Simplify result reporting logic
  • CheckIPOSupported: Tolerate backslashes in output of failed checks
  • VS: Restore CMakeLists.txt references in each target
  • EXPORT_PROPERTIES: Add test for an undefined property
  • EXPORT_PROPERTIES: Prevent null dereference for undefined property
  • Help: Fix typo in clang-tidy example -checks option
  • FindBoost: Fix context discovery for 1.60 and below
  • FindCUDA: Do not find cublas_device on CUDA >= 9.2
  • FindMatlab: Remove erroneous duplicate code
  • CUDA: Avoid using deprecated cublas_device to identify device lib dirs
  • cmState: Clear GlobVerificationManager state on Reset

New in CMake 3.12.1 (Aug 10, 2018)

  • CSharp: Set CMAKE_CSharp_COMPILER_LOADED variable when language is enabled
  • UseSWIG: Use CSharp language only if it is enabled
  • Help: Add explicit _ROOT variable documentation
  • Tests: Add case showing CMP0048 warning on injected project command
  • project: Do not issue CMP0048 warnings on injected call
  • CPack: Restore support for 0-valued version components
  • FindCUDA/select_compute_arch: Restore two-component CUDA_VERSION
  • CMake 3.12.1
  • GoogleTest: Ensure policy settings allow use of IN_LIST
  • FindTCL: Add support for version 8.7
  • FindPython*: fix erroneous behavior on multiple 'find_package' calls
  • UseSWIG: restore legacy behavior for SWIG_MODULE__EXTRA_FLAGS

New in CMake 3.12.0 (Jul 18, 2018)

  • The “target_link_libraries()” command now supports Object Libraries. Linking to an object library uses its object files in direct dependents and also propagates usage requirements
  • The “file(GLOB)” and “file(GLOB_RECURSE)” commands learned a new flag “CONFIGURE_DEPENDS” which enables expression of build system dependency on globbed directory’s contents
  • The “Compile Features” functionality is now aware of C++ 20. No specific features are yet enumerated besides the “cxx_std_20” meta- feature
  • The Visual Studio Generators for VS 2017 learned to support a “version=14.##” option in the “CMAKE_GENERATOR_TOOLSET” value (e.g
  • via the “cmake(1)” “-T” option) to specify a toolset version number
  • The “cmake(1)” Build Tool Mode (“cmake –build”) gained “– parallel []” and “-j []” options to specify a parallel build level. They map to corresponding options of the native build tool
  • The “add_compile_definitions()” command was added to set preprocessor definitions at directory level. This supersedes “add_definitions()”
  • The “cmake_minimum_required()” and “cmake_policy(VERSION)” commands now accept a version range using the form “[…]”. The “” version is required but policies are set based on the “” version. This allows projects to specify a range of versions for which they have been updated and avoid explicit policy settings
  • The “find_package()” command now searches a prefix specified by a “PackageName_ROOT” CMake or environment variable. Package roots are maintained as a stack so nested calls to all “find_*” commands inside find modules also search the roots as prefixes. See policy “CMP0074”
  • A new “$” and “$” “generator expression” has been added to enable consumption of generator expressions whose evaluation results itself in generator expressions
  • A new “$” “generator expression” has been added
  • A new “$” “generator expression” has been added
  • The “FindCURL” module now provides imported targets
  • The “FindJPEG” module now provides imported targets
  • A “FindODBC” module was added to find an Open Database Connectivity (ODBC) library
  • New “FindPython3” and “FindPython2” modules, as well as a new “FindPython” module, have been added to provide a new way to locate python environments.

New in CMake 3.11.3 (Jun 1, 2018)

  • cmSystemTools: Revert GetRealPath implementation on Windows
  • CPack: Fix cross-compilation of WiX generator
  • TestDriver: Replace strncpy with strcpy

New in CMake 3.11.2 (May 18, 2018)

  • Ninja: Do not add empty custom command for file(GENERATE) outputs
  • C++ feature checks: Filter out warnings caused by local configuration
  • libuv: linux/sparc64: use fcntl to set and clear O_NONBLOCK
  • FindCUDA: Fix regression in separable compilation without cublas
  • FindBoost: Remove extra indentation in 1.65/1.66 dependency block
  • add_library: Restore error on alias of non-global imported target
  • add_custom_{command,target}: Fix crash on empty expanded command
  • CMake 3.11.2
  • IRSL: Fix Intel library list for ifort-only setups
  • InstallRequiredSystemLibraries: Check for existence of mfcm dlls
  • FindBoost: Backport versioned python dependencies for v1.35 to v1.66
  • Fix CMAKE_DISABLE_SOURCE_CHANGES recognition of top of build tree
  • FindJava, FindJNI, UseJava: update for version 10 support
  • FindJava, FindJNI: Ensure most recent version is searched first
  • FindJava, FindJNI: fix erroneous regex, enhance registry lookup
  • Help: Specify COMPILE_OPTIONS and COMPILE_FLAGS source properties usage
  • Qt4Macros: Use get_property/set_property
  • Qt4Macros: Don't AUTOMOC or AUTOUIC qt4-generated files
  • FindPkgConfig: do not unset unused variable
  • FindBLAS: do not write an imported target name into BLAS_LIBRARIES
  • Autogen: Register generated dependency files

New in CMake 3.11.1 (Apr 18, 2018)

  • Revert "CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES"
  • CPack: Fix crash on invalid generator name
  • Restore support for explicitly referenced CMakeLists.txt sources
  • Exclude "libgcc_eh" library files from implicit link libraries
  • CMake 3.11.1
  • Features: Record for VS 2017 through 15.6
  • Explicitly require LibUV 1.10 or higher to build CMake
  • bootstrap: Add option to enable/disable usage of system libuv
  • Fix crash with --trace-expand --warn-uninitialized together
  • FindOpenMP: Fix support for Intel on Windows
  • Autogen: Protected calls to cmSystemTools::CollapseCombinedPath
  • Autogen: Protected calls to cmSystemTools::Split/JoinPath
  • Autogen: Protected calls to cmSystemTools::GetFilenameWithoutLastExtension
  • Autogen: Protected calls to cmQtAutoGen::SubDirPrefix
  • Autogen: Protected calls to cmFilePathChecksum
  • Autogen: Use std::istreambuf_iterator for file so string reading
  • Autogen: Print moc/uic/rcc output to stdout

New in CMake 3.11.0 (Mar 29, 2018)

  • The Makefile Generators and the “Ninja” generator learned to add compiler launcher tools along with the compiler for the “Fortran” language (“C”, “CXX”, and “CUDA” were supported previously). See the “CMAKE__COMPILER_LAUNCHER” variable and “_COMPILER_LAUNCHER” target property for details.
  • Visual Studio Generators learned to support the “COMPILE_LANGUAGE” “generator expression” in target-wide “COMPILE_DEFINITIONS”, “INCLUDE_DIRECTORIES”, “COMPILE_OPTIONS”, and “file(GENERATE)”. See generator expression documentation for caveats.
  • The “Xcode” Generator learned to support the “COMPILE_LANGUAGE” “generator expression” in target-wide “COMPILE_DEFINITIONS” and “INCLUDE_DIRECTORIES”. It previously supported only “COMPILE_OPTIONS” and “file(GENERATE)”. See generator expression documentation for caveats.
  • “add_library()” and “add_executable()” commands can now be called without any sources and will not complain as long as sources are added later via the “target_sources()” command.
  • The “target_compile_definitions()” command learned to set the “INTERFACE_COMPILE_DEFINITIONS” property on Imported Targets.
  • The “target_compile_features()” command learned to set the “INTERFACE_COMPILE_FEATURES” property on Imported Targets.
  • The “target_compile_options()” command learned to set the “INTERFACE_COMPILE_OPTIONS” property on Imported Targets.
  • The “target_include_directories()” command learned to set the “INTERFACE_INCLUDE_DIRECTORIES” property on Imported Targets.
  • The “target_sources()” command learned to set the “INTERFACE_SOURCES” property on Imported Targets.
  • The “target_link_libraries()” command learned to set the “INTERFACE_LINK_LIBRARIES” property on Imported Targets.
  • The “COMPILE_DEFINITIONS” source file property learned to support “generator expressions”.
  • A “COMPILE_OPTIONS” source file property was added to manage list of options to pass to the compiler.
  • When using “AUTOMOC” or “AUTOUIC”, CMake now starts multiple parallel “moc” or “uic” processes to reduce the build time. A new “CMAKE_AUTOGEN_PARALLEL” variable and “AUTOGEN_PARALLEL” target property may be set to specify the number of parallel “moc” or “uic” processes to start. The default is derived from the number of CPUs on the host.

New in CMake 3.11.0 RC 4 (Mar 20, 2018)

  • Genex: Fix COMPILE_LANGUAGE propagation through try_compile
  • XL: Fix C default level detection when invoked as 'cc'
  • Features: Record initializer list support for Intel 14 and above
  • FindQt4: Revert "Set PLUGINS and IMPORTS dir even if empty"
  • CMake 3.11.0-rc4
  • GoogleTest: Rename TIMEOUT parameter to avoid clash
  • ExternalProject: Fix cache generation when last args ends with "-NOTFOUND"
  • Help: Adapt cmake-buildsystem(7) to new IMPORTED targets features
  • ccmake: fix status line buffer overflow on very wide terminals
  • FindJNI: add some new architecture names for mips release 6

New in CMake 3.10.3 (Mar 17, 2018)

  • GoogleTest: Rename TIMEOUT parameter to avoid clash
  • Autogen: Fix for the empty source file crash in 3.10.2
  • ccmake: fix status line buffer overflow on very wide terminals

New in CMake 3.10.2 (Jan 18, 2018)

  • KWIML: Backport RISC-V update to CMake 3.10
  • FindPostgreSQL: Add support for PG10
  • cmGraphVizWriter: Updated to create and follow dependers for
  • interface targets
  • Autogen: Fix for problematic nested list separator
  • Autogen: Ignore not existing source files in cmMakefile

New in CMake 3.10.1 (Dec 15, 2017)

  • bootstrap: Check support for unordered_map from compiler mode
  • CPack: Fix macOS PKG component dependency information
  • CUDA: Treat /usr/include as an implicit include directory
  • server: Revert "Report backtraces in codemodel response"
  • CMake 3.10.1
  • FindMPI: Correct legacy variable handling
  • FindMPI: Fix multiple configure runs
  • FindMPI: Fix various legacy problems
  • IRSL: Fix MSVC variable deferencing
  • IAR: FindBinUtils should work for CXX as well as C
  • GoogleTest: Fix multiple discovery on same target
  • GoogleTest: Improve gtest_discover_tests messages
  • GoogleTest: Add timeout to discovery
  • GoogleTest: Add test for missing test executable
  • CUDA: Shared libraries on Darwin properly setup @rpath install_names
  • Autogen: Fix for AUTOMOC on macOS frameworks in CMake 3.10
  • Autogen: Tests: Add test for MacOS frameworks
  • Clang: Do not mistake clang-cl 6.0 for GNU-like clang

New in CMake 3.9.6 (Nov 11, 2017)

  • Restore exclusion of "gcc_eh" from implicit link libraries.

New in CMake 3.9.5 (Nov 4, 2017)

  • Autogen: Don't add AUTOMOC_MOC_OPTIONS to moc-predefs command.

New in CMake 3.10.0 RC 4 (Nov 2, 2017)

  • The flang Fortran compiler is now supported, with compiler id “Flang”.
  • Support for the MSVC ARM64 architecture was added. Visual Studio 2017 Update 4 and above offer an ARM64 toolchain.
  • The “include_guard()” command was introduced to allow guarding CMake scripts from being included more than once. The command supports “DIRECTORY” and “GLOBAL” options to adjust the corresponding include guard scope. If no options given, include guard is similar to basic variable-based check.
  • “FindMPI” received a major overhaul. It now features language specific components, better Fortran support, and support for statically linked MPI implementations.
  • A “FindOpenACC” module was added to detect compiler support for OpenACC. Currently only supports PGI, GNU and Cray compilers.
  • The “FindOpenGL” module underwent numerous improvements. It has gained support for GLVND and EGL on Linux. It now has import targets that separate the OpenGL library and OpenGL contexts.
  • The “GoogleTest” module gained a new command “gtest_discover_tests()” implementing dynamic (build-time) test discovery.
  • When using “AUTOMOC” or “AUTOUIC”, source files that are “GENERATED” will be processed as well. They were ignored by “AUTOMOC” and “AUTOUIC” in earlier releases. See policy “CMP0071”.
  • A “CTEST_LABELS_FOR_SUBPROJECTS” CTest module variable and CTest script variable were added to specify a list of labels that should be treated as subprojects by CDash. To use this value in both the CTest module and the ctest command line Dashboard Client mode (e.g. “ctest -S”) set it in the “CTestConfig.cmake” config file.
  • CPack gained a “FREEBSD” generator for FreeBSD “pkg(8)”, configured by the “CPackFreeBSD” module.
  • The CPack “DEB” generator, configured by the “CPackDeb” module, was enabled on Windows. While not fully featured (due to the lack of external UNIX tools) this will allow building basic cross-platform Debian packages.
  • The “cmake(1)” “-E” mode gained support for “sha1sum”, “sha224sum”, “sha256sum”, “sha384sum”, and “sha512sum”.
  • The “file(GENERATE)” command now interprets relative paths given to its “OUTPUT” and “INPUT” arguments with respect to the caller’s current binary and source directories, respectively. See policy “CMP0070”.

New in CMake 3.10.0 RC 2 (Oct 13, 2017)

  • The flang Fortran compiler is now supported, with compiler id “Flang”.
  • Support for the MSVC ARM64 architecture was added. Visual Studio 2017 Update 4 and above offer an ARM64 toolchain.
  • The “include_guard()” command was introduced to allow guarding CMake scripts from being included more than once. The command supports “DIRECTORY” and “GLOBAL” options to adjust the corresponding include guard scope. If no options given, include guard is similar to basic variable-based check.
  • “FindMPI” received a major overhaul. It now features language specific components, better Fortran support, and support for statically linked MPI implementations.
  • A “FindOpenACC” module was added to detect compiler support for OpenACC. Currently only supports PGI, GNU and Cray compilers.
  • The “FindOpenGL” module underwent numerous improvements. It has gained support for GLVND and EGL on Linux. It now has import targets that separate the OpenGL library and OpenGL contexts.
  • The “GoogleTest” module gained a new command “gtest_discover_tests()” implementing dynamic (build-time) test
  • discovery.
  • When using “AUTOMOC” or “AUTOUIC”, source files that are “GENERATED” will be processed as well. They were ignored by “AUTOMOC” and “AUTOUIC” in earlier releases. See policy “CMP0071”.
  • A “CTEST_LABELS_FOR_SUBPROJECTS” CTest module variable and CTest script variable were added to specify a list of labels that should be treated as subprojects by CDash. To use this value in both the CTest module and the ctest command line Dashboard Client mode (e.g. “ctest -S”) set it in the “CTestConfig.cmake” config file.
  • CPack gained a “FREEBSD” generator for FreeBSD “pkg(8)”, configured by the “CPackFreeBSD” module.
  • The CPack “DEB” generator, configured by the “CPackDeb” module, was enabled on Windows. While not fully featured (due to the lack of external UNIX tools) this will allow building basic cross-platform Debian packages.
  • The “cmake(1)” “-E” mode gained support for “sha1sum”, “sha224sum”, “sha256sum”, “sha384sum”, and “sha512sum”.
  • The “file(GENERATE)” command now interprets relative paths given to its “OUTPUT” and “INPUT” arguments with respect to the caller’s current binary and source directories, respectively. See policy “CMP0070”.

New in CMake 3.10 RC 1 (Oct 6, 2017)

  • PLATFORMS:
  • The flang Fortran compiler is now supported, with compiler id Flang.
  • A new minimal platform file for Midipix was added.
  • Support for the MSVC ARM64 architecture was added. Visual Studio 2017 Update 4 and above offer an ARM64 toolchain.
  • Support for the IAR ARM Compiler was improved.:
  • GENERATORS:
  • The Makefile Generators and the Ninja generator learned to add compiler launcher tools like ccache along with the compiler for the CUDA language (C and CXX were supported previously). See the CMAKE__COMPILER_LAUNCHER variable and _COMPILER_LAUNCHER target property for details.
  • The CodeBlocks extra generator learned to optionally exclude files from outside the project root directory from the generated project. See the CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES variable.:
  • COMMANDS:
  • The cmake_host_system_information() command learned more keys to get information about the processor capabilities and the host OS version.
  • The configure_file() command learned to support indented # cmakedefine and # cmakedefine01. Spaces and/or tabs between the # character and the cmakedefine/cmakedefine01 words are now understood and preserved in the output.
  • The execute_process() command gained a RESULTS_VARIABLE option to collect a list of results from all children in a pipeline of processes when multiple COMMAND arguments are given.
  • The include_guard() command was introduced to allow guarding CMake scripts from being included more than once. The command supports DIRECTORY and GLOBAL options to adjust the corresponding include guard scope. If no options given, include guard is similar to basic variable-based check.
  • The string() command learned a new PREPEND subcommand.
  • The string(TIMESTAMP) command now supports %A for full weekday name and %B for full month name.:
  • VARIABLES:
  • A CMAKE_DIRECTORY_LABELS variable was added to specify labels for all tests in a directory.:
  • PROPERTIES:
  • A _CPPCHECK target property and supporting CMAKE__CPPCHECK variable were introduced to tell the Makefile Generators and the Ninja generator to run cppcheck with the compiler for C and CXX languages.
  • A LABELS directory property was added to specify labels for all targets and tests in a directory.
  • A TEST_INCLUDE_FILES directory property was added to list any number of files to be included when running tests with ctest(1). This generalizes the TEST_INCLUDE_FILE property.
  • The VS_DOTNET_REFERENCEPROP__TAG_ target property was added to support custom XML tags for reference assemblies in C# targets.
  • Source file properties VS_SHADER_OUTPUT_HEADER_FILE and VS_SHADER_VARIABLE_NAME have been added to specify more details of .hlsl sources with Visual Studio Generators.:
  • MODULES:
  • The FindCurses module gained a CURSES_NEED_WIDE option to request the wide-character variant.
  • The FindEXPAT module now provides imported targets.
  • The FindFreetype module now provides imported targets.
  • FindMPI gained a number of new features, including:
  • Language-specific components have been added to the module.
  • Many more MPI environments are now supported.
  • The environmental support for Fortran has been improved.
  • A user now has fine-grained control over the MPI selection process, including passing custom parameters to the MPI compiler.
  • The version of the implemented MPI standard is now being exposed.
  • MPI-2 C++ bindings can now be detected and also suppressed if so desired.
  • The available Fortran bindings are now being detected and verified.
  • Various MPI-3 information can be requested, including the library version and Fortran capabilities of the individual bindings.
  • Statically linked MPI implementations are supported.
  • A FindOpenACC module was added to detect compiler support for OpenACC. Currently only supports PGI, GNU and Cray compilers.
  • The FindOpenGL module gained support for GLVND on Linux.
  • The FindOpenMP module gained support for language-specific components.
  • A FindPatch module was added to find the patch command-line executable.
  • The FindProtobuf module protobuf_generate_cpp() command gained a DESCRIPTORS option to generate descriptor files.
  • The GoogleTest module gained a new command gtest_discover_tests() implementing dynamic (build-time) test discovery. Unlike the source parsing approach, dynamic discovery executes the test (in ‘list available tests’ mode) at build time to discover tests. This is robust against unusual ways of labeling tests, provides much better support for advanced features such as parameterized tests, and does not require re-running CMake to discover added or removed tests within a test executable.
  • The InstallRequiredSystemLibraries module gained support for installing Intel compiler runtimes.:
  • AUTOGEN:
  • When using AUTOMOC or AUTOUIC with a multi configuration generator (e.g. Xcode), included *.moc, moc_*.cpp and ui_*.h files are generated in /include_ instead of /include.
  • When using AUTOMOC or AUTOUIC, source files that are GENERATED will be processed as well. They were ignored by AUTOMOC and AUTOUIC in earlier releases. See policy CMP0071.
  • When using AUTOMOC, CMake searches for the strings Q_OBJECT, Q_GADGET or Q_NAMESPACE in a source file to determine if it needs to be moc processed. The new variable CMAKE_AUTOMOC_MACRO_NAMES allows to register additional strings (macro names) so search for.
  • When using AUTOMOC, CMake searches for the strings Q_OBJECT, Q_GADGET or Q_NAMESPACE in a source file to determine if it needs to be moc processed. The new target property AUTOMOC_MACRO_NAMES allows to register additional strings (macro names) so search for.
  • When using AUTOMOC, the new variable CMAKE_AUTOMOC_COMPILER_PREDEFINES allows to default enable or disable the generation of the compiler pre definitions file moc_predefs.h.
  • When using AUTOMOC, the new boolean target property AUTOMOC_COMPILER_PREDEFINES allows to enable or disable the generation of the compiler pre definitions file moc_predefs.h.:
  • CTEST:
  • A CTEST_LABELS_FOR_SUBPROJECTS CTest module variable and CTest script variable were added to specify a list of labels that should be treated as subprojects by CDash. To use this value in both the CTest module and the ctest command line Dashboard Client mode (e.g. ctest -S) set it in the CTestConfig.cmake config file.:
  • CPACK:
  • CPack gained a FREEBSD generator for FreeBSD pkg(8), configured by the CPackFreeBSD module.
  • The CPack DEB generator, configured by the CPackDeb module, was enabled on Windows. While not fully featured (due to the lack of external UNIX tools) this will allow building basic cross-platform Debian packages.
  • The CPackDeb module learned to set package release version in Version info property. See the CPACK_DEBIAN_PACKAGE_RELEASE variable.
  • The CPackDeb module learned more strict package version checking that complies with Debian rules.
  • The CPackIFW module cpack_ifw_configure_component() and cpack_ifw_configure_component_group() commands gained a new REPLACES and CHECKABLE options.
  • The CPackIFW module gained new CPACK_IFW_PACKAGE_FILE_EXTENSION variable to customize target binary format.
  • The CPackIFW module gained new CPACK_IFW_REPOSITORIES_DIRECTORIES variable to specify additional repositories dirs that will be used to resolve and repack dependent components. This feature available only since QtIFW 3.1.
  • Modules CPackRPM and CPackDeb learned to set package epoch version. See CPACK_RPM_PACKAGE_EPOCH and CPACK_DEBIAN_PACKAGE_EPOCH variables.:
  • OTHER:
  • The cmake(1) -E mode gained support for sha1sum, sha224sum, sha256sum, sha384sum, and sha512sum.
  • The graphviz output now distinguishes among the different dependency types PUBLIC, PRIVATE and INTERFACE and represents them in the output graph as solid, dashed and dotted edges.:
  • DEPRECATED AND REMOVED FEATURES:
  • Support for building CMake itself with C++98 compilers was dropped. CMake is now implemented using C++11.
  • Support for building CMake on HP-UX has been dropped pending better support for C++11 and a port of libuv. See CMake Issue 17137. Use CMake 3.9 or lower instead for HP-UX support.:
  • OTHER CHANGES:
  • On FreeBSD the C++ compiler named c++ is now the preferred default.
  • The file(GENERATE) command now interprets relative paths given to its OUTPUT and INPUT arguments with respect to the caller’s current binary and source directories, respectively. See policy CMP0070.
  • The get_filename_component() PROGRAM mode semantics have been revised to not tolerate unquoted spaces in the path to the program while also accepting arguments. While technically incompatible with the old behavior, it is expected that behavior under typical use cases with properly-quoted command-lines has not changed.:

New in CMake 3.9.3 (Sep 21, 2017)

  • Changes:
  • VS: Do not consider MAP_IMPORTED_CONFIG_ on non-imported targets
  • bootstrap: Fix running multiple times in-source
  • vim: Remove default setting of expandtab
  • FindBoost: Add support for Boost 1.65.0 and 1.65.1 to CMake 3.9
  • CTest: fix crash if source file for coverage cannot be found
  • Autogen: Backport autogen target dependency as file dependency fix
  • Autogen: Tests: Backport tests for _autogen target dependencies

New in CMake 3.9.2 (Sep 8, 2017)

  • InstallRequiredSystemLibraries: Factor redist name into variable
  • InstallRequiredSystemLibraries: Find VS 2017 Update 3 redist directory
  • macOS: Revert default Hi-DPI support in applications
  • Ninja: Fix support for MSVC with non-English output
  • Xcode: Revert addition of "outputPaths" to custom command build phase
  • cmCPackDragNDropGenerator: Add missing include
  • cmake: Fix --find-package mode with imported targets
  • Genex: Fix TARGET_PROPERTY value of SOURCES
  • Android: Update for NDK r16
  • FindBoost: Revert "Simplify search in lists."
  • InstallRequiredSystemLibraries: Add support for future VS 2017 toolchains
  • Tests: Fix RunCMake.GeneratorExpression to run in CMake 3.9
  • CMake 3.9.2
  • FindOpenMP: Restore OpenMP_FOUND result variable
  • CUDA: Pass host compiler to nvcc while device linking
  • VS: Do not reference output assemblies if not possible for CSharp target
  • VS: Initialize CSharp flags consistently
  • Autogen: Restore AUTOUIC lookup paths from 3.8.2
  • Autogen: Update AUTOUIC documentation for search paths
  • Autogen: Extend AUTOUIC search paths test
  • Clang: Find version-suffixed LLVM/Clang binutils
  • FindCygwin: Fix regression when CYGWIN_INSTALL_PATH is already set

New in CMake 3.9.1 (Aug 11, 2017)

  • Utilities/Sphinx: Restore compatibility with Sphinx pre-1.2
  • Help: Silence warning about document not included in toctree
  • UseSWIG: Fix when Java is enabled as a language
  • VS: Fix VCTargetsPath detection
  • Android: Fix support for CMAKE_SYSROOT without CMAKE_SYSROOT_COMPILE
  • expat: Update script to get Expat 2.2.3
  • expat: Update CMake build for 2.2.3
  • Tests: Simplify RunCMake.find_package PackageRoot case regexes
  • find_*: Disable the PACKAGE_ROOT search path group for CMake 3.9
  • CMake 3.9.1
  • find_package: Add missing PACKAGE_ROOT_PATH search path implementation.
  • find_package: Fix PACKAGE_ROOT test to check find_pacakge(CONFIG) mode.
  • find_package: Split PACKAGE_ROOT tests to work with smaller regex
  • FindJava: Allow early access version trailing string to be mixed case
  • FindBoost: pop policy stack before returning
  • expat 2017-08-02 (97c6bd01)
  • server: Fix crash on missing cache entries
  • FindJava: fix hint for windows jre 1.6
  • Help: Fix module and function names in CMP0069 examples
  • Autogen: Always create AUTOMOC/AUTOUIC include directory

New in CMake 3.9.0 (Jul 19, 2017)

  • The “Visual Studio 14 2015” generator has been taught about a change to the “v140” toolset made by a VS 2015 update. VS changed the set of values it understands for the “GenerateDebugInformation” linker setting that produces the “-DEBUG” linker flag variants.
  • “CUDA” is now supported by the Visual Studio Generators for VS 2010 and above. This complements the existing support by the Makefile Generators and the “Ninja” generator. CUDA 8.0.61 or higher is recommended due to known bugs in the VS integration by earlier versions.
  • CMake is now aware of the “C++ standards” and “C standards” and their associated meta-features for the following “compiler ids”: “Cray”, “PGI”, and “XL”.
  • The “add_library()” command “IMPORTED” option learned to support Object Libraries.
  • All “find_” commands now have a “PACKAGE_ROOT” search path group that is first in the search heuristics. If a “find_” command is called from inside a find module, then the CMake variable and environment variable named “_ROOT” are used as prefixes and are the first set of paths to be searched.
  • The “install(TARGETS)” command learned a new “OBJECTS” option to specify where to install Object Libraries.
  • The “install(EXPORT)” command learned how to export Object Libraries.
  • A “BUILD_WITH_INSTALL_NAME_DIR” target property and corresponding “CMAKE_BUILD_WITH_INSTALL_NAME_DIR” variable were added to control whether to use the “INSTALL_NAME_DIR” target property value for binaries in the build tree. This is for macOS “install_name” as “BUILD_WITH_INSTALL_RPATH” is for “RPATH”.
  • A “CUDA_PTX_COMPILATION” target property was added to Object Libraries to support compiling to “.ptx” files instead of host object files.
  • A new “GoogleTest” module was added to provide the “gtest_add_tests()” function independently of the “FindGTest” module. The function was also updated to support keyword arguments, with functionality expanded to allow a test name prefix and suffix to be specified, the dependency on the source files to be optional and the list of discovered test cases to be returned to the caller.
  • The “Ninja” generator has loosened the dependencies of object compilation. Object compilation now depends only on custom targets and custom commands associated with libraries on which the object’s target depends and no longer depends on the libraries themselves. Source files in dependent targets may now compile without waiting for their targets’ dependencies to link.
  • Interprocedural optimization (IPO) is now supported for GNU and Clang compilers using link time optimization (LTO) flags. See the “INTERPROCEDURAL_OPTIMIZATION” target property and “CheckIPOSupported” module.
  • The “TARGET_OBJECTS” “generator expression” is now supported by the “add_custom_command()” and “file(GENERATE)” commands.

New in CMake 3.9.0 RC 6 (Jul 13, 2017)

  • An update to Visual Studio 2015 changed the GenerateDebugInformation linker setting it expects in .vcxproj files. CMake 3.9 has been updated to account for this.
  • “CUDA” is now supported by the Visual Studio Generators for VS 2010 and above. This complements the existing support by the Makefile Generators and the “Ninja” generator. CUDA 8.0.61 or higher is recommended due to known bugs in the VS integration by earlier versions.
  • CMake is now aware of the “C++ standards” and “C standards” and their associated meta-features for the following “compiler ids”: “Cray”, “PGI”, and “XL”.
  • The “add_library()” command “IMPORTED” option learned to support Object Libraries.
  • All “find_” commands now have a “PACKAGE_ROOT” search path group that is first in the search heuristics. If a “find_” command is called from inside a find module, then the CMake variable and environment variable named “_ROOT” are used as prefixes and are the first set of paths to be searched.
  • The “install(TARGETS)” command learned a new “OBJECTS” option to specify where to install Object Libraries.
  • The “install(EXPORT)” command learned how to export Object Libraries.
  • A “BUILD_WITH_INSTALL_NAME_DIR” target property and corresponding “CMAKE_BUILD_WITH_INSTALL_NAME_DIR” variable were added to control whether to use the “INSTALL_NAME_DIR” target property value for binaries in the build tree. This is for macOS “install_name” as “BUILD_WITH_INSTALL_RPATH” is for “RPATH”.
  • A “CUDA_PTX_COMPILATION” target property was added to Object Libraries to support compiling to “.ptx” files instead of host object files.
  • A new “GoogleTest” module was added to provide the “gtest_add_tests()” function independently of the “FindGTest” module. The function was also updated to support keyword arguments, with functionality expanded to allow a test name prefix and suffix to be specified, the dependency on the source files to be optional and the list of discovered test cases to be returned to the caller.
  • The “Ninja” generator has loosened the dependencies of object compilation. Object compilation now depends only on custom targets and custom commands associated with libraries on which the object’s target depends and no longer depends on the libraries themselves. Source files in dependent targets may now compile without waiting for their targets’ dependencies to link.
  • Interprocedural optimization (IPO) is now supported for GNU and Clang compilers using link time optimization (LTO) flags. See the “INTERPROCEDURAL_OPTIMIZATION” target property and “CheckIPOSupported” module.
  • The “TARGET_OBJECTS” “generator expression” is now supported by the “add_custom_command()” and “file(GENERATE)” commands.

New in CMake 3.9.0 RC 5 (Jun 28, 2017)

  • “CUDA” is now supported by the Visual Studio Generators for VS 2010 and above. This complements the existing support by the Makefile Generators and the “Ninja” generator. CUDA 8.0.61 or higher is recommended due to known bugs in the VS integration by earlier versions.
  • CMake is now aware of the “C++ standards” and “C standards” and their associated meta-features for the following “compiler ids”: “Cray”, “PGI”, and “XL”.
  • The “add_library()” command “IMPORTED” option learned to support Object Libraries.
  • All “find_” commands now have a “PACKAGE_ROOT” search path group that is first in the search heuristics. If a “find_” command is called from inside a find module, then the CMake variable and environment variable named “_ROOT” are used as prefixes and are the first set of paths to be searched.
  • The “install(TARGETS)” command learned a new “OBJECTS” option to specify where to install Object Libraries.
  • The “install(EXPORT)” command learned how to export Object Libraries.
  • A “BUILD_WITH_INSTALL_NAME_DIR” target property and corresponding “CMAKE_BUILD_WITH_INSTALL_NAME_DIR” variable were added to control whether to use the “INSTALL_NAME_DIR” target property value for binaries in the build tree. This is for macOS “install_name” as “BUILD_WITH_INSTALL_RPATH” is for “RPATH”.
  • A “CUDA_PTX_COMPILATION” target property was added to Object Libraries to support compiling to “.ptx” files instead of host object files.
  • A new “GoogleTest” module was added to provide the “gtest_add_tests()” function independently of the “FindGTest” module. The function was also updated to support keyword arguments, with functionality expanded to allow a test name prefix and suffix to be specified, the dependency on the source files to be optional and the list of discovered test cases to be returned to the caller.
  • The “Ninja” generator has loosened the dependencies of object compilation. Object compilation now depends only on custom targets and custom commands associated with libraries on which the object’s target depends and no longer depends on the libraries themselves. Source files in dependent targets may now compile without waiting for their targets’ dependencies to link.
  • Interprocedural optimization (IPO) is now supported for GNU and Clang compilers using link time optimization (LTO) flags. See the “INTERPROCEDURAL_OPTIMIZATION” target property and “CheckIPOSupported” module.
  • The “TARGET_OBJECTS” “generator expression” is now supported by the “add_custom_command()” and “file(GENERATE)” commands.

New in CMake 3.9.0 RC 4 (Jun 23, 2017)

  • “CUDA” is now supported by the Visual Studio Generators for VS 2010 and above. This complements the existing support by the Makefile Generators and the “Ninja” generator. CUDA 8.0.61 or higher is recommended due to known bugs in the VS integration by earlier versions.
  • CMake is now aware of the “C++ standards” and “C standards” and their associated meta-features for the following “compiler ids”: “Cray”, “PGI”, and “XL”.
  • The “add_library()” command “IMPORTED” option learned to support Object Libraries.
  • All “find_” commands now have a “PACKAGE_ROOT” search path group that is first in the search heuristics. If a “find_” command is called from inside a find module, then the CMake variable and environment variable named “_ROOT” are used as prefixes and are the first set of paths to be searched.
  • The “install(TARGETS)” command learned a new “OBJECTS” option to specify where to install Object Libraries.
  • The “install(EXPORT)” command learned how to export Object Libraries.
  • A “BUILD_WITH_INSTALL_NAME_DIR” target property and corresponding “CMAKE_BUILD_WITH_INSTALL_NAME_DIR” variable were added to control whether to use the “INSTALL_NAME_DIR” target property value for binaries in the build tree. This is for macOS “install_name” as “BUILD_WITH_INSTALL_RPATH” is for “RPATH”.
  • A “CUDA_PTX_COMPILATION” target property was added to Object Libraries to support compiling to “.ptx” files instead of host object files.
  • A new “GoogleTest” module was added to provide the “gtest_add_tests()” function independently of the “FindGTest” module. The function was also updated to support keyword arguments, with functionality expanded to allow a test name prefix and suffix to be specified, the dependency on the source files to be optional and the list of discovered test cases to be returned to the caller.
  • The “Ninja” generator has loosened the dependencies of object compilation. Object compilation now depends only on custom targets and custom commands associated with libraries on which the object’s target depends and no longer depends on the libraries themselves. Source files in dependent targets may now compile without waiting for their targets’ dependencies to link.
  • Interprocedural optimization (IPO) is now supported for GNU and Clang compilers using link time optimization (LTO) flags. See the “INTERPROCEDURAL_OPTIMIZATION” target property and “CheckIPOSupported” module.
  • The “TARGET_OBJECTS” “generator expression” is now supported by the “add_custom_command()” and “file(GENERATE)” commands.

New in CMake 3.9.0 RC 3 (Jun 17, 2017)

  • The “add_library()” command “IMPORTED” option learned to support Object Libraries.
  • All “find_” commands now have a “PACKAGE_ROOT” search path group that is first in the search heuristics. If a “find_” command is called from inside a find module, then the CMake variable and environment variable named “_ROOT” are used as prefixes and are the first set of paths to be searched.
  • The “install(TARGETS)” command learned a new “OBJECTS” option to specify where to install Object Libraries.
  • The “install(EXPORT)” command learned how to export Object Libraries.
  • A “BUILD_WITH_INSTALL_NAME_DIR” target property and corresponding “CMAKE_BUILD_WITH_INSTALL_NAME_DIR” variable were added to control whether to use the “INSTALL_NAME_DIR” target property value for binaries in the build tree. This is for macOS “install_name” as “BUILD_WITH_INSTALL_RPATH” is for “RPATH”.
  • A “CUDA_PTX_COMPILATION” target property was added to Object Libraries to support compiling to “.ptx” files instead of host object files.
  • A new “GoogleTest” module was added to provide the “gtest_add_tests()” function independently of the “FindGTest” module. The function was also updated to support keyword arguments, with functionality expanded to allow a test name prefix and suffix to be specified, the dependency on the source files to be optional and the list of discovered test cases to be returned to the caller.
  • The “Ninja” generator has loosened the dependencies of object compilation. Object compilation now depends only on custom targets and custom commands associated with libraries on which the object’s target depends and no longer depends on the libraries themselves. Source files in dependent targets may now compile without waiting for their targets’ dependencies to link.
  • Interprocedural optimization (IPO) is now supported for GNU and Clang compilers using link time optimization (LTO) flags. See the “INTERPROCEDURAL_OPTIMIZATION” target property and “CheckIPOSupported” module.
  • The “TARGET_OBJECTS” “generator expression” is now supported by the “add_custom_command()” and “file(GENERATE)” commands.

New in CMake 3.9.0 RC 1 (Jun 6, 2017)

  • Highlights:
  • The “add_library()” command “IMPORTED” option learned to support Object Libraries.
  • All “find_” commands now have a “PACKAGE_ROOT” search path group that is first in the search heuristics. If a “find_” command is called from inside a find module, then the CMake variable and environment variable named “_ROOT” are used as prefixes and are the first set of paths to be searched.
  • The “install(TARGETS)” command learned a new “OBJECTS” option to specify where to install Object Libraries.
  • The “install(EXPORT)” command learned how to export Object Libraries.
  • A “BUILD_WITH_INSTALL_NAME_DIR” target property and corresponding “CMAKE_BUILD_WITH_INSTALL_NAME_DIR” variable were added to control whether to use the “INSTALL_NAME_DIR” target property value for binaries in the build tree. This is for macOS “install_name” as “BUILD_WITH_INSTALL_RPATH” is for “RPATH”.
  • A “CUDA_PTX_COMPILATION” target property was added to Object Libraries to support compiling to “.ptx” files instead of host object files.
  • A new “GoogleTest” module was added to provide the “gtest_add_tests()” function independently of the “FindGTest” module. The function was also updated to support keyword arguments, with functionality expanded to allow a test name prefix and suffix to be specified, the dependency on the source files to be optional and the list of discovered test cases to be returned to the caller.
  • The “Ninja” generator has loosened the dependencies of object compilation. Object compilation now depends only on custom targets and custom commands associated with libraries on which the object’s target depends and no longer depends on the libraries themselves.
  • Source files in dependent targets may now compile without waiting for their targets’ dependencies to link.
  • Interprocedural optimization (IPO) is now supported for GNU and Clang compilers using link time optimization (LTO) flags. See the “INTERPROCEDURAL_OPTIMIZATION” target property and “CheckIPOSupported” module.
  • The “TARGET_OBJECTS” “generator expression” is now supported by the “add_custom_command()” and “file(GENERATE)” commands.

New in CMake 3.8.2 (Jun 1, 2017)

  • bootstrap: fix build on mingw-w64
  • cmFileCommand: Fix build on mingw-w64
  • GNUtoMS: Add search path for VS 2015 environment scripts
  • GNUtoMS: Add search path for VS 2017 environment scripts
  • FindDevIL: Restore IL_FOUND result variable
  • FindOpenSSL: Restore support for crypto-only result
  • CMake 3.8.2
  • source_group: Restore TREE support for relative paths
  • VS: Fix debugging of C++ executables if CSharp is enabled

New in CMake 3.8.1 (May 3, 2017)

  • FindOpenSSL: Add more library name alternatives
  • FindBoost: Restore tolerance of backslashes in paths
  • Tests: Fix FindModulesExecuteAll when KDE4 is installed
  • Tests: Simplify CMakeOnly.AllFindModules policy settings
  • FindBoost: Fix library directory for VS 2017
  • CMake 3.8.1
  • CPack/RPM doc: CPACK_RPM_BUILDREQUIRES docs
  • source_group: Fix TREE with root that is not current source dir
  • FindMatlab: Add support for Matlab 2017a
  • VS: Fix project reference inspection in VS IDE
  • FindBoost: Allow testing for multiple compiler suffixes
  • FindBoost: Support prebuilt Windows binaries from SourceForge
  • VS2017: Verify Windows 8.1 SDK before using it

New in CMake 3.8.0 (Apr 10, 2017)

  • CMake now supports “CSharp” (C#) as a first-class language. It is currently supported by the Visual Studio Generators for VS 2010 and above.
  • CMake now supports “CUDA” as a first-class language. It is currently supported by the Makefile Generators and the “Ninja” generator on Linux, macOS, and Windows. Support for the Visual Studio IDE is under development but not included in this release.
  • The “Compile Features” functionality now offers meta-features that request compiler modes for specific language standard levels (e.g. “cxx_std_11”). See “CMAKE_C_KNOWN_FEATURES” and “CMAKE_CXX_KNOWN_FEATURES”.
  • The “Compile Features” functionality is now aware of C++ 17. No specific features are yet enumerated besides the “cxx_std_17” meta-
  • feature.
  • The Visual Studio Generators for VS 2013 and above learned to support a “host=x64” option in the “CMAKE_GENERATOR_TOOLSET” value (e.g. via the “cmake(1)” “-T” option) to request use of a VS 64-bit toolchain on 64-bit hosts.
  • The Visual Studio Generators learned to treat files passed to “target_link_libraries()” whose names end in “.targets” as MSBuild “targets” files to be imported into generated project files.
  • The “try_compile()” command source file signature gained new options to specify the language standard to use in the generated
  • test project.
  • The “try_compile()” command source file signature now honors language standard variables like “CMAKE_CXX_STANDARD”. See policy
  • “CMP0067”.
  • A “BUILD_RPATH” target property and corresponding “CMAKE_BUILD_RPATH” variable were added to support custom “RPATH” locations to be added to binaries in the build tree.
  • The “COMPILE_FLAGS” source file property learned to support “generator expressions”.
  • A new generator expression “$” was added. It resolves to the true-value if the condition is “1” and resolves to the false-value if the condition is “0”.
  • The “Compile Features” functionality is now aware of features supported by Intel C++ compilers versions 12.1 through 17.0 on UNIX and Windows platforms.
  • The Visual Studio Generators for VS 2010 and above now place per-source file flags after target-wide flags when they are classified as raw flags with no project file setting (“AdditionalOptions”).
  • This behavior is more consistent with the ordering of flags produced by other generators, and allows flags on more-specific properties (per-source) to override those on more general ones (per-target).
  • The precompiled Windows binary MSI package provided on “cmake.org” now records the installation directory in the Windows Registry under the key “HKLMSoftwareKitwareCMake” with a value named “InstallDir”.

New in CMake 3.8.0 RC 4 (Mar 30, 2017)

  • CMake now supports “CSharp” (C#) as a first-class language. It is currently supported by the Visual Studio Generators for VS 2010 and above.
  • CMake now supports “CUDA” as a first-class language. It is currently supported by the Makefile Generators and the “Ninja” generator on Linux, macOS, and Windows. Support for the Visual Studio IDE is under development but not included in this release.
  • The “Compile Features” functionality now offers meta-features that request compiler modes for specific language standard levels (e.g. “cxx_std_11”). See “CMAKE_C_KNOWN_FEATURES” and “CMAKE_CXX_KNOWN_FEATURES”.
  • The “Compile Features” functionality is now aware of C++ 17. No specific features are yet enumerated besides the “cxx_std_17” meta- feature.
  • The Visual Studio Generators for VS 2013 and above learned to support a “host=x64” option in the “CMAKE_GENERATOR_TOOLSET” value (e.g. via the “cmake(1)” “-T” option) to request use of a VS 64-bit toolchain on 64-bit hosts.
  • The Visual Studio Generators learned to treat files passed to “target_link_libraries()” whose names end in “.targets” as MSBuild “targets” files to be imported into generated project files. The “try_compile()” command source file signature gained new options to specify the language standard to use in the generated test project.
  • The “try_compile()” command source file signature now honors language standard variables like “CMAKE_CXX_STANDARD”. See policy “CMP0067”.
  • A “BUILD_RPATH” target property and corresponding “CMAKE_BUILD_RPATH” variable were added to support custom “RPATH” locations to be added to binaries in the build tree. The “COMPILE_FLAGS” source file property learned to support “generator expressions”.
  • A new generator expression “$” was added. It resolves to the true-value if the condition is “1” and resolves to the false-value if the condition is “0”. The “Compile Features” functionality is now aware of features supported by Intel C++ compilers versions 12.1 through 17.0 on UNIX and Windows platforms.
  • The Visual Studio Generators for VS 2010 and above now place per- source file flags after target-wide flags when they are classified as raw flags with no project file setting (“AdditionalOptions”). This behavior is more consistent with the ordering of flags produced by other generators, and allows flags on more-specific properties (per-source) to override those on more general ones (per-target). The precompiled Windows binary MSI package provided on “cmake.org” now records the installation directory in the Windows Registry under the key “HKLMSoftwareKitwareCMake” with a value named “InstallDir”.

New in CMake 3.8.0 RC 3 (Mar 26, 2017)

  • FindHDF5: fix quoting
  • Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF"
  • FindGit: Avoid finding VS 2017 non-general Git installation
  • Help: Fix typo in CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
  • libarchive: backport rc4 crypto requirement update
  • FindHDF5: Improve HDF5_ROOT variable documentation
  • FindHDF5: Add option to skip finding package configuration file
  • Ninja: Fix Fortran 'include' dependency on generated file
  • FindwxWidgets: Use 'MSVC_VERSION' instead of 'MSVC##'
  • FindwxWidgets: Add support for VS 2017 v141 toolset
  • MSVC: Exclude future cl 20+ from MSVC14 variable
  • Help: Clarify MSVC14 docs w.r.t. VS 2017 v141 toolset
  • Help: Document preference of 'MSVC_VERSION' over 'MSVC##'
  • InstallRequiredSystemLibraries: Use 'MSVC_VERSION' instead of 'MSVC##'
  • InstallRequiredSystemLibraries: Refactor to avoid macros
  • InstallRequiredSystemLibraries: Drop version from variable names
  • FindBoost: Avoid mentioning discouraged 'MSVC##' variable
  • FindGTK2: Use 'MSVC_VERSION' instead of 'MSVC##'
  • FindRuby: Use 'MSVC_VERSION' instead of 'MSVC##'
  • InstallRequiredSystemLibraries: Split VS IDE and DLL versions
  • InstallRequiredSystemLibraries: Split MFC redist dir variable
  • InstallRequiredSystemLibraries: Add support for VS 2017
  • CPack/RPM: fix error message associated with source path length
  • CPack/RPM: fix cpack_rpm_debugsymbol_check parameter
  • FindBLAS/LAPACK: Format documentation
  • FindHDF5: Restore '-D' in HDF5_DEFINITIONS
  • FindBoost: Add support for 1.64
  • FindBoost: Update support for 1.64
  • FindVulkan: Fix for SDK versions < 1.0.42 on 32-bit Windows
  • VS: Do not treat custom targets as CSharp targets
  • CSharpUtilities: Fix documentation
  • CUDA: Disable support for using response files.
  • server-mode: Make CMAKE_HOME_DIRECTORY more reliable
  • Help: Update MSVC_VERSION for Visual Studio 2017

New in CMake 3.8.0 RC 2 (Mar 3, 2017)

  • FindGTK2: handle old libsigc++ versions
  • FindCUDA: Fix PTX selection with multiple architectures
  • FindVulkan: Update for LunarG SDK import library location on Windows
  • Utilities/Sphinx: Port qthelp css workaround to Sphinx 1.4
  • Help: Fix cmake code block warnings produced by Sphinx 1.4
  • Help: Improve execute_process ENCODING option documentation
  • execute_process: Restore no-decoding default behavior
  • clang-format.bash: Format CUDA source files too
  • Modules: Run clang-format on CUDA code
  • Tests: Run clang-format on CUDA code
  • Tests: Add case for CUDA with C but not C++
  • CUDA: Link to standard system libraries when linking as CUDA
  • CUDA: Do not use non-existent -Os flag for nvcc
  • CUDA: Fix test cases to not override CUDA flags
  • CUDA: Fix default compiler flags on Windows
  • ctest_update: Fix svn log and external loading
  • FindHDF5: Restore HDF5__INCLUDE_DIR advanced cache entry mark
  • FindHDF5: Fix search for language-specific header file
  • Windows: Fix inconsistent behavior on changes to case of path to cmake
  • CUDA: Fix boolean interpretation of CUDA_SEPARABLE_COMPILATION
  • ExternalProject: Clarify documented role of INSTALL_DIR
  • VS2017: If Win 8.1 SDK is not available, use Win 10 SDK
  • Define a custom Git attribute to mark source files as generated
  • Define a custom Git attribute to mark sources using our C style
  • clang-format.bash: Use Git attributes to mark files for formatting
  • VS: Fix .vcxproj indentation
  • Revert "Ninja: Use full path for all source files"
  • Fix COMPILE_PDB_NAME when used on an OBJECT library
  • ExternalProject: Run git checkout with -- to clarify arguments
  • cmFindLibraryCommand: Refactor AddArchitecturePath logic
  • find_library: Skip 'lib => lib' searches if one symlinks the other
  • cmOrderDirectories: Factor out implicit directory check
  • cmOrderDirectories: Consider symlinks when checking implicit directories
  • Tests: Add case for RPATH exclusion of symlinks to implicit directories
  • Utilities/Sphinx: Port cmake extension to Sphinx 1.4
  • FindJNI: Add jvm paths for Arch Linux
  • Help: Clarify 'make-style' variable references in cmake-language(7)
  • VS: add VS_CSHARP_ sourcefile property
  • VS: add CSharpUtilities module
  • VS: add test for VS_CSHARP_* source file property
  • KWIML: Add -Wno-format-security to tolerate -Werror=format-security
  • CUDA: Detect the toolkit include directories
  • Autogen: Fix headers not skipped
  • ExternalProject: Clarify documented role of INSTALL_COMMAND

New in CMake 3.8.0 RC 1 (Feb 7, 2017)

  • NEW FEATURES:
  • C#:
  • CMake learned to support CSharp (C#) as a first-class language that can be enabled via the project() and enable_language() commands. It is currently supported by the Visual Studio Generators for VS 2010 and above.
  • C# assemblies and programs can be added just like common C++ targets using the add_library() and add_executable() commands. References between C# targets in the same source tree may be specified by target_link_libraries() like for C++. References to system or 3rd-party assemblies may be specified by the target properties VS_DOTNET_REFERENCE_ and VS_DOTNET_REFERENCES.
  • More fine tuning of C# targets may be done using target and source file properties. Specifically the target properties related to Visual Studio (VS_*) are worth a look (for setting toolset versions, root namespaces, assembly icons, ...).
  • Auto-linking in .csproj files: In C#/.NET development with Visual Studio there are a number of visual editors used which generate code. Both the generated files and the ones edited with the UI are connected in the .csproj file using tags. If CMake finds within a C# project any source file with extension .Designer.cs or .xaml.cs, it checks sibling files with extension .xaml, .settings, .resx or .cs and establishes the dependency connection.
  • CUDA:
  • CMake learned to support CUDA as a first-class language that can be enabled via the project() and enable_language() commands.
  • CUDA is currently supported by the Makefile Generators and the Ninja generator on Linux, macOS, and Windows. Support for the Visual Studio IDE is under development but not included in this release.
  • The NVIDIA CUDA Toolkit compiler (nvcc) is supported.
  • C & C++:
  • The Compile Features functionality now offers meta-features that request compiler modes for specific language standard levels (e.g. cxx_std_11). See CMAKE_C_KNOWN_FEATURES and CMAKE_CXX_KNOWN_FEATURES.
  • The Compile Features functionality is now aware of C++ 17. No specific features are yet enumerated besides the cxx_std_17 meta-feature.
  • The Compile Features functionality is now aware of the availability of C99 in gcc since version 3.4.
  • Platforms:
  • A new minimal platform file for Fuchsia was added.
  • Generators:
  • The CodeBlocks extra generator may now be used to generate with NMake Makefiles JOM.
  • The Visual Studio Generators for VS 2013 and above learned to support a host=x64 option in the CMAKE_GENERATOR_TOOLSET value (e.g. via the cmake(1) -T option) to request use of a VS 64-bit toolchain on 64-bit hosts.
  • The Visual Studio Generators learned to treat files passed to target_link_libraries() whose names end in .targets as MSBuild “targets” files to be imported into generated project files.
  • Commands:
  • The add_custom_command() and add_custom_target() commands learned the option COMMAND_EXPAND_LISTS which causes lists in the COMMAND argument to be expanded, including lists created by generator expressions.
  • The execute_process() command gained an ENCODING option to specify on Windows which encoding is used for output from child process.
  • The math(EXPR) command gained support for unary + and - operators.
  • The source_group() command gained TREE and PREFIX options to add groups following source tree directory structure.
  • The string(TIMESTAMP) command learned to treat %% as a way to encode plain %.
  • The string(TIMESTAMP) command will now honor the SOURCE_DATE_EPOCH environment variable and use its value instead of the current time.
  • The try_compile() command source file signature gained new options to specify the language standard to use in the generated test project.
  • The try_compile() command source file signature now honors language standard variables like CMAKE_CXX_STANDARD. See policy CMP0067.
  • Variables:
  • A CMAKE_CODELITE_USE_TARGETS variable was added to tell the CodeLite extra generator to change the generated project to have target-centric organization. The build, rebuild, and clean operations within CodeLite then work on a selected target rather than the whole workspace. (Note that the Ninja clean operation on a target includes its dependencies, though.)
  • The CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS variable was added to tell the Sublime Text 2 extra generator to place specified environment variables in the generated .sublime-project.
  • The CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE variable was added to tell the Sublime Text 2 extra generator whether to exclude the build tree from the .sublime-project when it is inside the source tree.
  • A CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD variable was added to tell Visual Studio Generators for VS 2010 and above to include the PACKAGE target in the default build, similar to the existing CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD variable for the INSTALL target.
  • Properties:
  • A BUILD_RPATH target property and corresponding CMAKE_BUILD_RPATH variable were added to support custom RPATH locations to be added to binaries in the build tree.
  • The COMPILE_FLAGS source file property learned to support generator expressions.
  • The FRAMEWORK target property may now also be applied to static libraries on Apple targets. It will result in a proper Framework but with a static library inside.
  • Imported Interface Libraries learned new IMPORTED_LIBNAME and IMPORTED_LIBNAME_ target properties to specify a link library name since interface libraries do not build their own library files.
  • A _CPPLINT target property and supporting CMAKE__CPPLINT variable were introduced to tell the Makefile Generators and the Ninja generator to run the cpplint style checker along with the compiler for C and CXX languages.
  • A MANUALLY_ADDED_DEPENDENCIES target property has been added. It provides a read-only list of dependencies that have been added with the add_dependencies() command.
  • The MAP_IMPORTED_CONFIG_ target property learned to interpret empty list elements as referring to the configuration-less imported location specified by IMPORTED_LOCATION.
  • The NO_SYSTEM_FROM_IMPORTED target property is now supported on Imported Interface Libraries.
  • New source file properties SKIP_AUTOMOC, SKIP_AUTOUIC, SKIP_AUTORCC, and SKIP_AUTOGEN were added to allow source files to be excluded from processing by AUTOMOC, AUTOUIC, and AUTORCC target properties.
  • A VS_COPY_TO_OUT_DIR source file property was added to tell Visual Studio Generators for VS 2010 and above whether or not a file should e copied to the output directory.
  • A VS_DEBUGGER_WORKING_DIRECTORY target property was added to tell Visual Studio Generators for VS 2010 and above what debugger working directory should be set for the target.
  • A VS_DOTNET_REFERENCES_COPY_LOCAL target property was added to specify whether to copy referenced assemblies to the output directory.
  • A VS_DOTNET_REFERENCE_ target property was added to tell Visual Studio Generators for VS 2010 and above to add a .NET reference with a given hint path.
  • A VS_INCLUDE_IN_VSIX source file property was added to tell Visual Studio Generators for VS 2010 and above whether to include the file in a Visual Studio extension package.
  • A VS_RESOURCE_GENERATOR source file property was added to give Visual Studio Generators for VS 2010 and above a setting for the resource generator (C# only).
  • A VS_USER_PROPS target property was added to tell Visual Studio Generators for VS 2010 and above to use a custom MSBuild user .props file.
  • A XCODE_EMIT_EFFECTIVE_PLATFORM_NAME global property was added to tell the Xcode generator whether to emit the EFFECTIVE_PLATFORM_NAME variable. This is useful when building with multiple SDKs like macosx and iphoneos in parallel.
  • New XCODE_PRODUCT_TYPE and XCODE_EXPLICIT_FILE_TYPE target properties were created to tell the Xcode generator to use custom values of the corresponding attributes for a target in the generated Xcode project.
  • Modules:
  • The ExternalData module learned to support multiple content links for one data file using different hashes, e.g. img.png.sha256 and img.png.sha1. This allows objects to be fetched from sources indexed by different hash algorithms.
  • The ExternalProject module gained the GIT_PROGRESS option to force Git to show progress when cloning repositories.
  • The ExternalProject module gained a GIT_CONFIG option to pass --config options to Git when cloning repositories.
  • The FeatureSummary module feature_summary() command now accepts a new QUIET_ON_EMPTY option that suppresses the output when the list of packages that belong to the selected category is empty.
  • The FeatureSummary module add_feature_info() command now accepts lists of dependencies for deciding whether a feature is enabled or not.
  • The package types accepted by the FeatureSummary module can now be tweaked by changing the FeatureSummary_PKG_TYPES, FeatureSummary_REQUIRED_PKG_TYPES and FeatureSummary_DEFAULT_PKG_TYPE global properties.
  • The FindOpenGL module now provides imported targets OpenGL::GL and OpenGL::GLU when the libraries are found.
  • The UseSWIG module gained a swig_add_library command to give more flexibility over the old swig_add_module command.
  • The UseSWIG module swig_add_source_to_module command learned a new SWIG_OUTFILE_DIR option to control the output file location (swig -o).
  • The WriteCompilerDetectionHeader module gained the ALLOW_UNKNOWN_COMPILERS and ALLOW_UNKNOWN_COMPILER_VERSIONS options that allow creation of headers that will work also with unknown or old compilers by simply assuming they do not support any of the requested features.
  • CTest:
  • The ctest_memcheck() command gained a DEFECT_COUNT option to capture the number of memory defects detected.
  • The ctest_memcheck() command learned to read the location of suppressions files for sanitizers from the CTEST_MEMORYCHECK_SUPPRESSIONS_FILE variable.
  • The ctest_memcheck() command learned to support LeakSanitizer independently from AddressSanitizer.
  • The ctest_update() command CDASH_UPLOAD signature was taught to honor the RETRY_COUNT, RETRY_DELAY, and QUIET options.
  • CPack:
  • The CPackIFWConfigureFile module was added to define a new cpack_ifw_configure_file() command to configure file templates prepared in QtIFW/SDK/Creator style.
  • The CPackIFW module cpack_ifw_configure_component() and cpack_ifw_configure_component_group() commands gained a new DEFAULT, VIRTUAL, FORCED_INSTALLATION, REQUIRES_ADMIN_RIGHTS, DISPLAY_NAME, UPDATE_TEXT, DESCRIPTION, RELEASE_DATE, AUTO_DEPEND_ON and TRANSLATIONS options to more specific configuration.
  • The CPackIFW module cpack_ifw_configure_component() command gained a new DEPENDENCIES alias for DEPENDS option.
  • The CPackIFW module cpack_ifw_configure_component_group() command gained a new DEPENDS option. The DEPENDENCIES alias also added.
  • The CPackIFW module cpack_ifw_configure_component() and cpack_ifw_configure_component_group() commands PRIORITY option now is deprecated and will be removed in a future version of CMake. Please use new SORTING_PRIORITY option instead.
  • The CPackIFW module gained new CPACK_IFW_PACKAGE_WATERMARK, CPACK_IFW_PACKAGE_BANNER, CPACK_IFW_PACKAGE_BACKGROUND, CPACK_IFW_PACKAGE_WIZARD_STYLE, CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH, CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT, and CPACK_IFW_PACKAGE_TITLE_COLOR variables to customize a QtIFW installer look.
  • The CPackProductBuild module gained options to sign packages. See the variables CPACK_PRODUCTBUILD_IDENTITY_NAME, CPACK_PRODUCTBUILD_KEYCHAIN_PATH, CPACK_PKGBUILD_IDENTITY_NAME, and CPACK_PKGBUILD_KEYCHAIN_PATH.
  • The CPackRPM module learned to omit tags that are not supported by provided rpmbuild tool. If unsupported tags are set they are ignored and a developer warning is printed out.
  • The CPackRPM module learned to generate main component package which forces generation of a rpm for defined component without component suffix in filename and package name. See CPACK_RPM_MAIN_COMPONENT variable.
  • The CPackRPM module learned to generate a single debuginfo package on demand even if components packaging is used. See CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE variable.
  • The CPackRPM module learned to support multiple directives per file when using CPACK_RPM_USER_FILELIST variable.
  • Other:
  • CMake functionality using cryptographic hashes now supports SHA-3 algorithms.
  • A new generator expression $ was added. It resolves to the true-value if the condition is 1 and resolves to the false-value if the condition is 0.
  • DEPRECATED AND REMOVED FEATURES:
  • The FeatureSummary module commands set_package_info(), set_feature_info(), print_enabled_features(), and print_disabled_features() are now deprecated.
  • The UseSWIG module swig_add_module command is now deprecated in favor of swig_add_library.
  • OTHER CHANGES:
  • If a command specified by the _CLANG_TIDY target property returns non-zero at build time this is now treated as an error instead of silently ignored.
  • The ctest_memcheck() command no longer automatically adds leak_check=1 to the options used by AddressSanitizer. The default behavior of AddressSanitizer is to run LeakSanitizer to check leaks unless leak_check=0.
  • The ctest_memcheck() command was fixed to correctly append extra sanitizer options read from the CTEST_MEMORYCHECK_SANITIZER_OPTIONS variable to the environment variables used internally by the sanitizers.
  • The FeatureSummary module set_package_properties() command no longer forces the package type to OPTIONAL when the type is not explicitly set.
  • The Compile Features functionality is now aware of features supported by Intel C++ compilers versions 12.1 through 17.0 on UNIX and Windows platforms.
  • Calls to the FindPkgConfig module pkg_check_modules() command following a successful call learned to re-evaluate the cached values for a given prefix after changes to the parameters to the command for that prefix.
  • When using AUTOMOC or AUTOUIC, generated moc_*, *.moc and ui_* are placed in the /_autogen/include directory which is automatically added to the target’s INCLUDE_DIRECTORIES. It is therefore not necessary anymore to have CMAKE_CURRENT_BINARY_DIR in the target’s INCLUDE_DIRECTORIES.
  • The Sublime Text 2 generator no longer runs the native build command (e.g. ninja or make) with verbose build output enabled.
  • The try_compile() command source file signature now honors the CMAKE_WARN_DEPRECATED variable value in the generated test project.
  • The Visual Studio Generators for VS 2010 and above now place per-source file flags after target-wide flags when they are classified as raw flags with no project file setting (AdditionalOptions). This behavior is more consistent with the ordering of flags produced by other generators, and allows flags on more-specific properties (per-source) to override those on more general ones (per-target).
  • The precompiled Windows binary MSI package provided on cmake.org now records the installation directory in the Windows Registry under the key HKLMSoftwareKitwareCMake with a value named InstallDir.

New in CMake 3.7.2 (Jan 14, 2017)

  • cmake-server: Do not try watching subdirectories with empty names
  • VS: Add v141 flag table entry for "-Zc:inline-"
  • VS: Add v140 flag table entries for "-Zc:inline[-]"
  • VS: Fix standalone Windows7.1SDK toolset selection
  • CMake 3.7.2
  • FindBoost: Add support for 1.63
  • FindPostgreSQL: automatically find installations from yum.postgresql.org
  • server-mode: Do not ignore the first cacheArgument on configure
  • server-mode: Call ResetErrorOccured before configure
  • server-mode: Do not crash when running into INTERFACE_LIBRARY
  • FindBoost: Add support for VS 2017

New in CMake 3.7.1 (Dec 1, 2016)

  • ARMCC: Fix flag used for response files
  • VS: Update VS 15 generator for Preview 5
  • FindBISON: Do not rebuild every time when not VERBOSE
  • Android: Always set CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
  • Android: Add CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG variable
  • Android: Add CMAKE__ANDROID_TOOLCHAIN_MACHINE
  • Help: Document CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
  • variable
  • libarchive: Add headers to adapt between OpenSSL 1.1 and
  • older versions
  • libarchive: Add support for building with OpenSSL 1.1
  • CMake 3.7.1
  • Revert "Xcode: Obey SYSTEM keyword for includes (#15687)"
  • VS: Rename VS 15 generator to 'Visual Studio 15 2017'
  • server-mode: Prevent possible crash when watching directories
  • server-mode: Reset GlobalGenerator before configure

New in CMake 3.7.0 (Nov 11, 2016)

  • HIGHLIGHTS:
  • CMake now supports Cross Compiling for Android with simple toolchain files.
  • The “Ninja” generator learned to conditionally support Fortran when using a “ninja” tool that has the necessary features. See generator documentation for details.
  • The “if()” command gained new boolean comparison operations “LESS_EQUAL”, “GREATER_EQUAL”, “STRLESS_EQUAL”, “STRGREATER_EQUAL”, “VERSION_LESS_EQUAL”, and “VERSION_GREATER_EQUAL”.
  • The “try_compile()” command source file signature now honors configuration-specific flags (e.g. “CMAKE__FLAGS_DEBUG”) in the generated test project. Previously only the default such flags for the current toolchain were used. See policy “CMP0066”.
  • “Toolchain files” may now set “CMAKE_EXE_LINKER_FLAGS_INIT”, “CMAKE_SHARED_LINKER_FLAGS_INIT”, and “CMAKE_MODULE_LINKER_FLAGS_INIT” variables to initialize the “CMAKE_EXE_LINKER_FLAGS”, “CMAKE_SHARED_LINKER_FLAGS”, and “CMAKE_MODULE_LINKER_FLAGS” cache entries the first time a language is enabled in a build tree.
  • CTest now supports test fixtures through the new “FIXTURES_SETUP”, “FIXTURES_CLEANUP” and “FIXTURES_REQUIRED” test properties. When using regular expressions or “–rerun-failed” to limit the tests to be run, a fixture’s setup and cleanup tests will automatically be added to the execution set if any test requires that fixture.
  • We no longer provide Linux i386 binaries for download from “cmake.org” for new versions of CMake.
  • Vim support files “cmake-indent.vim”, “cmake-syntax.vim”, and “cmake-help.vim” have been removed in favor of the files now provided from the vim-cmake-syntax project.
  • Support for building CMake itself with some compilers was dropped:
  • Visual Studio 7.1 and 2005 — superseded by VS 2008 and above
  • MinGW.org mingw32 — superseded by MSYS2 mingw32 and mingw64
  • CMake still supports generating build systems for other projects using these compilers.

New in CMake 3.7.0 RC 3 (Nov 5, 2016)

  • FindMatlab: Add support for Matlab 2016b (9.1)
  • Revert "Xcode: Convert maybe unversioned OSX sysroot into versioned SDK path"
  • Darwin: Remove deployment target version check
  • CPackIFW: Update search to find QtIFW distributed with QtSDK
  • Help: Update example Qt 5 find_package call to use COMPONENTS
  • FindMatlab: Fix typo in matlab_add_unit_test implementation
  • Help: Update example Qt 5 find_package call to add missing component
  • Help: Fix cmake-server documentation
  • cmake-server: Better error reporting during handshake
  • server-mode: Handle generator toolset and platform in handshake

New in CMake 3.7.0 RC 2 (Oct 20, 2016)

  • CMake now supports Cross Compiling for Android with simple toolchain files.
  • The “Ninja” generator learned to conditionally support Fortran when using a “ninja” tool that has the necessary features. See generator documentation for details.
  • The “if()” command gained new boolean comparison operations “LESS_EQUAL”, “GREATER_EQUAL”, “STRLESS_EQUAL”, “STRGREATER_EQUAL”, “VERSION_LESS_EQUAL”, and “VERSION_GREATER_EQUAL”.
  • The “try_compile()” command source file signature now honors configuration-specific flags (e.g. “CMAKE__FLAGS_DEBUG”) in the generated test project. Previously only the default such flags for the current toolchain were used. See policy “CMP0066”.
  • “Toolchain files” may now set “CMAKE_EXE_LINKER_FLAGS_INIT”, “CMAKE_SHARED_LINKER_FLAGS_INIT”, and “CMAKE_MODULE_LINKER_FLAGS_INIT” variables to initialize the “CMAKE_EXE_LINKER_FLAGS”, “CMAKE_SHARED_LINKER_FLAGS”, and “CMAKE_MODULE_LINKER_FLAGS” cache entries the first time a language is enabled in a build tree.
  • CTest now supports test fixtures through the new “FIXTURES_SETUP”, “FIXTURES_CLEANUP” and “FIXTURES_REQUIRED” test properties. When using regular expressions or “–rerun-failed” to limit the tests to be run, a fixture’s setup and cleanup tests will automatically be added to the execution set if any test requires that fixture.
  • We no longer provide Linux i386 binaries for download from “cmake.org” for new versions of CMake.
  • Vim support files “cmake-indent.vim”, “cmake-syntax.vim”, and “cmake-help.vim” have been removed in favor of the files now provided from the vim-cmake-syntax project.
  • Support for building CMake itself with some compilers was dropped:
  • Visual Studio 7.1 and 2005 — superseded by VS 2008 and above
  • MinGW.org mingw32 — superseded by MSYS2 mingw32 and mingw64

New in CMake 3.7.0 RC 1 (Oct 5, 2016)

  • HIGHLIGHTS:
  • CMake now supports Cross Compiling for Android with simple toolchain files.
  • The “Ninja” generator learned to conditionally support Fortran when using a “ninja” tool that has the necessary features. See generator documentation for details.
  • The “if()” command gained new boolean comparison operations “LESS_EQUAL”, “GREATER_EQUAL”, “STRLESS_EQUAL”, “STRGREATER_EQUAL”, “VERSION_LESS_EQUAL”, and “VERSION_GREATER_EQUAL”.
  • The “try_compile()” command source file signature now honors configuration-specific flags (e.g. “CMAKE__FLAGS_DEBUG”) in the generated test project. Previously only the default such flags for the current toolchain were used. See policy “CMP0066”.
  • “Toolchain files” may now set “CMAKE_EXE_LINKER_FLAGS_INIT”, “CMAKE_SHARED_LINKER_FLAGS_INIT”, and “CMAKE_MODULE_LINKER_FLAGS_INIT” variables to initialize the “CMAKE_EXE_LINKER_FLAGS”, “CMAKE_SHARED_LINKER_FLAGS”, and “CMAKE_MODULE_LINKER_FLAGS” cache entries the first time a language is enabled in a build tree.
  • CTest now supports test fixtures through the new “FIXTURES_SETUP”, “FIXTURES_CLEANUP” and “FIXTURES_REQUIRED” test properties. When using regular expressions or “–rerun-failed” to limit the tests to be run, a fixture’s setup and cleanup tests will automatically be added to the execution set if any test requires that fixture.
  • We no longer provide Linux i386 binaries for download from “cmake.org” for new versions of CMake.
  • Vim support files “cmake-indent.vim”, “cmake-syntax.vim”, and “cmake-help.vim” have been removed in favor of the files now provided from the vim-cmake-syntax project.
  • Support for building CMake itself with some compilers was dropped (CMake still supports generating build systems for other projects using these compilers):
  • Visual Studio 7.1 and 2005 — superseded by VS 2008 and above
  • MinGW.org mingw32 — superseded by MSYS2 mingw32 and mingw64
  • NEW FEATURES:
  • Platforms:
  • CMake now supports Cross Compiling for Android with simple toolchain files.
  • The Clang compiler is now supported on AIX.
  • Generators:
  • The "Ninja" generator learned to conditionally support Fortran when using a "ninja" tool that has the necessary features. See generator documentation for details.
  • The "Ninja" generator learned to produce phony targets of the form "sub/dir/{test,install,package}" to drive the build of a subdirectory installation, test or packaging target. This is equivalent to "cd sub/dir; make {test,install,package}" with Makefile Generators.
  • The "Visual Studio 15" generator was added. This is experimental and based on Preview 4 because this version of VS has not been released.
  • Visual Studio Generators for VS 2010 and above learned to place ".natvis" source files into VS project files properly.
  • The "Xcode" generator's rudimentary Swift language support learned to honor a new "CMAKE_Swift_LANGUAGE_VERSION" variable to tell Xcode what version of Swift is used by the source.
  • The "CodeLite" generator gained a new "CMAKE_CODELITE_USE_TARGETS" option to change project creation from projects to targets.
  • Commands:
  • The "add_custom_command()" command gained a new "DEPFILE" option that works with the "Ninja" generator to provide implicit dependency information to the build tool.
  • The "cmake_parse_arguments()" command gained a new "PARSE_ARGV" mode to read arguments directly from "ARGC" and "ARGV#" variables inside a "function()" body.
  • The "export()" command gained an "ANDROID_MK" option to generate "Android.mk" files referencing CMake-built libraries as prebuilts for the Android NDK build system.
  • The "file(DOWNLOAD)" and "file(UPLOAD)" commands gained "HTTPHEADER " and "USERPWD :" options.
  • The "find_library()" and "find_package()" commands learned to search in "lib32/" directories when the build targets a 32-bit architecture. See the "FIND_LIBRARY_USE_LIB32_PATHS" global property.
  • The "find_package()" command gained the possibility of sorting compatible libraries by "NAME" or by "NATURAL" sorting by setting the two new variables "CMAKE_FIND_PACKAGE_SORT_ORDER" and "CMAKE_FIND_PACKAGE_SORT_DIRECTION".
  • The "if()" command gained new boolean comparison operations "LESS_EQUAL", "GREATER_EQUAL", "STRLESS_EQUAL", "STRGREATER_EQUAL", "VERSION_LESS_EQUAL", and "VERSION_GREATER_EQUAL".
  • The "install()" command gained an "EXPORT_ANDROID_MK" subcommand to install "Android.mk" files referencing installed libraries as prebuilts for the Android NDK build system.
  • The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands gained support for the "%a" and "%b" placeholders. These are the abbreviated weekday and month names.
  • The "try_compile()" command source file signature now honors configuration-specific flags (e.g. "CMAKE__FLAGS_DEBUG") in the generated test project. Previously only the default such flags for the current toolchain were used. See policy "CMP0066".
  • Variables:
  • Variable "CMAKE_FIND_PACKAGE_SORT_ORDER" was added to control the sorting mode of the "find_package()" command.
  • Variable "CMAKE_FIND_PACKAGE_SORT_DIRECTION" was added to control the sorting direction the "find_package()" command.
  • "Toolchain files" may now set a "CMAKE__FLAGS_INIT" variable to initialize the "CMAKE__FLAGS" cache entry the first time a language is enabled in a build tree.
  • "Toolchain files" may now set "CMAKE_EXE_LINKER_FLAGS_INIT", "CMAKE_SHARED_LINKER_FLAGS_INIT", and "CMAKE_MODULE_LINKER_FLAGS_INIT" variables to initialize the "CMAKE_EXE_LINKER_FLAGS", "CMAKE_SHARED_LINKER_FLAGS", and "CMAKE_MODULE_LINKER_FLAGS" cache entries the first time a language is enabled in a build tree.
  • Properties:
  • On Apple platforms the "BUNDLE_EXTENSION" target property now also applies to Frameworks and App Bundles.
  • A "BINARY_DIR" directory property was added to get the absolute path to the binary directory corresponding to the source directory on which the property is read.
  • A "BUILDSYSTEM_TARGETS" directory property was added to get the list of logical buildsystem target names added by the project in a directory.
  • A "LINK_WHAT_YOU_USE" target property and supporting "CMAKE_LINK_WHAT_YOU_USE" variable were introduced to detect (on UNIX) shared libraries that are linked but not needed by running "ldd -r -u".
  • A "SOURCE_DIR" directory property was added to get the absolute path to the source directory associated with a directory.
  • A "SUBDIRECTORIES" directory property was added to get the list of subdirectories added by a project in a directory.
  • A "VS_SDK_REFERENCES" target property was added to tell Visual Studio Generators to reference the named SDKs.
  • A "VS_TOOL_OVERRIDE" source file property was created to tell Visual Studio Generators what tool to use for a source file.
  • The "WINDOWS_EXPORT_ALL_SYMBOLS" target property now applies to executable targets with the "ENABLE_EXPORTS" property set.
  • A "XCODE_FILE_ATTRIBUTES" source file property was added to tell the "Xcode" generator to generate custom content in the Xcode project attributes for the file.
  • Modules:
  • An "AndroidTestUtilities" module was added to manage transfer of test data to an Android device.
  • The "CheckFortranSourceCompiles" module macro "CHECK_Fortran_SOURCE_COMPILES" gained a "SRC_EXT" option to specify a custom test Fortran source file extension.
  • The "ExternalProject" module gained "HTTP_USERNAME" and "HTTP_PASSWORD" options to set http download credentials.
  • The "ExternalProject" module gained a "HTTP_HEADER" option to add http download headers.
  • The "FindBISON" module "BISON_TARGET" macro learned a new "REPORT_FILE" option to specify the bison "--report-file=" option.
  • The "FindBZip2" module now provides imported targets.
  • A "FindICU" module was introduced to find the International Components for Unicode (ICU) libraries and programs.
  • The "FindMatlab" module learned to find a SIMULINK component.
  • The "FindOpenCL" module now provides imported targets.
  • The "FindOpenMP" module learned to detect the OpenMP version (specification date) from the compiler.
  • A "FindVulkan" module was added.
  • The "GenerateExportHeader" module learned a new "CUSTOM_CONTENT_FROM_VARIABLE" option to specify a variable containing custom content for inclusion in the generated header.
  • The "GNUInstallDirs" module gained a new "GNUInstallDirs_get_absolute_install_dir()" command.
  • The "UseJava" module gained APIs to "export" jar targets for use by external CMake projects. See the "install_jar_exports" and "export_jars" functions.
  • CTest:
  • CTest now supports test fixtures through the new "FIXTURES_SETUP", "FIXTURES_CLEANUP" and "FIXTURES_REQUIRED" test properties. When using regular expressions or "--rerun-failed" to limit the tests to be run, a fixture's setup and cleanup tests will automatically be added to the execution set if any test requires that fixture.
  • The "ctest_configure()", "ctest_build()", "ctest_test()", "ctest_coverage()", and "ctest_upload()" commands gained a new "CAPTURE_CMAKE_ERROR" option to capture any errors that occur as the commands run into a variable and avoid affecting the return code of the "ctest(1)" process.
  • CPack:
  • CPack gained a "productbuild" generator on OS X, configured by the "CPackProductBuild" module.
  • CPack gained a new "CPACK_PACKAGE_CHECKSUM" variable to enable generation of a checksum file for each package file.
  • The "CPackDeb" module learned to support long file names when archive format is set to GNU tar. See "CPACK_DEBIAN_ARCHIVE_TYPE"
  • The "CPackIFW" module gained a new "cpack_ifw_add_package_resources()" command to include additional resources in the installer binary.
  • The "CPackIFW" module "cpack_ifw_configure_component()" and "cpack_ifw_configure_component_group()" commands gained a new "USER_INTERFACES" option to add a list of additonal pages to the IFW installer.
  • The "CPackRPM" module learned to generate debuginfo packages on demand. See "CPACK_RPM_DEBUGINFO_PACKAGE" and its per component version.
  • The "CPackRPM" module learned to generate source rpm (SRPM) packages on demand. See "CPACK_RPM_PACKAGE_SOURCES", "CPACK_RPM_SOURCE_PKG_BUILD_PARAMS" and "CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX".
  • The CPack NSIS generator now supports "CPACK_NSIS__INSTALL_DIRECTORY". This can be used to set component specific installation directories.
  • The CPack WIX generator now supports "CPACK_WIX_SKIP_PROGRAM_FOLDER" to allow specification of a custom absolute installation prefix outside of the ProgramFiles folders.
  • The CPack WIX generator now supports "CPACK_COMPONENT__DISABLED". This can be used to deselect a component from being installed by default.
  • The CPack WIX generator now supports "CPACK_WIX_PATCH_FILE" fragments for Feature elements.
  • The CPack WIX generator now supports "CPACK_WIX_ROOT_FEATURE_TITLE" and "CPACK_WIX_ROOT_FEATURE_DESCRIPTION" to allow the specification of a custom title and description for the root feature element.
  • Other:
  • "cmake(1)" gained a "-E capabilities" option to provide a machine- readable (JSON) description of the capabilities of the cmake tool (available generators, etc.).
  • A new "cmake-server(7)" mode was added to provide semantic information about a CMake-generated buildsystem to clients through a JSON protocol. Currently all protocols are experimental and subject to change.
  • The "cmake(1)" command learned a "--trace-source=" option.
  • "ccmake(1)" learned to support vim-like navigation bindings.
  • "cmake-gui(1)" gained a button to open the generated project file for Visual Studio Generators and the "Xcode" generator.
  • Deprecated and Removed Features:
  • We no longer provide Linux i386 binaries for download from "cmake.org" for new versions of CMake.
  • Vim support files "cmake-indent.vim", "cmake-syntax.vim", and "cmake-help.vim" have been removed in favor of the files now provided from the vim-cmake-syntax project.
  • Support for building CMake itself with some compilers was dropped (CMake still supports generating build systems for other projects using these compilers):
  • Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above
  • MinGW.org mingw32 -- superseded by MSYS2 mingw32 and mingw64
  • Other Changes:
  • The Fortran dependency scanner learned to support the syntax of Fortran Submodules.
  • Vim support files "indent/cmake.vim" and "syntax/cmake.vim" from the vim-cmake-syntax project are now distributed with CMake.

New in CMake 3.6.2 (Sep 8, 2016)

  • Intel-C: declare support for gnu11
  • Intel-C: support gnu89 and gnu99 extension flags
  • Intel-C: standard flags are also supported in 12.0
  • Add script to update curl from upstream
  • curl: Update script to get curl 7.50.1
  • curl: Remove CMake-specific README
  • VS: Fix VS 2015 .vcxproj debug setting for Windows7.1SDK toolset
  • GetPrerequisites: Fix regression in gp_resolved_file_type
  • Fortran: Fix .mod file comparison for Intel 16 format
  • VS: Fix VS 2015 .vcxproj debug setting for v80 toolset
  • FindHDF5: Fix regression in providing HDF5_IS_PARALLEL
  • FindHDF5: Fix regression in finding hdf5hl_fortran
  • curl: Backport certificate reuse fix from 7.50.2
  • CMake 3.6.2
  • FindHDF5: Make sure compile definition vars keep the -D flag
  • CrayLinuxEnvironment: Add alternative methods to get version info
  • curl 2015-08-11 (1a7f66a3)
  • curl 2016-08-03 (f2cb3a01)
  • VS: Fix out-of-bounds write on empty Nsight Tegra version
  • FindProtobuf: Restore support for PROTOBUF_IMPORT_DIRS

New in CMake 3.6.1 (Jul 22, 2016)

  • CPack/RPM: Add missed CPACK_RPM_FILE_NAME fallback variable
  • Restore find_(library|file|path) search of PATH itself
  • VS: Fix VS 2015 .vcxproj debug setting for v90 toolset (#15986)
  • Ninja: Do not force response files when no sysconf(3) limit is used
  • CPack: Add compatibility for incorrect CPACK_INSTALL_CMAKE_PROJECTS value
  • Autogen: Revert changes to generate moc/rcc in subdirectories
  • FindHDF5: Fix h5cc arg parsing to work with homebrew on Mac
  • FindHDF5: Properly fail when required components are not found.
  • FindHDF5: Cleanup inconsistent use of HDF5_ROOT
  • NSIS: Quote uninstaller path when executing it in a shell

New in CMake 3.6.0 (Jul 8, 2016)

  • The “Visual Studio 14 2015” generator learned to support the Clang/C2 toolsets, e.g. with the “-T v140_clang_3_7” option. This feature is experimental.
  • The “list()” command gained a “FILTER” sub-command to filter list elements by regular expression.
  • A “CMAKE_TRY_COMPILE_TARGET_TYPE” variable was added to optionally tell the “try_compile()” command to build a static library instead of an executable. This is useful for cross-compiling toolchains that cannot link binaries without custom flags or scripts.
  • A “_CLANG_TIDY” target property and supporting “CMAKE__CLANG_TIDY” variable were introduced to tell the Makefile Generators and the “Ninja” generator to run “clang-tidy” along with the compiler for “C” and “CXX” languages.
  • The “ExternalProject” module leared the “GIT_SHALLOW 1” option to perform a shallow clone of a Git repository.
  • The “ExternalProject” module learned to initialize Git submodules recursively and also to initialize new submodules on updates. Use the “GIT_SUBMODULES” option to restrict which submodules are initalized and updated.
  • The “InstallRequiredSystemLibraries” module learned a new “CMAKE_INSTALL_UCRT_LIBRARIES” option to enable app-local deployment of the Windows Universal CRT libraries with Visual Studio 2015.
  • The “Compile Features” functionality is now aware of features supported by Intel C++ compilers versions 12.1 through 16.0 on UNIX platforms.

New in CMake 3.6.0 RC 4 (Jun 29, 2016)

  • The “Visual Studio 14 2015” generator learned to support the Clang/C2 toolsets, e.g. with the “-T v140_clang_3_7” option. This feature is experimental.
  • The “list()” command gained a “FILTER” sub-command to filter list elements by regular expression.
  • A “CMAKE_TRY_COMPILE_TARGET_TYPE” variable was added to optionally tell the “try_compile()” command to build a static library instead of an executable. This is useful for cross-compiling toolchains that cannot link binaries without custom flags or scripts.
  • A “_CLANG_TIDY” target property and supporting “CMAKE__CLANG_TIDY” variable were introduced to tell the Makefile Generators and the “Ninja” generator to run “clang-tidy” along with the compiler for “C” and “CXX” languages.
  • The “ExternalProject” module leared the “GIT_SHALLOW 1” option to perform a shallow clone of a Git repository.
  • The “ExternalProject” module learned to initialize Git submodules recursively and also to initialize new submodules on updates. Use the “GIT_SUBMODULES” option to restrict which submodules are initalized and updated.
  • The “InstallRequiredSystemLibraries” module learned a new “CMAKE_INSTALL_UCRT_LIBRARIES” option to enable app-local deployment of the Windows Universal CRT libraries with Visual Studio 2015.
  • The “Compile Features” functionality is now aware of features supported by Intel C++ compilers versions 12.1 through 16.0 on UNIX platforms.

New in CMake 3.6.0 RC 3 (Jun 22, 2016)

  • VS: Fix regressed mapping for the cl /Os compiler flag
  • README: Update Issue Tracker link to new location
  • FindQt4: Document Qt4::QtDeclarative imported target (#16157)
  • Help: Clarify VS_STARTUP_PROJECT documentation
  • CPack/Deb: Fix tests for SELinux-enabled systems
  • CPack/Deb: Fix test to actually test the preinst script
  • LibArchive 2016-06-19 (139d0576)
  • FindPkgConfig: define the imported targets also when the data comes from cache
  • cmExtraCodeBlocksGenerator: Do not shuffle include directories

New in CMake 3.6.0 RC 2 (Jun 13, 2016)

  • libarchive: Restore OpenSSL include directory from upstream
  • Help: Document ctest_update branch following behavior
  • Help: Document CTest Git fetch-and-reset behavior CMake 3.6.0-rc2
  • bash-completion: Add cmake --help-manual
  • bash-completion: Fix cmake --help-policy lookup
  • bash-completion: Add ctest --help-{manual,module,policy,property,variable}
  • bash-completion: Add cpack --help-{manual,module,policy,property}
  • Platform: add flag definitions for PathScale compiler on SunOS (#16135)
  • FindLibArchive: Support libarchive 3.2 version string format
  • cmake-gui: Teach Qt5 where plugins are when launched through a symlink

New in CMake 3.6.0 RC 1 (Jun 3, 2016)

  • HIGHLIGHTS:
  • The “Visual Studio 14 2015” generator learned to support the Clang/C2 toolsets, e.g. with the “-T v140_clang_3_7” option. This feature is experimental.
  • The “list()” command gained a “FILTER” sub-command to filter list elements by regular expression.
  • A “CMAKE_TRY_COMPILE_TARGET_TYPE” variable was added to optionally tell the “try_compile()” command to build a static library instead of an executable. This is useful for cross-compiling toolchains that cannot link binaries without custom flags or scripts.
  • A “_CLANG_TIDY” target property and supporting “CMAKE__CLANG_TIDY” variable were introduced to tell the Makefile Generators and the “Ninja” generator to run “clang-tidy” along with the compiler for “C” and “CXX” languages.
  • The “ExternalProject” module leared the “GIT_SHALLOW 1” option to perform a shallow clone of a Git repository.
  • The “ExternalProject” module learned to initialize Git submodules recursively and also to initialize new submodules on updates. Use the “GIT_SUBMODULES” option to restrict which submodules are initalized and updated.
  • The “InstallRequiredSystemLibraries” module learned a new “CMAKE_INSTALL_UCRT_LIBRARIES” option to enable app-local deployment of the Windows Universal CRT libraries with Visual Studio 2015.
  • The “Compile Features” functionality is now aware of features supported by Intel C++ compilers versions 12.1 through 16.0 on UNIX platforms.
  • DEPRECATED AND REMOVED FEATURES:
  • The “CMakeForceCompiler” module and its macros are now deprecated. See module documentation for an explanation.
  • The “Visual Studio 7 .NET 2003” generator is now deprecated and will be removed in a future version of CMake.
  • The “Visual Studio 7” generator (for VS .NET 2002) has been removed. It had been deprecated since CMake 3.3.
  • The “Visual Studio 6” generator has been removed. It had been deprecated since CMake 3.3.

New in CMake 3.5.2 (Apr 15, 2016)

  • Brad King (6):
  • Fix lookup of an ALIAS target outside aliased target's directory (#16044)
  • Rename local target lookup methods to clarify purpose
  • cmFortranParser: Skip #line directives that do not name files
  • Ninja: Fix detection of custom command symbolic outputs
  • Ninja: Restat custom command byproducts even with a SYMBOLIC output (#16049)
  • CMake 3.5.2
  • Gregor Jasny (2):
  • Xcode: Fixup XCTest bundle location for Xcode 7.3
  • ASM: Add missing placeholder for "compile" rules
  • Pierrick Koch (1):
  • FindGSL: Fix typo in documentation

New in CMake 3.5.1 (Mar 25, 2016)

  • FindPkgConfig: set correctly named variables in cache (#15903)
  • cmake-gui: Populate CFBundleIdentifier in our Info.plist file (#16023)
  • CPack: Avoid using OS X CoreServices if compiler fails on header (#16021)
  • FindCUDA: Fix regression in separate compilation (#16027)
  • FindBoost: Tolerate missing indirect dependencies (#16013)
  • Fix iOS combined feature for single architecture targets
  • CPack: Avoid requiring Carbon framework on OS X (#16021)
  • Avoid occasional use-after-free when a variable watch is executed

New in CMake 3.5.0 (Mar 8, 2016)

  • Highlights:
  • The “cmake-gui(1)” learned an option to set the toolset to be used with VS IDE and Xcode generators, much like the existing “-T” option to “cmake(1)”.
  • Find modules for Boost, FLEX, GTest, GTK2, PNG, TIFF, and XercesC now provide imported targets.
  • The “FindOpenMP” module learned to support Clang.
  • A new platform file for cross-compiling in the Cray Linux Environment to target compute nodes was added. See Cross Compiling for the Cray Linux Environment for usage details.
  • The “Compile Features” functionality is now aware of features supported by Clang compilers on Windows (MinGW).
  • Support was added for the ARM Compiler (arm.com) with compiler id “ARMCC”.
  • When building for embedded Apple platforms like iOS CMake learned to build and install combined targets which contain both a device and a simulator build. This behavior can be enabled by setting the “IOS_INSTALL_COMBINED” target property.
  • The “CPackDMG” module learned new variable to specify AppleScript file run to customize appearance of “DragNDrop” installer folder, including background image setting using supplied PNG or multi- resolution TIFF file. See the “CPACK_DMG_DS_STORE_SETUP_SCRIPT” and “CPACK_DMG_BACKGROUND_IMAGE” variables.
  • Deprecated and Removed Features:
  • The “cmake(1)” “-E time” command now properly passes arguments with spaces or special characters through to the child process. This may break scripts that worked around the bug with their ownextra quoting or escaping.
  • The “Xcode” generator was fixed to escape backslashes in strings consistently with other generators. Projects that previously worked around the inconsistecy with an extra level of backslashes conditioned on the Xcode generator must be updated to remove the workaround for CMake 3.5 and greater.

New in CMake 3.5.0 RC 1 (Feb 3, 2016)

  • Highlights:
  • The precompiled Windows binary provided on “cmake.org” is now a “.msi” package instead of an installer executable.
  • One may need to manually uninstall CMake versions lower than 3.5 before installing the new package.
  • The “cmake-gui(1)” learned an option to set the toolset to be used with VS IDE and Xcode generators, much like the existing “-T” option to “cmake(1)”.
  • Find modules for Boost, FLEX, GTest, GTK2, PNG, TIFF, and XercesC now provide imported targets.
  • The “FindOpenMP” module learned to support Clang.
  • A new platform file for cross-compiling in the Cray Linux Environment to target compute nodes was added.
  • See Cross Compiling for the Cray Linux Environment for usage details.
  • The “Compile Features” functionality is now aware of features supported by Clang compilers on Windows (MinGW).
  • Support was added for the ARM Compiler (arm.com) with compiler id “ARMCC”.
  • When building for embedded Apple platforms like iOS CMake learned to build and install combined targets which contain both a device and a simulator build.
  • This behavior can be enabled by setting the “IOS_INSTALL_COMBINED” target property.
  • The “CPackDMG” module learned new variable to specify AppleScript file run to customize appearance of “DragNDrop” installer folder, including background image setting using supplied PNG or multi- resolution TIFF file.
  • See the “CPACK_DMG_DS_STORE_SETUP_SCRIPT” and “CPACK_DMG_BACKGROUND_IMAGE” variables.

New in CMake 3.4.2 (Jan 22, 2016)

  • Fixed issues:
  • 0015831: [CMake] CMake Version 3.4 with VS 2015 fails to detect a Windows 10 SDK (Brad King) - resolved.
  • 0015894: [CMake] Visual C++ 2015 Generator wrong output for debug information (Brad King) - resolved.
  • 0015889: [CMake] IA64 compilers not found in Visual Studio 2010 (and probably others) (Brad King) - resolved.

New in CMake 3.4.1 (Dec 21, 2015)

  • Fixed issues:
  • 0015854: [CMake] Extreme memory usage by CMake 3.4 (Brad King) - resolved.
  • 0015861: [CMake] Configuration with -flto flag failed: CMAKE_CXX_STANDARD_COMPUTED_DEFAULT should be set for AppleClang [3.4 regression] (Brad King) - resolved.
  • 0015855: [CMake] "Disable shared library support when compiler links statically" forbids shared library builds with -nostdlib (Brad King) - resolved.
  • 0015849: [CMake] Linker failure when WINDOWS_EXPORT_ALL_SYMBOLS and /bigobj are used together in a Win64 build. (Bill Hoffman) - resolved.
  • 0015852: CMAKE_CXX_STANDARD broken since CMake 3.4.0 for toolchain files using CMakeForceCompiler (Brad King) - resolved.
  • 0015851: [CMake] CMAKE_PLATFORM_NO_VERSIONED_SONAME is ignored (Brad King) - resolved.
  • 0015845: CMake fails to identify the Cray compilers' version numbers (Brad King) - resolved.

New in CMake 3.4.0 (Nov 17, 2015)

  • Highlights:
  • The "if()" command learned a new "TEST" operator that evaluates to true if a given test name has been defined by the "add_test()" command. See policy "CMP0064".
  • The "install(DIRECTORY)" command "DESTINATION" option learned to support "generator expressions".
  • The "install(FILES)" command "DESTINATION" option learned to support "generator expressions".
  • CMake learned to honor "*.manifest" source files with MSVC tools. Manifest files named as sources of ".exe" and ".dll" targets will be merged with linker-generated manifests and embedded in the binary.

New in CMake 3.4.0 RC 1 (Oct 15, 2015)

  • 0015791: [CCMake] Error configuring 3D Slicer with CMake 3.4.0-rc1.
  • 0015787: [CMake] Please add note about change to 3.4 release notes.
  • 0015662: [CMake] Add support for Windows/Windows Phone SDKs with Visual Studio 2015.
  • 0015774: [CTest] CTest result submission over http fails to set Content-Type header which runs afoul of ModSecurity rules.
  • 0013009: [CTest] CPack DEB generator ignores top-level directories which do not contain a file.
  • 0008767: [CPack] CPack tar generators ignore empty directories (Domen Vrankar) resolved.
  • 0015775: [CMake] Document that SHARED libraries must export at least one symbol.
  • 0015666: Ninja may unnecessarily relink on windows (Nils Gladitz) resolved.
  • 0015729: [CMake] ninja: TARGET_OBJECTS not working, ObjectDirectory and ObjectPathMax used before they are set.
  • 0015686: [CMake] Windows phone projects targeting Windows 10 differ from Windows Phone 8.1 projects.
  • 0015670: [CMake] Add support for setting "Windows target platform version" in VS2015.
  • 0015747: [CMake] Regression: -Wno-dev doesn't work any more in CMake 3.4.
  • 0015757: [CMake] Including a project from parent subdirectory causes CMake to produce wrong build files for Ninja generator.
  • 0015590: [Modules] ExternalProject inits all submodules.
  • 0014905: [CMake] FindThreads doesn't clearly express it requires C language enabled.
  • 0015723: [CMake] Regression: FindCUDA fails for C++ only projects in CMake 3.3.1 due find_package(Threads), while it works well in CMake 3.2.3.
  • 0015754: [CMake] Visual Studio incremental build not working properly when target names start with a capital letter.
  • 0015748: [CMake] Regression: get_target_property dies if a source file does not exist.
  • 0015596: CMakeClDeps.cmake doesn't work if CC contains arguments.
  • 0015674: [CMake] Windows: Correctly determine Windows version for CMAKE_HOST_SYSTEM_VERSION.
  • 0015740: [CMake] NetBSD: curses compatibility.
  • 0015739: [CMake] NetBSD: curses compatibility.
  • 0015738: [CMake] printw() should use format string.
  • 0015741: [CMake] GCC < 4.9 does not have full C11 support.
  • 0012506: [CMake] install( TARGET ) does not work for iOS targets.
  • 0015608: [CMake] automoc fails when enabling autorcc.
  • 0015642: Source file properties lost if case of drive letter changes.
  • 0015644: [CMake] AUTORCC not generating files with Qt 5.1 resolved.
  • 0015736: [Modules] FeatureTesting unreliable.
  • 0015527: [CMake] FindHDF5.cmake: Make it possible to require parallel builds resolved.
  • 0015737: [CMake] Use of redhat-hardened-ld breaks CMake's Fortran compiler library detection for gfortran.
  • 0015735: [CMake] Non-ascii characters in POST_BUILD commands truncated by CMake (if Ninja generator used) on Linux.
  • 0015727: [CMake] Support C compiler features for GNU on windows.
  • 0015714: [Modules] Support for mips64, mips64el, mipsn32, mipsn32el in FindJNI resolved.
  • 0015597: [CMake] Issues with the 'Eclipse CDT4 NMake Makefiles' Generator.
  • 0015710: [Modules] Does not find JNI on x32.
  • 0015693: [CCMake] include_directories(BEFORE not following BEFORE option.
  • 0015669: [Modules] XCTest for iOS target has incorrect TEST_HOST.
  • 0015705: [CMake] Sets SONAME for modules.
  • 0015697: [CMake] CUDA separable compilation intermediate file doesn't get created resolved.
  • 0013685: [CMake] No way to control object file suffix for Object Libraries resolved.
  • 0015696: [CPack] cpack preinstall of subdirectory no longer works.
  • 0015464: [CMake] target_include_directories(tgt SYSTEM PUBLIC foo) adds include path with -I instead of -isystem.
  • 0015640: [CMake] CMake converts generator from Visual Studio 9 2008 to Visual Studio 10 2010 if ZERO_CHECK fails.
  • 0014833: [CMake] FindProtobuf module under Windows doesn't support 64-bit builds.
  • 0015656: [CPack] pls. add CPACK_RPM_PACKAGE_CONFLICTS.
  • 0012062: [CPack] CPackDeb: The EXTRA control files may not be specified on a per-component basis.
  • 0014796: [CMake] LINK_DEPENDS should work with Ninja backend resolved.
  • 0013351: [Modules] GetPrerequisites.cmake doesn't catch errors from dumpbin resolved.
  • 0015664: [CMake] CMake detects the wrong version for the C and C++ Cray Compiler.
  • 0015673: [CMake] CMAKE_C_COMPILER is used to link a CXX shared library on Solaris.
  • 0015657: [CMake] cmTarget::GetOutputInfo called for mytarget which has type UTILITY (CMake Internal Error).
  • 0015651: [Documentation] Missing information in documentation about creation OS X/iOS Frameworks resolved.
  • 0015648: [Modules] FindXercesC.cmake does not work on Windows .
  • 0011240: [CMake] VS 2010 Win64 does not correctly set /MACHINE:x64 in the solution project files resolved.
  • 0015521: [CMake] cmake-mode.el does not derive from prog-mode..
  • 0015620: [CMake] Ninja generator triggers race condition in Borland bcc32 linker causing intermittent build failure.
  • 0015609: [CMake] cmake --build fails with MSBuild.
  • 0015610: [CTest] ctest_update can fail without returning -1 as RETURN_VALUE.
  • 0015600: [CTest] CTest output redirection doesn't respect the order.
  • 0013700: [CPack] CPack fails from fakeroot (Raffi Enficiaud) closed.
  • 0015742: [Documentation] string(REGEX MATCH) and string(REGEX MATCHALL) concatenate arguments (Brad King) closed.

New in CMake 3.3.1 (Aug 17, 2015)

  • Fixes:
  • 0015680: [CMake] The message about a missing CMakeLists.txt in a subdirectory is incorrect [regression] (Brad King) - resolved.
  • 0015684: [CMake] CMAKE_Fortran_COMPILER_VERSION becomes unset after second configuring (Brad King) - resolved.
  • 0015672: [CMake] XCode project broken since cmake 3.3.0 (Gregor Jasny) - resolved.

New in CMake 3.3.0 RC 2 (Jun 12, 2015)

  • Highlights:
  • The "if()" command learned a new "IN_LIST" operator that evaluates to true if a given element is contained in a named list.
  • The "add_dependencies()" command learned to allow dependencies to be added to *interface libraries*. Dependencies added to an interface library are followed transitively in its place since the target itself does not build.
  • The "find_library()", "find_path()", and "find_file()" commands now search in installation prefixes derived from the "PATH" environment variable.
  • The "_VISIBILITY_PRESET" and "VISIBILITY_INLINES_HIDDEN" target properties now affect compilation in sources of all target types. See policy "CMP0063".
  • A "_INCLUDE_WHAT_YOU_USE" target property and supporting "CMAKE__INCLUDE_WHAT_YOU_USE" variable were introduced to tell the *Makefile Generators* and the "Ninja" generator to run "include- what-you-use" along with the compiler for "C" and "CXX" languages.
  • Fixed issues:
  • 0015409: [Modules] FindOpenSSL does not find correct libraries with MinGW (Brad King) resolved.
  • 0015605: [Documentation] Mention TARGET_FILE for COMMAND option of add_custom_command (Brad King) resolved.
  • 0015595: [Modules] FindPkgConfig does not use the CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH cache variables (Daniele E. Domenichelli) resolved.
  • 0015594: [Documentation] Fix a bug in cmake-compile-features(7) manual : Replace target_link_libraries() with target_include_directories() resolved.
  • 0015589: [CMake] Crash when fetching larger data file with External Data on Windows (Brad King) resolved.
  • 0015583: [CMake] Windows-Intel-Fortran.cmake does not disable optimization in CMAKE_Fortran_FLAGS_DEBUG_INIT (Brad King) resolved.
  • 0015576: [CMake] cannot build CMake on old versions of HP-UX IA64 (Brad King) resolved.
  • 0015556: [CMake] CMAKE__VISIBILITY_PRESET not used when compiling static libraries (Brad King) resolved.
  • 0015584: [CMake] cmake -E does not allow to create zip files (Nils Gladitz) resolved.
  • 0015577: [CMake] The 'project' command overwrites CMAKE_CONFIGURATION_TYPES. (Brad King) resolved.
  • 0015567: [CMake] "LOG_CONFIGURE 1" breaks ExternalProject_Add with empty CONFIGURE_COMMAND (Daniele E. Domenichelli) resolved.
  • 0015573: Install links for command line fails always (Brad King) resolved.
  • 0015575: [Documentation] Ambiguous documentation for how to define a (cached) variable in cmake from command line resolved.
  • 0015571: [Modules] CheckTypeSize causes a CMP0054 warning (Rolf Eike Beer) resolved.
  • 0011944: [CPack] CPackDeb: Support dependencies between components/Debian packages (Raffi Enficiaud) resolved.
  • 0013231: [CPack] CPackDeb incorrectly "leaks" Debian dependencies across components (Raffi Enficiaud) resolved.
  • 0013488: [CPack] Patch for CPack Debian generator (fix to the auto-dependecy support via dpkg-shlibdeps) (Raffi Enficiaud) resolved.
  • 0008207: [Modules] FindMatlab is not flexible enough patch included (Raffi Enficiaud) resolved.
  • 0015523: [CMake] ninja AUTORCC with AUTOGEN_TARGET_DEPENDS generated resources (Brad King) resolved.
  • 0015566: [CMake] Some tests fail when source and build tree are under /usr/local resolved.
  • 0015568: [Modules] Bashism in Squish4RunTestCase.sh resolved.
  • 0015564: [CMake] MIPS is a CPU (fix mipsel support) (Brad King) resolved.
  • 0015565: [Modules] Add support for openjdk 8 resolved.
  • 0015439: [CMake] ninja: no possibility to control type of path delimiter and line break for linker response file (Brad King) resolved.
  • 0015560: [CMake] EXTERNALPROJECT_ADD with missing SOURCE_DIR gives unclear error (Brad King) resolved.
  • 0015559: [Documentation] ctest_test & others missing default value documentation for BUILD parameter (Brad King) resolved.
  • 0015553: [Modules] FindGTest.cmake doesn't handle all spaces in TEST / TEST_F macro resolved.
  • 0015545: [CMake] Add support for passing sphinx options (Brad King) resolved.
  • 0015529: [CMake] enhance if() to support list (Nils Gladitz) resolved.
  • 0015542: [CMake] RunCMake tests fail when run with MAKEFLAGS='--jobserver-fds=' in environment (Brad King) resolved.
  • 0015543: [CMake] Typo in Modules/CPack.cmake (Brad King) resolved.
  • 0015540: [Modules] FindwxWidgets does not find wxWidgets 3.0 on Fedora (Brad King) resolved.
  • 0015539: [CMake] Clarify documentation of LIBRARY_OUTPUT_DIRECTORY for MODULE resolved.
  • 0015533: [CMake] CMake documentation for CTEST_USE_LAUNCHERS wrongly states it only works with Makefile generator: it also works with Ninja resolved.
  • 0015535: [CMake] cmake generates bad -F option for a 9 character include directory on OS X (Brad King) resolved.
  • 0015531: [Modules] InstallRequiredSystemLibraries misses MBCS MFC libraries resolved.
  • 0013503: [CMake] CMake fails with Visual Studio generator if CMAKE_TOOLCHAIN_FILE is defined empty (Brad King) resolved.
  • 0015526: [Modules] check_c_compiler_flag does not recognize some Clang messages (Brad King) resolved.
  • 0015287: [CMake] ExternalProject commands do not support generator expressions resolved.
  • 0014660: [CPack] File tree builder is too greedy with 'sed' (Domen Vrankar) resolved.
  • 0015016: [Modules] FindCUDA creates intermediate objects in wrong place when CUDA_SEPARABLE_COMPILATION is ON. (James Bigler) resolved.
  • 0015459: [CMake] autogen broken for ninja generator (Brad King) resolved.
  • 0015518: [CMake] PDB_NAME documentation doesn't mention that it uses OUTPUT_NAME if defined (Brad King) resolved.
  • 0015412: [CMake] FPHSA should set ExactCase_FOUND variable resolved.
  • 0015352: [CMake] FPHSA: Document the kind of variable that should be given to REQUIRED_VARS (Brad King) resolved.
  • 0015508: [Modules] UseSWIG->SWIG_ADD_MODULE doesn't correctly grab module name from source file resolved.
  • 0014680: [CMake] Generating project on VMware workstation mounted shared folder outputs lots of warnings/errors (Brad King) resolved.
  • 0011258: [CMake] VS 2010 CMake plugin is broken (Brad King) resolved.
  • 0015356: [CMake] CodeBlocks: add target to which a file belongs to (Nils Gladitz) resolved.
  • 0015512: [CTest] Fix CTEST_GIT_UPDATE_CUSTOM documentation resolved.
  • 0015500: [Modules] FindMatlab does not look for R2014b and R2015a (Raffi Enficiaud) resolved.
  • 0015422: [CMake] cmake --help should be explicit about how to specify architecture. (Brad King) resolved.
  • 0015474: [CMake] The "Unix Makefiles" generator should use .DELETE_ON_ERROR (Brad King) resolved.
  • 0015494: [CMake] _cmake_feature_test_cxx_generalized_initializers present in MSVC 18.0.31101.1 (Brad King) resolved.
  • 0015493: [CMake] incorrect file parsing, if it has a BOM-header (Brad King) resolved.
  • 0015482: [CMake] CUDA Support Static Linked Binaries. (James Bigler) resolved.
  • 0015489: [CMakeSetup] CMake.ELF test fails when sources are read-only (Brad King) resolved.
  • 0015209: [CPack] RPM generation chokes on directory symlinks with latest rpmbuild (Domen Vrankar) resolved.
  • 0015483: [CMake] CMAKE_MAKE_PROGRAM not managed correctly with CMake/CPack resolved.
  • 0015476: [CPack] WiX packages not created with files that contain special characters. (Nils Gladitz) resolved.
  • 0014677: [CPack] cpack gives archive_read_disk_entry_from_file: Can't lstat (Clinton Stimpson) resolved.
  • 0015414: [CMake] Consider add_dependencies for INTERFACE libraries. (Brad King) resolved.
  • 0014736: [CMake] Xcode warning due to set ARCHS (CMAKE_OSX_ARCHITECTURES) variable in project (Brad King) resolved.
  • 0015434: [CMake] Multiple add_custom_command with the same MAIN_DEPENDENCY causes duplicate rule invokations (Nils Gladitz) resolved.
  • 0015475: [CPack] Fails to build against external Expat 2.1.0 with Visual Studio 2013 (Nils Gladitz) resolved.
  • 0015288: [CMake] Add XCTest support to Xcode generator (Gregor Jasny) resolved.
  • 0015460: [CMake] PGI Fortran compiler does not recognise -fPIE resolved.
  • 0014655: [CMake] Setting CMAKE_JAVA_TARGET_OUTPUT_DIR does not set the output for NMake type generator resolved.
  • 0015416: [CMake] AutogenInfo.cmake broken when Modules/AutogenInfo.cmake.in is read-only resolved.
  • 0015443: [CMake] Unable to use target_compile_features with MinGW-w64 (Brad King) resolved.
  • 0015454: [CMake] Ninja generator should not generate phony commands with cyclic dependency (Brad King) resolved.
  • 0014641: [CMake] FindMatlab.cmake is outdated/broken (Raffi Enficiaud) resolved.
  • 0015446: [CTest] In verbose mode, display env vars that were explicitly set for each test (Zach Mullen) resolved.
  • 0014857: [CMake] Allow COMPILE_OPTIONS to vary by source file language (Stephen Kelly) resolved.
  • 0015437: [CMake] CMake 3.0 produces no console output when `cmake.exe --build .` is used. (Brad King) resolved.
  • 0015381: [CMake] VS: Map Intel Fortran flags for OpenMP, Traceback, and FloatingPointExceptionHandling (Brad King) resolved.
  • 0015436: [CMake] ninja generator breaks in symlinked directory (Brad King) resolved.
  • 0015433: [CPack] CPack WIX creates incorrect .wixobj filenames for CPACK_WIX_EXTRA_SOURCES (Nils Gladitz) resolved.
  • 0015364: [CMake] FindBoost.cmake does not find debug libraries if they are located in a different directory than the release libraries (Brad King) resolved.
  • 0015428: [CMake] InstallRequiredSystemLibraries.cmake does not work when installing with component (Brad King) resolved.
  • 0015380: [CMake] Misleading documentation in "Macro Argument Caveats" caveats (Daniele E. Domenichelli) resolved.
  • 0015404: [CMake] cmake dos not set CMAKE_RC_FLAGS to include the platform defines like WIN32_WCE UNDER_CE etc. (Brad King) resolved.
  • 0014552: [CMake] testCCompiler for WinCE ARMV4I and NMake generator fails with linker error (Brad King) resolved.
  • 0014782: CPack fails when install file/dir path has '@' (Domen Vrankar) resolved.
  • 0014890: [CPack] cpack, wix, It's not possible to patch directories (patch attached) (Nils Gladitz) resolved.
  • 0015413: [CMake] CheckStructHasMember generates an uninitialized variable warning (Brad King) resolved.
  • 0015370: [CMake] find_path, find_file, and find_library should get prefixes from PATH (Brad King) resolved.
  • 0015372: [CMake] CMAKE_Fortran_COMPILER_VERSION is never set but FindOpenMP.cmake depends on it (Brad King) resolved.
  • 0015185: [CPack] Allow for partial customization of WiX.template.in (Nils Gladitz) resolved.
  • 0014317: [CMake] Configuration dependent install EXPORT (Brad King) resolved.
  • 0012991: [CMake] Parallel build output mess (Brad King) resolved.
  • 0014550: FindCUDA: source files shared between multiple targets results in linker using objects from both targets (James Bigler) closed.
  • 0015499: cmake -E tar generated packages with long filenames can not be processed by PHP's PharData (Nils Gladitz) closed.
  • 0015169: [CPack] CPackRPM: component-specific settings "fall through" to next component (Domen Vrankar) closed.
  • 0015442: [CMake] Test 124 fails, space before colon in check_file_match_expected_relocation_path (Domen Vrankar) closed.

New in CMake 3.2.3 (Jun 2, 2015)

  • Fixed issues:
  • 0015546: [CMake] Using MS or Intel compilers fails with MinGW Makefiles generator, worked with CMake 3.0.2 (Brad King) - resolved.
  • 0015552: [CMake] InstallRequiredSystemLibraries needs to learn about VS 2015 (Brad King) - resolved.
  • 0015572: [CMake] Crash when parsing malformed foreach() inside function() (Brad King) - resolved.

New in CMake 3.2.2 (Apr 15, 2015)

  • Fixed issues:
  • file(LOCK): Close file descriptor/handle when releasing a lock
  • FindMFC: Use if(DEFINED) to simplify condition (#15477)
  • curl: Never consider using Windows APIs on Cygwin
  • liblzma: Use unaligned access only on Intel and PowerPC archs
  • liblzma: Disable XL compiler optimizations
  • liblzma: Disable GNU 3.3 compiler optimizations
  • KWSys SystemTools: Teach Touch with !create to succeed on missing file
  • Makefile: Fix multiple custom command outputs with one missing
  • libarchive: Fix string concatentation in Windows mktemp implementation

New in CMake 3.2.1 (Apr 15, 2015)

  • Fixed issues:
  • 0015116: [CMake] cmake add_custom_command issue with multiple output files (Brad King) - resolved.

New in CMake 3.2.0 (Mar 13, 2015)

  • 0015418: [CMake] Wrong encoding for generated .sln (Brad King) - resolved.
  • 0015424: [CMake] Infinite loop in cmsys::SystemTools::CopyFileAlways (Brad King) - resolved.
  • 0012083: [CMake] configure_file is not WARNING about ill-named parameter COPYONLY (Stephen Kelly) - resolved.
  • 0011780: [CMake] CMake cannot building by VC6 with PSDK (Stephen Kelly) - resolved.
  • 0015203: [Modules] CheckStructHasMember breaks on -Wunused-value (Brad King) - resolved.
  • 0015408: [CMake] FindJNI missing JAVA_AWT_LIBRARY on JDK9 as jdk/lib/ is not included in JAVA_AWT_LIBRARY_DIRECTORIES (Brad King) - resolved.
  • 0015403: [CMake] configure_file documentation could be more useful by specifing exactly where the files are generated (Brad King) - resolved.
  • 0015411: Toolset is not updated/loaded correctly in CMake GUI (Brad King) - resolved.
  • 0015324: [CMake] Xcode generator fails to re-configure existing build tree when CMake has moved (Brad King) - resolved.
  • 0014211: [CPack] Default value for CPACK_NSIS_INSTALL_ROOT when installing 64 bit binaries is $PROGRAMFILES (Brad King) - resolved.
  • 0015358: [CMake] Clarify try_compile and try_run documentation (Brad King) - resolved.
  • 0015342: [CMake] [AUTOUI] Simplifiy wrong headers (Stephen Kelly) - resolved.
  • 0015362: [CMake] Target property INTERFACE_SYSTEM_INCLUDE_DIRECTORIES doesn't seem to work (Stephen Kelly) - resolved.
  • 0015253: [CMake] Ninja generator causes build failure for ASM files via NASM - resolved.
  • 0014915: [CMake] cmake should support ninja's "console" pool - resolved.
  • 0014892: [CMake] Ninja: wrong check for link with RSP_FILE (Ben Boeckel) - resolved.
  • 0015368: [CMake] ExternalProject's BUILD_ALWAYS flag doesn't clear any existing build stamp file - resolved.
  • 0015250: [Modules] cmake --find-package ignores multi-arch dir - resolved.
  • 0014066: [CMake] Provided CMAKE_*_LINKER_FLAGS ignored during configuration step (Brad King) - resolved.
  • 0015355: [CMake] cmake 3.1 doesn't know how to select CMAKE_CXX_STANDARD 11 on Mac OS (Stephen Kelly) - resolved.
  • 0013880: [CMake] CMake GUI browser cannot handle Unicode paths (Clinton Stimpson) - resolved.
  • 0012075: [CMake] generated .vcproj with wrong encoding (Clinton Stimpson) - resolved.
  • 0012074: [CMake] "Could not copy from" On Windows 7 (Simplified Chinese) (Clinton Stimpson) - resolved.
  • 0010180: [CMake] CMake won't generate Visual Studio projects with working paths that have Unicode charactors (Clinton Stimpson) - resolved.
  • 0011900: [CMake] CMake fails to copy Visual Studio macro files into folder with non-latin symbols (Clinton Stimpson) - resolved.
  • 0015075: [CMake] Wrong version found when overriding System OpenSSL with custom path (-DCMAKE_PREFIX_PATH=) (Brad King) - resolved.
  • 0015319: [CMake] Documentation clarification (Brad King) - resolved.
  • 0015258: [CMake] 3.0.2-3.1rc2: _IMPORT_PREFIX always used even if absolute paths are in use - thus breaking build (Brad King) - resolved.
  • 0015293: [CMake] find_library does not account for directory modification between calls (Brad King) - resolved.
  • 0015182: [CMake] FindMPI.cmake fails to properly detect Intel MPI 5.0.1 (Chuck Atkins) - resolved.
  • 0015284: [CMake] /wd flags in source COMPILE_FLAGS replace /wd flags from other sources in Visual Studio generator (Brad King) - resolved.
  • 0015201: [CMake] Xcode generator is unusably slow on large projects (Ben Boeckel) - resolved.
  • 0014963: [CMake] Add explicit specification of custom command side effect outputs (Brad King) - resolved.
  • 0015268: [Modules] FindOpenGL.cmake incorrectly depends on X11 on Linux (Brad King) - resolved.
  • 0014769: [CPack] CPackRPM: need CPACK_RPM__PACKAGE__REQUIRES - resolved.
  • 0013176: [CPack] CPackRPM support for per-component summary/description (Domen Vrankar) - resolved.
  • 0015224: [CMake] CMake unconditionally sets WARNING_CFLAGS for each targets overriding project-level option. (Brad King) - resolved.
  • 0015074: [CMake] Qt 5: resources aren't being updated when CMAKE_AUTORCC is used (Stephen Kelly) - resolved.
  • 0015206: [CMake] add_jar() in UseJava.cmake uses wrong classpath seperator when cross-compiling under Windows (Brad King) - resolved.
  • 0015426: Segfault/assertion for invalid/unknown _STANDARD (Brad King) - closed.

New in CMake 3.2.0 RC 2 (Feb 28, 2015)

  • NEW FEATURES:
  • Syntax:
  • CMake learned to support unicode characters encoded as UTF-8 on Windows. This was already supported on platforms whose system APIs accept UTF-8 encoded strings. Unicode characters may now be used in CMake code, paths to source files, configured files such as .h.in files, and other files read and written by CMake. Note that because CMake interoperates with many other tools, there may still be some limitations when using certain unicode characters.
  • Commands:
  • The add_custom_command() and add_custom_target() commands learned a new BYPRODUCTS option to specify files produced as side effects of the custom commands. These are not outputs because they do not always have to be newer than inputs.The add_custom_command() and add_custom_target() commands learned a new USES_TERMINAL option to request that the command be given direct access to the terminal if possible. The Ninja generator will places such commands in the console pool. Build targets provided by CMake that are meant for individual interactive use, such as install, are now placed in this pool.A new continue() command was added that can be called inside loop contexts to end the current iteration and start the next one at the top of the loop block.The file(LOCK) subcommand was created to allow CMake processes to synchronize through file and directory locks.The file(STRINGS) now supports UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE as ENCODING options.The install(EXPORT) command now works with an absolute DESTINATION even if targets in the export set are installed with a destination or usage requirements specified relative to the install prefix. The value of the CMAKE_INSTALL_PREFIX variable is hard-coded into the installed export file as the base for relative references.The try_compile() command source file signature now honors link flags (e.g. CMAKE_EXE_LINKER_FLAGS) in the generated test project. See policy CMP0056.The try_run() command learned to honor the LINK_LIBRARIES option just as try_compile() already does.The file(GENERATE) command now generates the output file with the same permissions as the input file if set.The file(GENERATE) command can now generate files which are used as source files for buildsystem targets. Generated files automatically get their GENERATED property set to TRUE.
  • Variables:
  • The CMAKE_MATCH_COUNT variable was introduced to record the number of matches made in the last regular expression matched in an if() command or a string() command.
  • Properties:
  • An ANDROID_API_MIN target property was introduced to specify the minimum version to be targeted by the toolchain.A VS_SHADER_FLAGS source file property was added to specify additional shader flags to .hlsl files, for the Visual Studio generators.
  • Modules:
  • The ExternalData module learned to support Custom Fetch Scripts. This allows projects to specify custom .cmake scripts for fetching data objects during the build.The ExternalProject module learned options to create independent external project step targets that do not depend on the builtin steps.The ExternalProject module ExternalProject_Add() command learned a new CMAKE_CACHE_DEFAULT_ARGS option to initialize cache values in the external project without setting them on future builds.The ExternalProject module ExternalProject_Add() command learned a new TEST_EXCLUDE_FROM_MAIN option to exclude tests from the main build.The ExternalProject module ExternalProject_Add() command learned a new UPDATE_DISCONNECTED option to avoid automatically updating the source tree checkout from version control.The FindCUDA module learned about the cusolver library in CUDA 7.0.The FindGit module learned to find the git command-line tool that comes with GitHub for Windows installed in user home directories.A FindGSL module was introduced to find the GNU Scientific Library.A FindIntl module was introduced to find the Gettext libintl library.The FindLATEX module learned to support components.The FindMPI module learned to find MS-MPI on Windows.The FindOpenSSL module now reports crypto and ssl libraries separately in OPENSSL_CRYPTO_LIBRARY and OPENSSL_SSL_LIBRARY, respectively, to allow applications to link to one without the other.The WriteCompilerDetectionHeader module learned to create a define for portability of the cxx_thread_local feature. The define expands to either the C++11 thread_local keyword, or a pre-standardization compiler-specific equivalent, as appropriate.The WriteCompilerDetectionHeader module learned to create multiple output files per compiler and per language, instead of creating one large file.
  • CTest:
  • The ctest_coverage() command learned to support Delphi coverage.The ctest_coverage() command learned to support Javascript coverage.The CTestCoverageCollectGCOV module was introduced as an alternative to the ctest_coverage() command for collecting gcov results for submission to CDash.
  • CPack:
  • The CPackRPM module learned options to set per-component descriptions and summaries. See the CPACK_RPM__PACKAGE_DESCRIPTION and CPACK_RPM__PACKAGE_SUMMARY variables.The CPackRPM module learned options to specify requirements for pre- and post-install scripts. See the CPACK_RPM_PACKAGE_REQUIRES_PRE and CPACK_RPM_PACKAGE_REQUIRES_POST variables.The CPackRPM module learned options to specify requirements for pre- and post-uninstall scripts. See the CPACK_RPM_PACKAGE_REQUIRES_PREUN and CPACK_RPM_PACKAGE_REQUIRES_POSTUN variables.The CPackRPM module learned a new CPACK_RPM__PACKAGE_PREFIX variable to specify a component-specific value to use instead of CPACK_PACKAGING_INSTALL_PREFIX.The CPackRPM module learned a new CPACK_RPM_RELOCATION_PATHS variable to specify multiple relocation prefixes for a single rpm package.
  • Other:
  • The cmake(1) -E tar command now supports creating .xz-compressed archives with the J flag.The cmake(1) -E tar command learned a new --files-from= option to specify file names using lines in a file to overcome command-line length limits.The cmake(1) -E tar command learned a new --mtime= option to specify the modification time recorded in tarball entries.The Compile Features functionality is now aware of features supported by more compilers, including: Apple Clang (AppleClang) for Xcode versions 4.4 though 6.1. GNU compiler versions 4.4 through 5.0 on UNIX and Apple (GNU). Microsoft Visual Studio (MSVC) for versions 2010 through 2015. Oracle SolarisStudio (SunPro) version 12.4.The AUTORCC feature now tracks files listed in .qrc files as dependencies. If an input file to the rcc tool is changed, the tool is automatically re-run.
  • NEW DIAGNOSTICS:
  • The break() command now rejects calls outside of a loop context or that pass arguments to the command. See policy CMP0055.
  • DEPRECATED AND REMOVED FEATURES:
  • Files written in the cmake-language(7), such as CMakeLists.txt or *.cmake files, are now expected to be encoded as UTF-8. If files are already ASCII, they will be compatible. If files were in a different encoding, including Latin 1, they will need to be converted.The FindOpenGL module no longer explicitly searches for any dependency on X11 libraries with the FindX11 module. Such dependencies should not need to be explicit. Applications using X11 APIs themselves should find and link to X11 libraries explicitly.The implementation of CMake now relies on some C++ compiler features which are not supported by some older compilers. As a result, those old compilers can no longer be used to build CMake itself. CMake continues to be able to generate Makefiles and project files for users of those old compilers however. Compilers known to no longer be capable of building CMake are: Visual Studio 6 and 7.0 – superseded by VisualStudio 7.1 and newer. GCC 2.95 – superseded by GCC 3 and newer compilers. Borland compilers – superseded by other Windows compilers. Compaq compilers – superseded by other compilers. SGI compilers – IRIX was dropped as a host platform.
  • OTHER CHANGES:
  • On Windows and OS X, commands supporting network communication via https, such as file(DOWNLOAD), file(UPLOAD), and ctest_submit(), now support SSL/TLS even when CMake is not built against OpenSSL. The Windows or OS X native SSL/TLS implementation is used by default. OS-configured certificate authorities will be trusted automatically.
  • On other platforms, when CMake is built with OpenSSL, these commands now search for OS-configured certificate authorities in a few /etc paths to be trusted automatically.
  • On OS X with Makefile and Ninja generators, when a compiler is found in /usr/bin it is now mapped to the corresponding compiler inside the Xcode application folder, if any. This allows such build trees to continue to work with their original compiler even when xcode-select switches to a different Xcode installation.
  • The Visual Studio generators now write solution and project files in UTF-8 instead of Windows-1252. Windows-1252 supported Latin 1 languages such as those found in North and South America and Western Europe. With UTF-8, additional languages are now supported.
  • The Xcode generator no longer requires a value for the CMAKE_MAKE_PROGRAM variable to be located up front. It now locates xcodebuild when needed at build time.
  • When building CMake itself using SolarisStudio 12, the default libCStd standard library is not sufficient to build CMake. The SolarisStudio distribution supports compiler options to use STLPort4 or libstdc++. An appropriate option to select the standard library is now added automatically when building CMake with SolarisStudio compilers.

New in CMake 3.1.3 (Feb 16, 2015)

  • 0015324: [CMake] Xcode generator fails to re-configure existing build tree when CMake has moved (Brad King) resolved.
  • 0014211: [CPack] Default value for CPACK_NSIS_INSTALL_ROOT when installing 64 bit binaries is $PROGRAMFILES (Brad King) resolved.
  • 0015358: [CMake] Clarify try_compile and try_run documentation (Brad King) resolved.
  • 0015342: [CMake] [AUTOUI] Simplifiy wrong headers (Stephen Kelly) resolved.
  • 0015362: [CMake] Target property INTERFACE_SYSTEM_INCLUDE_DIRECTORIES doesn't seem to work (Stephen Kelly) resolved.
  • 0015253: [CMake] Ninja generator causes build failure for ASM files via NASM resolved.
  • 0014915: [CMake] cmake should support ninja's "console" pool resolved.
  • 0014892: [CMake] Ninja: wrong check for link with RSP_FILE (Ben Boeckel) resolved.
  • 0015368: [CMake] ExternalProject's BUILD_ALWAYS flag doesn't clear any existing build stamp file resolved.
  • 0015116: [CMake] cmake add_custom_command issue with multiple output files (Brad King) resolved.
  • 0015250: [Modules] cmake --find-package ignores multi-arch dir resolved.
  • 0014066: [CMake] Provided CMAKE_*_LINKER_FLAGS ignored during configuration step (Brad King) resolved.
  • 0015355: [CMake] cmake 3.1 doesn't know how to select CMAKE_CXX_STANDARD 11 on Mac OS (Stephen Kelly) resolved.
  • 0013880: [CMake] CMake GUI browser cannot handle Unicode paths (Clinton Stimpson) resolved.
  • 0012075: [CMake] generated .vcproj with wrong encoding (Clinton Stimpson) resolved.
  • 0012074: [CMake] "Could not copy from" On Windows 7 (Simplified Chinese) (Clinton Stimpson) resolved.
  • 0010180: [CMake] CMake won't generate Visual Studio projects with working paths that have Unicode charactors (Clinton Stimpson) resolved.
  • 0011900: [CMake] CMake fails to copy Visual Studio macro files into folder with non-latin symbols (Clinton Stimpson) resolved.
  • 0015075: [CMake] Wrong version found when overriding System OpenSSL with custom path (-DCMAKE_PREFIX_PATH=) (Brad King) resolved.
  • 0015319: [CMake] Documentation clarification (Brad King) resolved.
  • 0015258: [CMake] 3.0.2-3.1rc2: _IMPORT_PREFIX always used even if absolute paths are in use thus breaking build (Brad King) resolved.
  • 0015293: [CMake] find_library does not account for directory modification between calls (Brad King) resolved.
  • 0015182: [CMake] FindMPI.cmake fails to properly detect Intel MPI 5.0.1 (Chuck Atkins) resolved.
  • 0015284: [CMake] /wd flags in source COMPILE_FLAGS replace /wd flags from other sources in Visual Studio generator (Brad King) resolved.
  • 0015201: [CMake] Xcode generator is unusably slow on large projects (Ben Boeckel) resolved.
  • 0014963: [CMake] Add explicit specification of custom command side effect outputs (Brad King) resolved.
  • 0015268: [Modules] FindOpenGL.cmake incorrectly depends on X11 on Linux (Brad King) resolved.
  • 0014769: [CPack] CPackRPM: need CPACK_RPM__PACKAGE__REQUIRES resolved.
  • 0013176: [CPack] CPackRPM support for per-component summary/description (Domen Vrankar) resolved.
  • 0015224: [CMake] CMake unconditionally sets WARNING_CFLAGS for each targets overriding project-level option. (Brad King) resolved.
  • 0015074: [CMake] Qt 5: resources aren't being updated when CMAKE_AUTORCC is used (Stephen Kelly) resolved.
  • 0015206: [CMake] add_jar() in UseJava.cmake uses wrong classpath seperator when cross-compiling under Windows (Brad King) resolved.

New in CMake 3.1.2 (Feb 6, 2015)

  • 0015386: [Modules] FindOpenSSL.cmake fails to find new version (1.0.2) of OpenSSL (Rolf Eike Beer) - resolved.
  • 0015367: [CMake] cmake crash in GetNumberOfFilesInDirectory (Brad King) - resolved.
  • 0015366: [CMake] set_source_files_properties OBJECT_DEPENDS broken after normalization (Brad King) - resolved.
  • 0015379: [CTest] [PATCH] CTest does not recognize recent gmake's messages as errors (Brad King) - resolved.
  • 0015385: [CMake] CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT is set to CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT (Brad King) - resolved.

New in CMake 3.1.1 (Jan 23, 2015)

  • Eclipse: Add org.eclipse.cdt.core.cnature to CXX projects (#15068)
  • get_test_property: clarify the documentation
  • set_tests_properties: fix documentation
  • tests: add tests for querying properties
  • Xcode: Sort targets deterministically and with ALL_BUILD first (#15346)
  • bootstrap: Fix syntax for Solaris 10 shell (#15317)
  • Help: Clarify MinGW v. MSYS Makefiles generators (#15319)
  • Ninja: Do not crash when CMAKE__COMPILE_OBJECT is empty (#15325)
  • Ninja: Generate rules only for languages compiled in a target (#15325)
  • Tests: Test using objects from a language enabled in a subdirectory (#15325)
  • Help: Add 3.1 release note about '#' escaping in Makefiles (#15322)
  • Help: Clarify if() documentation (#15335)
  • Help: Document CMAKE_FIND_PACKAGE_NAME variable
  • Xcode: Do not require code signing for compiler id (#15214)
  • Copyright.txt: Update year range to end in 2015
  • XL: Fix link flags for executables on Linux with XL compilers
  • QNX: Fix detection of QCC compiler id (#15349)
  • Xcode: Fix early termination on per-config source file error
  • CMake 3.1.1
  • CPack: Fix PackageMaker internal versioning for OS X 10.10
  • Fix compilation with the Oracle / Sun compiler (#15318)
  • Help: Small fixes in CPackComponent documentation
  • FindRuby: fix selection of version x.0 (#15345)
  • CPack: Avoid crash on invalid CMake generator name (#15308)
  • FindRuby: Fix output check in _RUBY_CONFIG_VAR
  • find_package: Document CMAKE_FIND_PACKAGE_NAME variable
  • QtAutoUic: Restore source file AUTOUIC_OPTIONS settings
  • FindCUDA: Do not assume CMAKE_SYSTEM_PROCESSOR is set
  • cmake-mode.el: Fix extracting keyword at point in cmake-help
  • cmake-mode.el: Re-add explicit call to require thingatpt
  • FindIce: Port to work with CMP0054 NEW behavior
  • FindSDL: Allow if() to dereference SDL_INCLUDE_DIR for matching
  • FindQt: fix setting DESIRED_QT_VERSION if "find_package(Qt VVV)" was called
  • FindQt: fix variable name in error message
  • FindQt: explicitly mention that it cannot Qt5 or later
  • FindBoost: Add latest Boost version 1.57.0 and next milestone 1.58.0
  • KWSys Terminal: Add xterm-termite to VT100 color support whitelist
  • Help: Document valid 14 value for CXX_STANDARD. (#15339)
  • get_target_property: discern empty from undefined properties (#15333)
  • QtAutoUic: Add a test for the regression in the parent commit.
  • cmMakefile: Rename a method to what it really does.
  • Features: Fix the COMPILE_FEATURES genex for unavailable features.
  • cmTarget: Compute link language of TARGET_OBJECTS with CMP0026 OLD (#15338)
  • Help: Link relevant documents for virtual override features (#15311)
  • Help: Add INTERFACE_LIBRARY to TYPE target property documentation
  • Help: Update cmake.org links to avoid redirects

New in CMake 3.1.0 (Dec 29, 2014)

  • Fixed issues:
  • 0015011: problem to find non-standard ncurses.h location (Brad King) resolved.
  • 0015070: [CMake] CMake doesn't escape # properly in add_compile_options with Makefile generator (Brad King) resolved.
  • 0015214: [CMake] Error getting iOS compiler identification on master (Brad King) resolved.
  • 0015275: [Modules] Duplicated lines in FindPythonInterp.cmake (Rolf Eike Beer) resolved.
  • 0015276: [CMake] Document NVIDIA Nsight Tegra configuration settings (Brad King) resolved.
  • 0010194: [CMake] setting CMAKE_RC_FLAGS has no affect on rc flags resolved.
  • 0015228: [CMake] Compiler identification fails with -DCMAKE_SYSTEM_NAME=WindowsStore (Gilles Khouzam) resolved.
  • 0015261: regex match when not matched do not clear cmake_match_0 and 1 var (Ben Boeckel) resolved.
  • 0015259: [CMake] Source file properties are lost, if the name of the file is not specified case sensitive. (Brad King) resolved.
  • 0015266: [Documentation] GET_PROPERTY and SET_PROPERTY need update for installed file properties (Brad King) resolved.
  • 0015248: [CMakeSetup] When cross compiling, "make install" invokes target "cmake" instead of host version (Brad King) resolved.
  • 0015246: [CMake] Make GNUInstallDirs more discoverable in the documentation (Brad King) resolved.
  • 0015237: [CMake] No CMAKE_C_COMPILER could be found (3.1.0-rc1 regression) (Brad King) resolved.
  • 0015225: [CMake] Clarify add_compile_options command documentation (Brad King) resolved.
  • 0015220: [Modules] Find_package(Curses) failed for QNX 6.5 and QNX 6.6 (Brad King) resolved.
  • 0014864: [Modules] CheckTypeSize changes CMAKE_MINIMUM_REQUIRED_VERSION (Daniele E. Domenichelli) resolved.
  • 0015215: [Documentation] Please document CMAKE_XCODE_ATTRIBUTE_* (Brad King) resolved.
  • 0014972: [CMake] Ninja gen generates invalid phony dependencies for source files with in-source build (Brad King) resolved.
  • 0015198: [CMake] ps2pdf not detected when cross-compiling (Brad King) resolved.
  • 0014049: [Modules] FindThreads.cmake: several small bugs (Rolf Eike Beer) resolved.
  • 0015135: [CPack] Allow properties on installed directories (Nils Gladitz) resolved.
  • 0013794: [CMake] find_package(PythonLibs) finds different version of Python headers and libraries (Matt McCormick) resolved.
  • 0008170: [CMake] Visual Studio 9 generator does not output Custom Build Tool command line for assembler sources resolved.
  • 0015175: [CMake] Add support for Intel Fortran 15.0 Visual Studio (Brad King) resolved.
  • 0015176: [Modules] typo in Modules/GNUInstallDirs.cmake (Rolf Eike Beer) resolved.
  • 0015165: [CPack] WiX : Remember the INSTALL_ROOT directory for upgrades (Nils Gladitz) resolved.
  • 0014981: [CMake] AUTOUIC not generating all needed ui_xxx.h files (Stephen Kelly) resolved.
  • 0015155: [CMake] enable_language reports failure to find a module, but not which one (Brad King) resolved.
  • 0015162: [CMake] FindGettext.cmake documentation issue (Brad King) resolved.
  • 0015161: [CMake] FindProtobuf: Generated source not regenerated on library update (Brad King) resolved.
  • 0015156: [CMake] Sometime, CMake can't find clang/clang++ resolved.
  • 0008226: [CMake] if expansion of quoted arguments as variables should be deprecated (Bill Hoffman) resolved.
  • 0015115: [CMake] WindowsCE: /SUBSYSTEM and /ENTRYPOINT does not end up in the generated Visual Studio project (Brad King) resolved.
  • 0010080: [Modules] UseSWIG rebuilds source even when the the dependencies have not changed (jschueller) resolved.
  • 0013511: [CMake] Add support for WinRT platforms and "metro" apps (Brad King) resolved.
  • 0013791: [CMake] CMake does not support generating projects for Windows Phone 8. (Brad King) resolved.
  • 0013429: [CMake] Symlinked lib directories confuse cmake (Brad King) resolved.
  • 0015112: [CMake] add_custom_command: Clarify documented relationship of multiple COMMANDs (Brad King) resolved.
  • 0015149: [Documentation] Document that the CHECK_* macros create cache variables (Brad King) resolved.
  • 0015147: [Modules] CMAKE_HOST_SYSTEM_PROCESSOR not detected on GNU/Hurd (Brad King) resolved.
  • 0015101: [CMake] Imported libraries go out of scope after call to target_link_libraries(). resolved.
  • 0015125: [CMake] XCode generator cannot add assetcatalog assets (Brad King) resolved.
  • 0015117: InstallRequiredSystemLibraries does not install OpenMP library on MSVC (Brad King) resolved.
  • 0015100: [CCMake] /ZWcompiler flag to disable CompileAsWinRT property in Visual Studio project (Brad King) resolved.
  • 0014924: [CPack] Setting file permissions for the cpack WiX generator through install properties (Nils Gladitz) resolved.
  • 0015108: [CMake] Platform information override files are not loaded for assembler. (Brad King) resolved.
  • 0014656: [Modules] FindOpenMP does not return Fortran flags (Brad King) resolved.
  • 0015096: [CMake] Incorrect compiler flag not detected for Intel (Brad King) resolved.
  • 0015081: [CMake] ExternalProject: Clarify SVN_REVISION usage in documentation (Brad King) resolved.
  • 0014347: [Modules] FindMPI sets MPIEXEC to wrong executable (Brad King) resolved.
  • 0015066: [CTest] MSVC level 3 warning in test code (Brad King) resolved.
  • 0015059: [CMake] Clarify documentation of CMake custom build step PRE_LINK/PRE_BUILD (Brad King) resolved.
  • 0015060: [Documentation] "This is not security software." too sloppy (Brad King) resolved.
  • 0010519: [CMake] FILE(STRINGS) does not work correctly for UTF8 encoded strings (Clinton Stimpson) resolved.
  • 0015058: [Modules] CheckIncludeFiles uses old-style function definition (Brad King) resolved.
  • 0013761: [CMake] Add QUIET option to install() command (Brad King) resolved.
  • 0015034: [CMake] target_link_libraries: clarify documented treatment of link flags (Brad King) resolved.
  • 0014923: [Modules] check_cxx_compiler_flag fails when variable name contains "++" resolved.
  • 0015031: [CMake] visual studio 2012 generator ampersand escaping (Brad King) resolved.
  • 0015051: [CMake] Detect more fujitsu compiler warnings resolved.
  • 0013515: [CMake] ExternalProject doesn’t handle .tar.xz resolved.
  • 0014504: [CMake] libarchive supports 7-Zip, Add 7-Zip support to cmake resolved.
  • 0014519: [CMake] 7z ( LZMA and LZMA2) support for cpack resolved.
  • 0013072: [CPack] Allow CPack to generate tar.xz archives resolved.
  • 0014294: [CMake] Specifying CMAKE_CXX_COMPILER=g++ after first run deletes all cached values (Brad King) resolved.
  • 0015040: [CMake] CMake needs to support building against "/" on OS X with a deployment target set (Brad King) resolved.
  • 0014751: [CMake] Generalize LINK_ONLY (Brad King) resolved.
  • 0015026: [CMake] Build fails with Cray compiler on Linux resolved.
  • 0015006: [CMake] AUTORCC doesn't work with OBJECT library (Brad King) resolved.
  • 0014012: [Modules] FindImageMagick.cmake needs update for ImageMagick >= 6.8.0-8, perhaps use pkgconfig (Brad King) resolved.
  • 0014728: [CMake] [CMake/Ninja] add_dependencies() to objlib's user is ignored. (Ben Boeckel) resolved.
  • 0015000: [Modules] CMakeFindBinUtils always search for install_name_tool even when cross compiling on OSX (Brad King) resolved.
  • 0014982: [CMake] VS14 VS2014 Support (Brad King) resolved.
  • 0014874: [CMake] Static library can miss some object files (Brad King) resolved.
  • 0014993: [CTest] ctest doesn't manage correctly the -LE and -L flags (Nils Gladitz) resolved.
  • 0014973: [CMake] [RFE] Produce shorted output for cmake/ccmake when no arguments specified (Brad King) resolved.
  • 0014966: [CMake] cmake succeeds evaluating a script that is a directory (Brad King) resolved.
  • 0014934: archive_write_header: Can't translate pathname 'bin/教學程式' to UTF-8 resolved.
  • 0014849: [CMake] Need a way to disable CMake package registry (Daniele E. Domenichelli) closed.
  • 0014832: [Modules] findboost.cmake can't find boost::graph_parallel library (Ben Boeckel) closed.
  • 0012300: [CMake] CMake has no cross-platform way to ask for C99 (Stephen Kelly) closed.
  • 0014899: [CMake] $ with add_custom_target does not work (Stephen Kelly) closed.
  • 0014927: [CMake] Visual Studio 7-9 generators case bools incorrectly (Brad King) closed.
  • 0013842: [CMake] No Support for C++11 (Stephen Kelly) closed.
  • 0014854: [CMake] Xcode projects with binary files cannot load in Xcode (Brad King) closed.
  • 0014911: [CPack] What options do I have to set the NeverOverwrite and Permanent attributes for Components that install files from CPack? (Nils Gladitz) closed.
  • 0012926: [Modules] FindPkgConfig module doesn't honor CMAKE_PREFIX_PATH. (Daniele E. Domenichelli) closed.
  • 0014913: [Modules] GTEST_ADD_TESTS doesn't use new signature ADD_TEST(NAME name COMMAND command): generated executable is then not found (Rolf Eike Beer) closed.
  • 0014889: [CPack] Cpack crashes when issuing a bad Wix Patch (Nils Gladitz) closed.
  • 0014855: [CMake] Unpacking Qt 5.2.1 source distribution fails (ExternalProject_Add) (Brad King) closed.
  • 0014866: [CMake] CMake's ENABLE_ACL option does not stop CMake looking for libacl.h (Brad King) closed.
  • 0014592: [CMake] RunCMake.include_directories (SourceDirectoryInInterface & BinaryDirectoryInInterface) tests fail. (Stephen Kelly) closed.
  • 0014858: [CMake] Flags specified for the compiler do not stay together during processing. (Brad King) closed.
  • 0013360: [Modules] Java add_jar() doesn't copy resources to build directory when make is run for the first time closed.
  • 0014056: [Modules] CheckTypeSize does not work if C language is not enabled (Daniele E. Domenichelli) closed.
  • 0014381: [CMake] Inconsistent behaviour between find_package and pkg_check_modules (Brad King) closed.
  • 0014807: [CMake] file(DOWNLOAD) progress goes wild (Brad King) closed.
  • 0014814: [CMake] CMake 2.8.12.2 cannot be built on HP-UX 11.11 (hppa) (Brad King) closed.
  • 0014799: [CMake] typo in comment, Source/cmELF.cxx (Brad King) closed.
  • 0014804: [QtDialog] Crash in QCMake.cxx (Brad King) closed.
  • 0013175: [CMake] FindPkgConfig.cmake should respect environment variable PKG_CONFIG just like autotools do closed.
  • 0014775: [Modules] GTEST_ADD_TESTS from FindGTest may find sources automatically (Brad King) closed.
  • 0014777: [CMake] OBJECT libraries cause Fortran to relink each time (Brad King) closed.
  • 0014746: [CMake] --graphviz generates many files (Brad King) closed.
  • 0014763: [CMake] Add target properties to specify MS compiler PDB files (Brad King) closed.

New in CMake 3.1.0 RC 3 (Dec 11, 2014)

  • Fixed issues:
  • 0015275: [Modules] Duplicated lines in FindPythonInterp.cmake (Rolf Eike Beer)
  • 0015070: [CMake] CMake doesn't escape # properly in add_compile_options with Makefile generator (Brad King)
  • 0015276: [CMake] Document NVIDIA Nsight Tegra configuration settings (Brad King)
  • 0010194: [CMake] setting CMAKE_RC_FLAGS has no affect on rc flags
  • 0015228: [CMake] Compiler identification fails with -DCMAKE_SYSTEM_NAME=WindowsStore (Gilles Khouzam)
  • 0015261: regex match when not matched do not clear cmake_match_0 and 1 var (Ben Boeckel)
  • 0015259: [CMake] Source file properties are lost, if the name of the file is not specified case sensitive. (Brad King)
  • 0015266: [Documentation] GET_PROPERTY and SET_PROPERTY need update for installed file properties (Brad King)
  • 0015248: [CMakeSetup] When cross compiling, "make install" invokes target "cmake" instead of host version (Brad King)
  • 0015246: [CMake] Make GNUInstallDirs more discoverable in the documentation (Brad King)
  • 0015237: [CMake] No CMAKE_C_COMPILER could be found (3.1.0-rc1 regression) (Brad King)
  • 0015214: [CMake] Error getting iOS compiler identification on master (Brad King)
  • 0015225: [CMake] Clarify add_compile_options command documentation (Brad King)
  • 0015220: [Modules] Find_package(Curses) failed for QNX 6.5 and QNX 6.6 (Brad King)
  • 0014864: [Modules] CheckTypeSize changes CMAKE_MINIMUM_REQUIRED_VERSION (Daniele E. Domenichelli)
  • 0015215: [Documentation] Please document CMAKE_XCODE_ATTRIBUTE_* (Brad King)
  • 0014972: [CMake] Ninja gen generates invalid phony dependencies for source files with in-source build (Brad King)
  • 0015198: [CMake] ps2pdf not detected when cross-compiling (Brad King)
  • 0014049: [Modules] FindThreads.cmake: several small bugs (Rolf Eike Beer)
  • 0015135: [CPack] Allow properties on installed directories (Nils Gladitz)
  • 0013794: [CMake] find_package(PythonLibs) finds different version of Python headers and libraries (Matt McCormick)
  • 0008170: [CMake] Visual Studio 9 generator does not output Custom Build Tool command line for assembler sources
  • 0015175: [CMake] Add support for Intel Fortran 15.0 Visual Studio (Brad King)
  • 0015176: [Modules] typo in Modules/GNUInstallDirs.cmake (Rolf Eike Beer)
  • 0015165: [CPack] WiX : Remember the INSTALL_ROOT directory for upgrades (Nils Gladitz)
  • 0014981: [CMake] AUTOUIC not generating all needed ui_xxx.h files (Stephen Kelly)
  • 0015155: [CMake] enable_language reports failure to find a module, but not which one (Brad King)
  • 0015162: [CMake] FindGettext.cmake documentation issue (Brad King)
  • 0015161: [CMake] FindProtobuf: Generated source not regenerated on library update (Brad King)
  • 0015156: [CMake] Sometime, CMake can't find clang/clang++
  • 0008226: [CMake] if expansion of quoted arguments as variables should be deprecated (Bill Hoffman)
  • 0015115: [CMake] WindowsCE: /SUBSYSTEM and /ENTRYPOINT does not end up in the generated Visual Studio project (Brad King)
  • 0010080: [Modules] UseSWIG rebuilds source even when the the dependencies have not changed (jschueller)
  • 0013511: [CMake] Add support for WinRT platforms and "metro" apps (Brad King)
  • 0013791: [CMake] CMake does not support generating projects for Windows Phone 8. (Brad King)
  • 0013429: [CMake] Symlinked lib directories confuse cmake (Brad King)
  • 0015112: [CMake] add_custom_command: Clarify documented relationship of multiple COMMANDs (Brad King)
  • 0015149: [Documentation] Document that the CHECK_* macros create cache variables (Brad King)
  • 0015147: [Modules] CMAKE_HOST_SYSTEM_PROCESSOR not detected on GNU/Hurd (Brad King)
  • 0015101: [CMake] Imported libraries go out of scope after call to target_link_libraries().
  • 0015125: [CMake] XCode generator cannot add assetcatalog assets (Brad King)
  • 0015117: InstallRequiredSystemLibraries does not install OpenMP library on MSVC (Brad King)
  • 0015100: [CCMake] /ZWcompiler flag to disable CompileAsWinRT property in Visual Studio project (Brad King)
  • 0014924: [CPack] Setting file permissions for the cpack WiX generator through install properties (Nils Gladitz)
  • 0015108: [CMake] Platform information override files are not loaded for assembler. (Brad King)
  • 0014656: [Modules] FindOpenMP does not return Fortran flags (Brad King)
  • 0015096: [CMake] Incorrect compiler flag not detected for Intel (Brad King)
  • 0015081: [CMake] ExternalProject: Clarify SVN_REVISION usage in documentation (Brad King)
  • 0014347: [Modules] FindMPI sets MPIEXEC to wrong executable (Brad King)
  • 0015066: [CTest] MSVC level 3 warning in test code (Brad King)
  • 0015059: [CMake] Clarify documentation of CMake custom build step PRE_LINK/PRE_BUILD (Brad King)
  • 0015060: [Documentation] "This is not security software." too sloppy (Brad King)
  • 0010519: [CMake] FILE(STRINGS) does not work correctly for UTF8 encoded strings (Clinton Stimpson)
  • 0015058: [Modules] CheckIncludeFiles uses old-style function definition (Brad King)
  • 0013761: [CMake] Add QUIET option to install() command (Brad King)
  • 0015034: [CMake] target_link_libraries: clarify documented treatment of link flags (Brad King)
  • 0014923: [Modules] check_cxx_compiler_flag fails when variable name contains "++"
  • 0015031: [CMake] visual studio 2012 generator ampersand escaping (Brad King)
  • 0015051: [CMake] Detect more fujitsu compiler warnings
  • 0013515: [CMake] ExternalProject doesn’t handle .tar.xz
  • 0014504: [CMake] libarchive supports 7-Zip, Add 7-Zip support to cmake
  • 0014519: [CMake] 7z ( LZMA and LZMA2) support for cpack
  • 0013072: [CPack] Allow CPack to generate tar.xz archives
  • 0014294: [CMake] Specifying CMAKE_CXX_COMPILER=g++ after first run deletes all cached values (Brad King)
  • 0015040: [CMake] CMake needs to support building against "/" on OS X with a deployment target set (Brad King)
  • 0014751: [CMake] Generalize LINK_ONLY (Brad King)
  • 0015026: [CMake] Build fails with Cray compiler on Linux
  • 0015011: problem to find non-standard ncurses.h location (Brad King)
  • 0015006: [CMake] AUTORCC doesn't work with OBJECT library (Brad King)
  • 0014012: [Modules] FindImageMagick.cmake needs update for ImageMagick >= 6.8.0-8, perhaps use pkgconfig (Brad King)
  • 0014728: [CMake] [CMake/Ninja] add_dependencies() to objlib's user is ignored. (Ben Boeckel)
  • 0015000: [Modules] CMakeFindBinUtils always search for install_name_tool even when cross compiling on OSX (Brad King)
  • 0014982: [CMake] VS14 VS2014 Support (Brad King)
  • 0014874: [CMake] Static library can miss some object files (Brad King)
  • 0014993: [CTest] ctest doesn't manage correctly the -LE and -L flags (Nils Gladitz)
  • 0014973: [CMake] [RFE] Produce shorted output for cmake/ccmake when no arguments specified (Brad King)
  • 0014966: [CMake] cmake succeeds evaluating a script that is a directory (Brad King)
  • 0014934: archive_write_header: Can't translate pathname 'bin/教學程式' to UTF-8
  • 0012300: [CMake] CMake has no cross-platform way to ask for C99 (Stephen Kelly) closed.
  • 0014899: [CMake] $ with add_custom_target does not work (Stephen Kelly) closed.
  • 0014927: [CMake] Visual Studio 7-9 generators case bools incorrectly (Brad King) closed.
  • 0013842: [CMake] No Support for C++11 (Stephen Kelly) closed.
  • 0014854: [CMake] Xcode projects with binary files cannot load in Xcode (Brad King) closed.
  • 0014911: [CPack] What options do I have to set the NeverOverwrite and Permanent attributes for Components that install files from CPack? (Nils Gladitz) closed.
  • 0012926: [Modules] FindPkgConfig module doesn't honor CMAKE_PREFIX_PATH. (Daniele E. Domenichelli) closed.
  • 0014849: [CMake] Need a way to disable CMake package registry (Daniele E. Domenichelli) closed.
  • 0014913: [Modules] GTEST_ADD_TESTS doesn't use new signature ADD_TEST(NAME name COMMAND command): generated executable is then not found (Rolf Eike Beer) closed.
  • 0014889: [CPack] Cpack crashes when issuing a bad Wix Patch (Nils Gladitz) closed.
  • 0014855: [CMake] Unpacking Qt 5.2.1 source distribution fails (ExternalProject_Add) (Brad King) closed.
  • 0014866: [CMake] CMake's ENABLE_ACL option does not stop CMake looking for libacl.h (Brad King) closed.
  • 0014592: [CMake] RunCMake.include_directories (SourceDirectoryInInterface & BinaryDirectoryInInterface) tests fail. (Stephen Kelly) closed.
  • 0014858: [CMake] Flags specified for the compiler do not stay together during processing. (Brad King) closed.
  • 0013360: [Modules] Java add_jar() doesn't copy resources to build directory when make is run for the first time closed.
  • 0014056: [Modules] CheckTypeSize does not work if C language is not enabled (Daniele E. Domenichelli) closed.
  • 0014381: [CMake] Inconsistent behaviour between find_package and pkg_check_modules (Brad King) closed.
  • 0014807: [CMake] file(DOWNLOAD) progress goes wild (Brad King) closed.
  • 0014814: [CMake] CMake 2.8.12.2 cannot be built on HP-UX 11.11 (hppa) (Brad King) closed.
  • 0014799: [CMake] typo in comment, Source/cmELF.cxx (Brad King) closed.
  • 0014804: [QtDialog] Crash in QCMake.cxx (Brad King) closed.
  • 0013175: [CMake] FindPkgConfig.cmake should respect environment variable PKG_CONFIG just like autotools do closed.
  • 0014775: [Modules] GTEST_ADD_TESTS from FindGTest may find sources automatically (Brad King) closed.
  • 0014777: [CMake] OBJECT libraries cause Fortran to relink each time (Brad King) closed.
  • 0014746: [CMake] --graphviz generates many files (Brad King) closed.
  • 0014763: [CMake] Add target properties to specify MS compiler PDB files (Brad King) closed.

New in CMake 3.0.2 (Sep 12, 2014)

  • 0015111: [CMake] “File reference” warnings when building a CMake project with Xcode 6 (Brad King) resolved.
  • 0014981: [CMake] AUTOUIC not generating all needed ui_xxx.h files (Stephen Kelly) resolved.
  • 0015103: [CMake] AUTORCC fails with more than one .qrc file per target (Stephen Kelly) resolved.
  • 0015092: [CMake] COMMAND cannot parse shell [] (Brad King) resolved.
  • 0015069: Add support for OpenRISC 1000 (or1k) (Brad King) resolved.

New in CMake 3.0.1 (Sep 12, 2014)

  • 0015048: [CMake] Semicolon in AIX compiler warning FAIL_REFEX causes it to match other output (Brad King) resolved.
  • 0015038: Linking $ into a static library is broken with Xcode 6 (Brad King) resolved.
  • 0015028: [CMake] CMake build error on QNX (Brad King) resolved.
  • 0015008: [CMake] Fix CMakeExpandImportedTargets to avoid Error on non-existent target in get_target_property. (Brad King) resolved.
  • 0014989: [CMake] cannot build targets 'test' or 'package' after bootstrapping (Brad King) resolved.
  • 0014990: [CMake] UseSWIG.cmake use wrong filenames for Python (Brad King) resolved.
  • 0014975: [CMake] Fortran modules for GNU fortran are not correctly identified (Brad King) resolved.

New in CMake 3.0 (Sep 12, 2014)

  • Fixed issues:
  • 0014386: [CMake] Broken build (proposing fix) resolved.
  • 0014027: [Modules] CMake fails build on HPUX with standard HP C and make resolved.
  • 0014246: [CTest] ctest --help-variable-list fails to display CTEST* variables (Brad King) resolved.
  • 0014946: [CMake] Document build v. install values for INTERFACE_INCLUDE_DIRECTORIES (Brad King) resolved.
  • 0014936: [CMake] CMAKE_GNUtoMS_VCVARS is not set when using Visual Studio 12 2013 and CMakeAddFortranSubdirectory (Brad King) resolved.
  • 0014918: [CMake] x64 build under cygwin fails (Brad King) resolved.
  • 0014928: [CMake] cmake -E create_symlink always returns code 0 even when failing to create symlink resolved.
  • 0014916: [CMake] Info.plist is stored in the wrong directory when creating bundles in subdirectories resolved.
  • 0014908: [CMake] CMAKE_OSX_SYSROOT being ignored with frameworks in /Library/Frameworks resolved.
  • 0014856: [CMake] cannot build cmake on Solaris (Brad King) resolved.
  • 0014903: [Modules] InstallRequiredSystemLibraries CMAKE_INSTALL_MFC_LIBRARIES does not work with MSVC 2013 (Brad King) resolved.
  • 0014894: [CMake] Regression/Qt: cmake touches on each run moc_*.cxx_parameters (Peter Kuemmel) resolved.
  • 0014901: [CMake] Adding an .xib to an XCode project does not work. resolved.
  • 0014887: [CMake] CMake fails to compile error: use of undeclared identifier 'abi' (Brad King) resolved.
  • 0014886: [Documentation] [PATCH] Make documentation generation python3 compatible. (Brad King) resolved.
  • 0014882: [CPack] cmake: strlen(): cpack killed by SIGSEGV (Brad King) resolved.
  • 0014875: [Modules] /lib64 wrongfully appears in RPATH (Brad King) resolved.
  • 0014870: [CMake] FindMPI.cmake returns 32-bit libraries on 64-bit systems for Fortran-only projects (Brad King) resolved.
  • 0014099: [CMake] Ninja: CMAKE_${LANG}_FLAGS passed to linker come from incorrect scope (Peter Kuemmel) resolved.
  • 0014184: [CMake] link_directories produce backslash path for mingw (Peter Kuemmel) resolved.
  • 0014865: [CMake] CMakeDetermineRCCompiler does not detect windres from "i686-w64-mingw32.shared-windres" (Brad King) resolved.
  • 0014089: [CMake] add_test/add_custom_command: Support generator expressions in WORKING_DIRECTORY (Ben Boeckel) resolved.
  • 0014339: [Modules] CheckCXXCompilerFlag seems to have problems with XL and BCC (Rolf Eike Beer) resolved.
  • 0014739: [Modules] findboost.cmake can't find boost::mpi library (Brad King) resolved.
  • 0014808: [CMake] Policy CMP0026 set OLD not working for _LOCATION (Stephen Kelly) resolved.
  • 0014790: [CMake] CMake crashes with XCode generator (Brad King) resolved.
  • 0014806: [CMake] cmake does not detect correct intel c/c++ compiler version (Brad King) resolved.
  • 0013251: [CMake] cmake -E tar fails to extract some files correctly (Brad King) resolved.
  • 0014798: [CMake] CMake fails to build correctly from source on FreeBSD... resolved.
  • 0014784: Seg fault with wrong number of args for check-build-system (Brad King) resolved.
  • 0014393: [Modules] FindwxWidgets.cmake doesn't look for x64 wxWidgets (MSVC) directories. (Brad King) resolved.
  • 0014577: [CMake] Need to map /Fd to ProgramDataBaseFileName in VS 7,8,9 (Brad King) resolved.
  • 0014774: [Modules] FindFreetype cannot find version 2.5 resolved.
  • 0014600: [CMake] Document PDB behavior w.r.t. static libraries (Brad King) resolved.
  • 0014755: [CMake] Cannot use VisualStudio 2013 Express with Windows7.1SDK for 64Bit builds resolved.
  • 0014735: [CMake] FindOpenSSL.cmake does not honor the OPENSSL_ROOT_DIR variable for non Windows platforms (Brad King) resolved.
  • 0014366: [CMake] Command line definitions ignored if -DCMAKE_C_COMPILER is passed (Stephen Kelly) closed.
  • 0012184: [Modules] SWIG_ADD_MODULE generates wrong file name for Ruby under Mac OS X (jschueller) closed.
  • 0013318: [CMake] swig: -noproxy option not supported with python (jschueller) closed.
  • 0014493: [CMake] Document relationship of VS_KEYWORD and VS_GLOBAL_KEYWORD (Brad King) closed.
  • 0011693: [CMake] On Mac OS X, the CMake .app filename should not contain the version number (Brad King) closed.
  • 0014659: Support for MirBSD in CMake (Brad King) closed.
  • 0014712: [CMake] improper setting of CMAKE_HOST_SYSTEM_PROCESSOR (Brad King) closed.
  • 0008466: [CTest] Provide finer control than pass/fail for a test program (Rolf Eike Beer) closed.
  • 0009188: [CMake] ADD_DEPENDENCIES silently accepts invalid target names (Nils Gladitz) closed.
  • 0013952: [CMake] "CodeBlocks NMake Makefiles" generates broken xml if spaces in path (Nils Gladitz) closed.
  • 0014690: [CMake] CheckTypeSize doesn't behave as documented in daily build (Daniele E. Domenichelli) closed.
  • 0014692: [Modules] UseQt4.cmake does not adhere to policy CMP0043 (Stephen Kelly) closed.
  • 0014686: [CMake] FindBoost.cmake does not provide a way to use libraries built by boost with the runtime-debugging=off bjam parameter (Brad King) closed.
  • 0014508: [Modules] FindJNI.cmake fails to set JAVA_INCLUDE_PATH2 for darwin (Brad King) closed.
  • 0009822: [CMake] Please expose: cmGlobalGenerator::GetExportSet at cmake level (Stephen Kelly) closed.
  • 0014439: [CPack] WiX: set/respect file/directory permissions (Nils Gladitz) closed.
  • 0014670: [CCMake] get_property does not work for ALIASED_TARGET property (Stephen Kelly) closed.
  • 0011338: [CMake] CMake adds CURRENT_SOURCE_DIR to include_directories if there is a VTK project. (Stephen Kelly) closed.
  • 0014646: [CMake] Clarify if(TARGET) documentation (Brad King) closed.
  • 0014658: [CMake] Document CMAKE_VERBOSE_MAKEFILE initialization (Brad King) closed.
  • 0014657: [Documentation] TestCXXAcceptsFlag description is incorrect (Brad King) closed.
  • 0014661: [CMake] Explicit project type GUID needed with INCLUDE_EXTERNAL_MSPROJECT (Brad King) closed.
  • 0014631: [CMake] source_group should document behavior of relative paths (Brad King) closed.
  • 0014453: [CMake] Look into performance of GenerateExportHeader test (Stephen Kelly) closed.
  • 0014622: [CMake] Typo in helpstrings for CMAKE_(C|CXX|Fortran)_STANDARD_LIBRARIES_INIT (Brad King) closed.
  • 0014636: [CMake] Error with whitelisted properties and generator expression in target_link_libraries (Stephen Kelly) closed.
  • 0014645: [CMake] exec_program and execute_process don't capture output when it does not end in a newline (Brad King) closed.
  • 0014133: [CMake] CMake creates duplicate target subfolders in Xcode project files (Brad King) closed.
  • 0014434: [CPack] WiX: component support (Nils Gladitz) closed.
  • 0014603: [CMake] Cross compiling for darwin fails (Brad King) closed.
  • 0014605: [CMake] Cross compiling/linking with MSVC on linux using wine fails (Brad King) closed.
  • 0014606: [CMake] Obsolete description for CMAKE_(C|CXX|Fortran)_FLAGS_RELEASE (Brad King) closed.
  • 0014593: [Modules] FindGTK2.cmake fails to find GTK with Quartz backend (Daniele E. Domenichelli) closed.
  • 0013173: [CMake] Swig module can't handle absolute path (jschueller) closed.
  • 0013426: [Modules] FindSWIG.cmake doesn't mark variables as advanced (jschueller) closed.
  • 0013771: [CMake] Use CMAKE_CURRENT_LIST_DIR instead of CMAKE_ROOT in FindSWIG module. (jschueller) closed.
  • 0013772: [CMake] UseSWIG.cmake does not handle relative paths with parent directories (jschueller) closed.
  • 0013814: [CMake] SWIG C# generates a DllImport line that doesn't match the library name (jschueller) closed.
  • 0014370: [CMake] add_custom_command() commands run from incorrect directory with Ninja generator (Peter Kuemmel) closed.
  • 0014520: [CMake] UseSWIG module can generate too long command lines in the build chain (jschueller) closed.
  • 0014411: [CMake] Ninja dependencies don't work with Intel and many other GCC-like compilers (Peter Kuemmel) closed.
  • 0014458: [CMake] Support clang-cl, clang's cl-compatible driver (Brad King) closed.
  • 0014544: Remove edit_cache target from ninja output (Brad King) closed.
  • 0014548: [CMake] Document CMAKE_MAKE_PROGRAM as preferred over CMAKE_BUILD_TOOL, not vice versa (Brad King) closed.
  • 0014562: [CMake] not able to compile a simple test program with -G "Visual Studio 11 2012" -Tv90 (Brad King) closed.
  • 0014567: [Modules] FindOpenMP is incorrect for compilers that accept OpenMP with no flags (Rolf Eike Beer) closed.
  • 0014587: [CMake] Add support for wxWidgets 3.0.0 (Brad King) closed.
  • 0013140: [CMake] CMake does not reject unsupported logical target names (Stephen Kelly) closed.
  • 0013902: [CMake] target_link_libraries should not accept utility targets (Stephen Kelly) closed.
  • 0013947: [CMake] Policy to disallow link interface self-references (Stephen Kelly) closed.
  • 0014554: [CPack] Pass custom arguments to WIX (Nils Gladitz) closed.
  • 0014561: [CMake] Errors with add_libaray(name INTERFACE) when TARGET_SUPPORTS_SHARED_LIBS is false (Stephen Kelly) closed.
  • 0014540: [Modules] Typo in PHP find module (Brad King) closed.
  • 0014541: [Modules] FindJNDI: amd64/ppc64 kernels might be running on 32bit system (Brad King) closed.
  • 0014402: [CMake] Replace "Visual Studio 11" by Visual Studio 2012" in cmake-gui (Brad King) closed.
  • 0012600: [CMake] Specifying CMAKE_INSTALL_PREFIX in a CMAKE_TOOLCHAIN_FILE file has no effect (Stephen Kelly) closed.
  • 0012611: [Documentation] Missing CMAKE_INCLUDE_DIRECTORIES_BEFORE from documentation (Stephen Kelly) closed.
  • 0013188: [CMake] Target and directory include_directory usage. (Stephen Kelly) closed.
  • 0013663: FindBoost documentation example should clarify it only finds static libraries (Brad King) closed.
  • 0014355: [Modules] Implementation of qt4_add_executable/library (Stephen Kelly) closed.
  • 0014533: [CMake] With Ninja, CTest is launching one test twice (Nils Gladitz) closed.
  • 0014713: [CMake] cmake -create-symlink doesn't overwrite existing dangling(!) symlinks (Brad King) closed.
  • 0014378: [CMake] ZERO_CHECK.vcxproj referenced despite CMAKE_SUPPRESS_REGENERATION set to FALSE (Brad King) closed.
  • 0014389: Find package Java should look first in the JAVA_HOME env var. (Graham Markall) closed.
  • 0014481: [CMake] Unable to support a new language using CMAKE_MODULE_PATH within an outside project. (Brad King) closed.
  • 0014507: [CMake] -i_dynamic flag (depricated) incorrectly added when using intel compilers (Brad King) closed.
  • 0011137: [CMake] Unable to parse CMakeLists.txt in UTF-8 with BOM encoding (Brad King) closed.
  • 0014181: [CMake] One-character function names don't work (Brad King) closed.
  • 0014494: [CMake] Doesn't create .lib for header only targets on Windows. (Stephen Kelly) closed.
  • 0014498: [CMake] Folder references aren't added correctly to Xcode projects. (Brad King) closed.
  • 0014499: [CMake] Add support for .NET target framework version for VS 2008 (Brad King) closed.
  • 0014502: [Modules] FindJava.cmake message incorrectness (Rolf Eike Beer) closed.
  • 0013035: [CMake] Support for MinGW Clang on Windows (Brad King) closed.
  • 0014466: [CPack] Deterministic file/directory IDs (Nils Gladitz) closed.
  • 0014468: [CPack] WiX: Include extra .wxs and/or .wixlib files (Nils Gladitz) closed.
  • 0014471: [CMake] -T switch with Intel Compiler does not set CMAKE_CXX_COMPILER properly (Brad King) closed.
  • 0014476: [CMake] MSVC_IDE and MSVC not set when using Intel Platform Toolset (Brad King) closed.
  • 0012886: [CMake] Add a manifest or main-class file to the created jar (Brad King) closed.
  • 0014387: [CMake] setting MS build output verbosity to "Diagnostic" in VisualStudio leads to CMAKE_CXX_SIZEOF_DATA_PTR set to "" (Brad King) closed.
  • 0014418: [Modules] FindOpenSSL: should mark {LIB,SSL}_EAY_{DEBUG,RELEASE} as advanced (Rolf Eike Beer) closed.
  • 0014424: [Documentation] Vague ADD_DEPENDENCIES() Description (Brad King) closed.
  • 0014358: [Modules] FortranCInterface fails to find generated test program when cross-compiling (Brad King) closed.
  • 0014371: [CCMake] bootstrapping with --docdir puts documentation in wron directory (Brad King) closed.
  • 0014608: [CMake] segmentation fault when "export(TARGETS nonexistenttarget FILE somefile.cmake") (Stephen Kelly) closed.
  • 0014570: Intel + Ninja regression: unable to compile a simple test program (Peter Kuemmel) closed.
  • 0013123: [CTest] ctest_empty_binary_directory failure is too silent (Nils Gladitz) closed.
  • 0014121: [CMake] Custom command errors are hidden when CTest launchers are used with Ninja (Robert Maynard) closed.
  • 0013143: [CTest] ctest_coverage runs gcov on gcda files outside the current build directory (Nils Gladitz) closed.
  • 0014511: [CMake] Makefile generators segfault when custom target sources have compile definitions (Nils Gladitz) closed.
  • 0014484: [CTest] CTest ignores RUN_SERIAL if test gets run as a dependency of another test (Nils Gladitz) closed.

New in CMake 2.8.12.2 (Jan 17, 2014)

  • VS: Map /Fd to ProgramDataBaseFileName for VS 7,8,9 (#14577)
  • Replace rule placeholder consistently (#14667)
  • VS: Convert include path to backslashes for VS >= 10
  • Revert "Ninja: Track configured files so we can regenerate them."
  • FindOpenMP: fix detecting compilers that do not need any special flag (#14567)
  • Xcode: Fix storyboard view
  • CMakeDetermineCompilerId: Fix compiler line match for Xcode 5.1

New in CMake 2.8.12.1 (Jan 17, 2014)

  • MSVC: Add /FS flag for cl >= 18 to allow parallel compilation (#14492)
  • Genex: Reject $ for object libraries (#14532)
  • Check for OBJECT_LIBRARY source files at start of generation
  • CMP0022: Plain target_link_libraries must populate link interface
  • Do not export INTERFACE_LINK_LIBRARIES from non-linkable targets
  • CMP0022: Warn about a given target at most once
  • Fix summary documentation of INTERFACE_LINK_LIBRARIES
  • file(GENERATE): Clear internal records between configures
  • cmake: Validate -E cmake_automoc argument count (#14545)
  • Fix spelling in INTERFACE_LINK_LIBRARIES documentation (#14542)
  • CMP0022: Output link interface mismatch for static library warning
  • Don't add invalid content to static lib INTERFACE_LINK_LIBRARIES.
  • CMP0022: Add unit test for null pointer check and message.
  • CMP0022: Add test for target_link_libraries plain signature
  • Automoc: Add directory-level COMPILE_DEFINITIONS to command line (#14535)
  • FindCUDA: Fix NPP library search for CUDA 5.5

New in CMake 2.8.12 (Oct 11, 2013)

  • Xcode: Fix test architecture selection for Xcode >= 5
  • Xcode: Teach Tests/BuildDepends to allow LINK_DEPENDS_NO_SHARED failure
  • Xcode: Drop XCODE_DEPEND_HELPER for Xcode >= 5
  • Xcode: Fix OBJECT library support for Xcode 5 (#14254)
  • Genex: Fix processing multiple include directories for relative paths

New in CMake 2.8.12 RC 1 (Aug 17, 2013)

  • CPackWIX: Add support for custom WiX templates
  • CMakeSystem: include toolchain file after setting CMAKE_HOST_ (#13796)
  • Add support files for C, C++ and ASM for the IAR toolchain.
  • Add regexps for the IAR toolchain to the vendor list.
  • Add IAR to the CMakeDetectC(XX)CompilerID.c(pp).in
  • cmake-gui: use shortcut F only for "Find in Output"
  • Eclipse: fix #14204 and #14205: no file links to directories
  • automoc: add a global AUTOMOC_TARGETS_FOLDER property
  • install: do not strip dll import libraries (#14123)
  • ExportTargets: add one more comment to the generated file.
  • Add documentation for the --graphviz support
  • graphvizoptions: add copyright notice
  • add macros cmake_print_properties() and cmake_print_variables()
  • VS: Detect MSVC compiler id on ARM toolchain
  • Fix spelling and typos (affecting users)
  • Fix spelling and typos (affecting binary data / module messages)
  • Fix spelling and typos (non-binary)
  • Fix spelling and typos (product names)
  • FindwxWidgets: add DOC strings with usual style
  • Explain distribution of Win9x binary on all Windows versions.
  • VS10: add detailed comment about MIDL processing
  • Docs: Update description of CMAKE_(BUILD_TYPE|CONFIGURATION_TYPES)
  • Docs: Clarify that CMAKE_*_(PREFIX|SUFFIX) affect filenames
  • Docs: Clarify wording "flag used" => "flag (to|will) be used"
  • set_property: Do not remove a property when APPENDing nothing
  • Tests/RunCMake: Document stripping of expected output
  • export: Error when exporting a target without a language
  • variable_watch: Store client data as pointers
  • variable_watch: Add a deleter for the client data
  • variable_watch: Match client_data when finding duplicates
  • variable_watch: Allow specifying the data to match in RemoveWatch
  • variable_watch: Prevent making extra entries in the watch map
  • variable_watch: Fix a typo in the error message
  • variable_watch: Don't share memory for callbacks
  • variable_watch: Check newValue for NULL
  • variable_watch: Add test for watching a variable multiple times
  • Do not set CMAKE_MATCH_ variables when not neeeded
  • SelectLibraryConfigurations: Fix for cached _LIBRARY
  • VS: Separate compiler and linker PDB files (#11899, #14062)
  • MSVC: Invoke 'link' directly for executables
  • Ninja: Fix OBJECT_DIR placeholder path conversion
  • VS 10: Escape ; as ; in preprocessor definitions (#14073)
  • CTest: Simplify ctest_* command source/build dir lookup
  • get_filename_component: Add explicit unit tests
  • get_filename_component: Add DIRECTORY option (#14091)
  • Xcode: Use explicitFileType to mark source types (#14093)
  • Check{C,CXX}CompilerFlag: Test using C locale (#14102)
  • Windows: Search '/' prefix only when cross compiling (#10994)
  • Recognize ld with toolchain prefix (#13960)
  • VS: Always initialize CMAKE_CONFIGURATION_TYPES in IDE generators
  • Begin post-2.8.11 development
  • Sanitize linker name to parse implicit link line (#14154)
  • VS: Allow /Fa to set AssemblerListingLocation (#14153)
  • Tests/IncludeDirectories: Avoid shared library with no symbols
  • if: Add test for IS_DIRECTORY
  • try_compile: Add test for bad call error cases
  • try_compile: Refactor argument processing
  • variable_watch: Add test for MODIFIED_ACCESS report
  • bootstrap: Compile KWSys SystemTools with UTIME(S|NSAT) values
  • variable_watch: Remove leftover debugging code (#14187)
  • variable_watch: Print accesses as "CMake Debug Log" messages
  • Docs: Clarify CMAKE_PARENT_LIST_FILE (#14194)
  • get_filename_component: Test ABSOLUTE of .. after root component
  • try_compile: Add signature to allow multiple SOURCES
  • enable_language: Clarify documentation
  • Split cmBootstrapCommands.cxx into two sources
  • Document CMAKE_INSTALL_PREFIX in CMAKE_SYSTEM_PREFIX_PATH
  • cmake: Document "-E tar" support for .zip (#14225)
  • FindBoost: Clarify failure on missing 'static' libs (#14235)
  • CMakeDetermineVSServicePack: Improve documentation
  • CMakeDetermineVSServicePack: Add VS 11 update 1 and 2 (#14239)
  • Document ENV syntax as a "variable" (#14245)
  • Embarcadero: Use response files only for includes, objects, and libs
  • Escape target flags taken from COMPILE_OPTIONS
  • Refactor target COMPILE_OPTIONS and COMPILE_FLAGS handling
  • CMakeDetermineVSServicePack: Add VS 11 update 3
  • Document removal of 'register' from flex/bison output
  • VS12: Find proper MSBuild for VSProjectInSubdir test
  • Fortran: Use explicit type in Fortran 90 check
  • project: Document top-level CMakeLists.txt requirement
  • ExternalProject: Document multiple COMMAND lines
  • include: Clarify variable access scope for included file
  • VS: Fix /MAP:mapfile flag mapping (#14282)
  • cmake: On configure error suggest looking at CMake*.log files
  • try_compile: Escape CMAKE__FLAGS in test projects (#14268)
  • try_compile: Add COPY_FILE_ERROR option to capture failure
  • FindPNG: Add versioned library names for 1.6 (#14289)
  • cmake: Fix resource leak reported by cppcheck
  • VS,Xcode: Drop incorrect legacy dependency trace (#14291)
  • OS X: Add copyright notices to Darwin-*-Fortran.cmake
  • VS: Avoid leaking child process output back to IDE (#14266)
  • Fix ExportImport test cmp0022NEW build on Watcom
  • add_test: Document test name restrictions (#14298)
  • UseJava: Update notice of copyright by Kitware
  • add_custom_command: Manage backtrace memory correctly (#14299)
  • Teach compiler ABI check to tolerate try_compile COPY_FILE failure
  • Test COMPILE_DEFINITIONS target property get/set/get round-trip
  • Check*CompilerFlag: Document use of CMAKE_REQUIRED_DEFINITIONS (#14309)
  • sha2: Avoid type-punned pointer dereference (#14314)
  • VS 6: Tell BuildDepends test to tolerate ninjadep failure
  • cmMakefile: Do not track configured files known to be temporary
  • libarchive: Update README-CMake.txt for new snapshot
  • libarchive: Include cm_zlib.h to get zlib used by CMake
  • libarchive: Silence API deprecation warnings
  • libarchive: Avoid struct init with variable
  • libarchive: Remove build options not used by CMake
  • libarchive: Backport to CMake 2.8.2
  • VS10: Honor user-specified /SUBSYSTEM: flag (#14326)
  • VS10: Escape include paths in XML project files (#14331)
  • OS X: Search for SDK based on deployment target (#14324)
  • bootstrap: Do not suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysroot (#14324)
  • OS X: Enable command-line build without tools in PATH
  • VS 6,7: Refactor local generators to avoid GetSourceFileWithOutput
  • cmake-gui: Fix build rules for Qt5 on Windows
  • Include cmMakefile.h before cm*Lexer.h to get stdint.h first
  • Skip CTestLimitDashJ test on Borland
  • Add RunCMake.Syntax test to cover argument parsing
  • cmListFileLexer: Fix line number after backslash in string
  • cmListFileLexer: Split normal and legacy unquoted arguments
  • cmListFileArgument: Generalize 'Quoted' bool to 'Delimeter' enum
  • Add RunCMake.Syntax test cases for command invocation styles
  • cmListFileCache: Convert CMake language parser to class
  • Warn about arguments not separated by whitespace
  • Warn about unquoted arguments that look like long brackets
  • cmListFileLexer: Modify flex output to avoid Borland warning
  • Cygwin: Avoid legacy warnings in RunCMake.* tests
  • Update version introducing CMP0021, CMP0022, and CMP0023
  • OS X: Do not default to non-existent deployment target SDK
  • Do not warn about left paren not separated by a space
  • VS: Add support for .NET target framework version
  • Improve documentation for CPACK_PACKAGE_INSTALL_REGISTRY_KEY.
  • Refactor how bundles and frameworks are supported.
  • Xcode: Add support for shared library versioning
  • OS X: Fix getting of CFBundle LOCATION property.
  • OS X: Add RPATH support for Mac.
  • Xcode: Add rpath support in Xcode generator.
  • OS X: Add support for @rpath in export files.
  • OS X: Add test for rpaths on Mac.
  • OS X: Improvements for getting install name of dylib.
  • OS X: Enable rpath support on Mac OS X when find_library() is used.
  • OS X: Fix regression handling frameworks for Ninja
  • OS X: If necessary, use xcrun to help find otool used to query install names.
  • Xcode: Support XCODE_ATTRIBUTE_ with [variant=] (#12532)
  • FindGTK2: Move check for pangocairo in gtk module
  • FindGTK2: Detect gthread library
  • FindFreetype: Detect Freetype installed by GtkMM installer for win
  • FindGTK2: Do not fail on MSVC11 if vc100 libraries are available
  • FindGTK2: Add GTK2_DEFINITIONS variable
  • SelectLibraryConfigurations: Do not cache the _LIBRARY variable
  • SelectLibraryConfigurations: Use -NOTFOUND instead of copying the vars
  • FindGTK2: Use GTK_XXX_LIBRARY_DEBUG libraries in debug mode
  • FindGTK2: Append _LIBRARY to var name in _GTK2_FIND_LIBRARY
  • FindGTK2: Append _INCLUDE_DIR to var name in _GTK2_FIND_INCLUDE_DIR
  • FindGTK2: Update local changelog
  • FindGTK2: Remove GTK2_SKIP_MARK_AS_ADVANCED option
  • FindGTK2: gthread-2.0 folder does not exist
  • FindGTK2: Detect gmodule library
  • FindGTK2: Detect pangoft2 and pangoxft libraries
  • OpenBSD: Enable ELF parsing and editing (#14241)
  • CPack/NSIS: Obtain path from which to uninstall from registry (#14124)
  • Add support for componentized USER spec file
  • CPackRPM add mechanism to remove path from generated list of file in RPM spec.
  • CPackRPM add /usr/lib64 to the list of builtin to-be-excluded path
  • CPackRPM protect '@' character in filename processed in the spec file.
  • CPackRPM make the changelog line conform to expected format
  • CPackWIX: Handle CPACK_PACKAGE_EXECUTABLES (#13967)
  • FindImageMagick: Find v6 include dir (#14174)
  • OS X: Add Fortran library version flags (#14249)
  • UseJava: Pass sources to javac using response file (#13028)
  • Allow using Java in a cross-compilation toolchain
  • Ninja: use cd /D to set directory on Windows
  • CPackWIX: Fix MSI package layout regression from parent
  • bash-completion: Add -S,-SP options arguments completion
  • bash-completion: Fix/improve generator names extraction
  • Eclipse: Add a missing space in the documentation
  • MinGW: Find mingw32-make included with Code::Blocks IDE (#14302)
  • VS: Add Windows Forms Support
  • VS: Add VS_GLOBAL_ROOTNAMESPACE target property
  • VS: Add Resx configuration to the vcxproj file
  • libarchive 3.1.2 (reduced)
  • cmake-gui: Add search functions for Output window (#9733)
  • cmake-gui: Add search functions to the context menu of the Output widget
  • cmake-gui: Change shortcut of the search field from Ctrl-F to Alt-E
  • cmake-gui: Add function for going to next error message in Output window
  • FindCUDA: Remove duplicate entries from INCLUDE_DIRECTORIES.
  • FindX11: Search in /opt/X11 for OS X 10.8 (#14232)
  • FindCUDA: CUDA_COMPUTE_BUILD_PATH uses relative paths to binary dir.
  • ExternalProject: Allow blank SVN_USERNAME/SVN_PASSWORD (#14128)
  • Xcode: Honor CMAKE_(MODULE|SHARED)_LINKER_FLAGS_ (#14161)
  • UseJava.cmake: fully use cmake_parse_arguments in add_jar
  • FindProtobuf: also find pthread
  • UseJava.cmake: document add_jar compat shim
  • Optimize custom command full-path dependency lookup
  • Add cmake_host_system_information command
  • Add option to use stdout/stderr of original terminal in cmake --build
  • Unify the way the flags of a static library are read
  • Add support for CMAKE_STATIC_LINKER_FLAGS
  • Add CMAKE_STATIC_LINKER_FLAGS to CMakeCommonLanguageInclude
  • Add documentation for the missing CMAKE_*_LINKER_FLAGS_* variables
  • Add additonal tests for the linker flags
  • VS6: Add handling of CMAKE_*_LINKER_FLAGS_ variables
  • VS6: Hardcode id_machine_6 for compiler detection
  • VS10: Do not set the TargetMachine when detecting the compiler
  • VS: Set CMAKE_VS_PLATFORM_NAME for VS7 and VS71 too
  • VS: Replace ArchitectureId with PlatformName
  • VS12: Remove duplicated overload of UseFolderProperty()
  • Fix detection of WinCE SDKs with 64bit verion of CMake
  • VS: Unify how the name of the generator is specified
  • VS10: Add support for assembler code (#11536)
  • WIN: Use COFF file header header for architecture detection (#14083)
  • Improve const-correctness in cmVisualStudioGeneratorOptions
  • Fix setting of the entry point symbol for Windows CE (#14088)
  • Add support for new Windows CE compiler
  • VS11: Add support for Windows CE SDKs
  • CTest: Add test for running many tests in parallel
  • cmDependsC: Collapse relative include paths
  • Add projectDir parameter to GenerateBuildCommand
  • VS: Create parser for Visual Studio .sln files
  • VS: Use .sln parser to build targets in subdirs with msbuild (#13623)
  • VS: Add test for building MSBuild project in subdir
  • ctest_build: Pass projectDir to GenerateBuildCommand
  • Ninja: Make cmcldeps depfile output more consistent with 'ninja -t msvc'
  • CPackWIX: Handle multiple shortcuts in the start menu
  • CPackWIX: Add option to specify the language(s) of the installer
  • CMakeCPack: Provide an upgrade guid for WiX
  • cmMakefile: Refactor AddCMakeDependFile and AddCMakeOutputFile.
  • Ninja: Track configured files so we can regenerate them.
  • cmMakefile: Track configured files so we can regenerate them (#13582)
  • Add a test to expose a bug with add_custom_command and ninja.
  • Ninja: GlobalNinjaGenerator WriteBuild and WritePhonyBuild non static
  • Ninja: Custom Command file depends don't need to exist before building
  • FindCUDA: Search for libraries in /lib//nvidida-current.
  • Ninja: Properly convert all paths to unix style before we do set intersection.
  • Ninja: Update BuildDepends test to verify cmcldeps depfiles.
  • FindOpenSSL: Fix spelling of CMAKE_CROSSCOMPILING (#14075)
  • FindOpenGL: simplify OS selection code
  • FindOpenGL: require headers to be found on non-Windows platforms (#13746)
  • Tests: create output files for all memory checkers
  • CTest: use an output file for Valgrind (#14110)
  • CTest: remove unreachable code and CTestTestMemcheckUnknown test
  • Tests: remove code duplication in CTestTestMemCheck tests
  • Tests: verify that memory checker output files are always present
  • CTest: drop suppression for gcc 2.9.6 errors from default Valgrind flags
  • Tests: add test for non-existent Valgrind suppression file
  • CTest: fix comment documenting cmBoundsCheckerParser class
  • Tests: add a test with custom options passed to valgrind
  • CTest: make sure never to report negative test times (#14132)
  • Doc: fix example for FAIL_REGULAR_EXPRESSION
  • CTest: break after first regex match on output
  • Tests: ignore Guard Malloc messages in MemChecker tests
  • CTest: avoid useless changing of directory
  • Tests: fix build of dummy memtester on AIX
  • wizard: fix warnings
  • wizard: simplify control flow
  • cmTarget: drop the unused local typedef LinkLine
  • Tests: ignore GuardMalloc messages on all Apple build, not just XCode ones
  • replace string(... MATCHES "^const$) with string(... STREQUAL "const")
  • Revert "CTest: fix pre and post test commands with spaces" (#13887)
  • FindPNG: improve library detection (#14301)
  • CTest: create one output file per memcheck (#14303)
  • Remove some uses of obsolete 'register' storage specifier
  • Document CMAKE__FLAGS variable (#14305)
  • Make the QtAutomoc test compile with either Qt 4 or Qt 5
  • Add a test for Qt5Automoc
  • Remove an endif() followed by an if() for the same condition.
  • Fix some copyastos in the DetermineRCCompiler file.
  • Test transitive includes from setting the LINK_LIBRARIES property.
  • Test the use of target transitive compile definitions with moc.
  • Fix handling of commas in arbitrary content in genexes.
  • Fix style.
  • Remove unused marker for a variable which is now used.
  • Extract the ProcessArbitraryContent method.
  • Rename the method determining if a genex accepts arbitrary content.
  • Make it possible for any genex to have arbitrary content at the end.
  • Add the JOIN generator expression.
  • Test that linking using the debug keyword to tll works.
  • automoc: Read target defines unconditionally
  • Remove unused typedef.
  • Fix brace indentation.
  • Add EXPORT_NAME property.
  • Remove unused vector population.
  • Sublime: Honor source-level COMPILE_FLAGS property
  • Docs: cmake -G selects a "build system" generator
  • Recognize shared library files with a numerical suffix
  • FindQt4: Fix QUIET failure with Qt 5 but not Qt 4
  • Error on relative path in INCLUDE_DIRECTORIES target property.
  • include_directories: Fix handling of empty or space-only entries
  • CTest: Read CTEST_PARALLEL_LEVEL from environment
  • string: Add MAKE_C_IDENTIFIER subcommand
  • GenerateExportHeader: Add newlines to separate the compiler output.
  • GenerateExportHeader: Allow use of of this macro with MODULEs.
  • file: Add GENERATE command to produce files at generate time
  • Tests/Module/GenerateExportHeader: Test exported free-function
  • Add $ generator expression
  • GenerateExportHeader: Generate only C identifiers as defines
  • Tests/CompileDefinitions: Avoid spaces in defines on VS 6
  • Use the qt5::moc imported target instead of a variable.
  • QtAutomoc: Get the Qt version through the target link interface
  • Fix indentation.
  • VS6: Rename some variables to correspond to config values.
  • Add cmLocalGenerator::GetCompileOptions.
  • Add _COMPILER_ID generator expressions.
  • cmTarget: Rename struct to be more re-usable.
  • cmTarget: Rename LinkInterfaceIncludeDirectoriesEntries
  • Add COMPILE_OPTIONS target property.
  • Add target_compile_options command.
  • Introduce target property _VISIBILITY_PRESET
  • Add a COMPILE_OPTION for a VISIBILITY_INLINES_HIDDEN target property.
  • Qt4Macros: Allow specifying a TARGET in invokations of macros.
  • Introduce add_compile_options command.
  • Remove unused cmAddDefinitionsCommand::ParseDefinition method.
  • Add some spaces to the INCLUDE_DIRECTORIES documentation.
  • CLI: Suppress the unused warning if the key value pair is cached.
  • Use --sysroot when cross compiling.
  • Add missing 'seen' check for evaluating COMPILE_OPTIONS.
  • Find targets in INTERFACE_COMPILE_OPTIONS when exporting for try_compile.
  • Use a preprocessor loop to manage the valid transitive properties.
  • Generate INTERFACE_COMPILE_OPTIONS on export.
  • Genex: Fix indentation in docs.
  • cmSystemTools: Fix typo in comment.
  • Style: Don't put an else after a return.
  • Add compiler target compile options.
  • QtAutomoc: Fix handling of list separator for compile definitions.
  • QtAutomoc: Use config-dependent compile definitions and includes.
  • De-duplicate version comparison code.
  • Add generator expressions for version comparision.
  • Don't run the WarnUnusedCliUnused test on Windows.
  • Add whitespace after colons in error messages.
  • Add missing return after error report.
  • Genex: Make LINK_LANGUAGE report an error when evaluating link libraries.
  • Genex: Extend EvaluatingLinkLibraries to also check the top target name.
  • Genex: Report error if a target file is needed to evaluate link libraries.
  • Add generator expressions for compiler versions.
  • Split the GeneratorExpression test into a third part.
  • Remove unused variable.
  • Add Target API to determine if an include is a system include.
  • Store system include directories in the cmTarget.
  • Extend the cmTargetPropCommandBase interface property handling.
  • Add a SYSTEM parameter to target_include_directories (#14180)
  • Add entire link interface transitive closure as target depends.
  • Test non-IMPORTED libraries in the INTERFACE of IMPORTED libraries.
  • GenexEval: Add abstracted access to link interface for a target.
  • Introduce the LINK_ONLY generator expression.
  • Introduce the INTERFACE_LINK_LIBRARIES property.
  • Export: Generate INTERFACE_LINK_LIBRARIES property on targets.
  • TLL: Don't populate old link interface if CMP0022 is NEW.
  • Overload cmLocalGenerator::AppendDefines to add a list.
  • Add an overload of cmIDEOptions::AddDefines taking a vector of strings.
  • Refactor cmTarget::GetCompileDefinitions to use an out-vector, not a string.
  • Document some variables for deprecation control.
  • Genex: Make CMP0021 and CMP0022 usable with TARGET_POLICY
  • Revert "Use --sysroot when cross compiling."
  • Add target property debugging for COMPILE_DEFINITIONS
  • Mark qt4_use_modules and qt4_automoc as obsolete.
  • Add the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property.
  • Don't add trailing whitespace to error message.
  • Remove TODO to uniq COMPILE_OPTIONS
  • Remove the LINK_LANGUAGE generator expression.
  • Genex: Fix $ with IMPORTED targets and multiple locations.
  • FindQt4: Don't use Qt component _FOUND vars before they're defined (#14286)
  • Add a convenient way to add the includes install dir to the INTERFACE.
  • Use linked frameworks as a source of include directories.
  • target_link_libraries: Add PUBLIC/PRIVATE/INTERFACE keyword signature
  • FindQt4: Re-add QAxServer to the QT_MODULES.
  • FindQt4: Populate the INTERFACE_LINK_LIBRARIES of IMPORTED targets.
  • Genex: Allow relative paths in INSTALL_INTERFACE.
  • cmTarget: Fix property name typo in docs.
  • Docs: Document file(GENERATE) CONDITION as optional.
  • Qt4Macros: Remove unneeded generate CONDITION.
  • Qt4Macros: Remove undefined varible use.
  • Qt4Macros: Simplify some variable population.
  • Docs: Document existing target property debugging options.
  • Docs: Trim trailing whitespace in generated doc.
  • Docs: Generalize and de-duplicate VISIBILITY_PREFIX docs.
  • Docs: Document variables for default visibility values.
  • Export: Fix typo of LINK_INTERFACE_LIBRARIES.
  • cmTarget: Remove duplicates when printing traces of tll signatures
  • cmTarget: Fix iface libraries and languages for static libraries.
  • Genex: Disallow LINKER_LANGUAGE only when used on a static library.
  • install: Remove error condition using INCLUDES DESTINATION without EXPORT.
  • Fix crash on export of target with empty INTERFACE_INCLUDE_DIRECTORIES.
  • Allow target commands to be invoked with no items (#14325).
  • Docs: Fix typo in CMAKE_DEBUG_TARGET_PROPERTIES
  • cmTarget: Add NAME property
  • Export: Process generator expressions from INCLUDES DESTINATION.
  • Add the ALIAS target concept for libraries and executables.
  • Revert "Add compiler target compile options."
  • Genex: Fix segfault when parsing ends with parameter expectation.
  • Add cmake_reset_check_state() macro
  • Use GmakeErrorParser instead of deprecated MakeErrorParser (fixes bug 0013699)
  • variable_watch: Add missing string enumeration entry (#14188)
  • ccmake: Add missing initializers reported by cppcheck
  • libarchive: Fix free() order to avoid accessing freed memory
  • cmcurl: Fix resource leak reported by cppcheck

New in CMake 2.8.11.2 (Jul 4, 2013)

  • asm support: adapt to changes in CMakeDetectCompiler in 2.8.10
  • SelectLibraryConfigurations: Fix for cached _LIBRARY
  • cmCryptoHash: Increase alignment of HashFile buffer
  • cmcurl: Backport curl bug 1192 fix (#14250)
  • VS12: Add Visual Studio 12 generator (#14251)
  • VS12: Generate flag tables from MSBuild v120 tool files
  • FindBoost: Add -vc120 mangling for VS 12
  • VS: Clarify Visual Studio product year for each version

New in CMake 2.8.11 RC 3 (Apr 19, 2013)

  • get_filename_component: Document path components more clearly (#14091)
  • try_compile: add missing fclose() to recently added error case
  • Fix clearing of the INCLUDE_DIRECTORIES DIRECTORY property.

New in CMake 2.8.11 RC 2 (Apr 19, 2013)

  • Determine C/CXX/Fortran compiler: minor restructuring
  • Determine C/CXX/Fortran compiler: fix indentation
  • rename TI_DSP toolchain to TI, since it works also for the ARM compiler
  • TI compiler: add automatic detection of prefix and suffixes
  • Modules/readme.txt: switch from "XXX" to "Xxx"
  • Modules/readme.txt: make lines a bit shorter for easier readability
  • Clang: Add -isystem flag support everywhere
  • ExternalProject: Retry on a failed git clone
  • string: Fix regex documentation of '^' and '$' (#14028)
  • Rename variable for including current directory in interfaces
  • Replace in CMAKE__COMPILE_OBJECT rule variables
  • Test evaluation of per-config COMPILE_DEFINITIONS (#14037)
  • VS: Fix VS 10/11 .sln headers (#14038)
  • add_dependencies: Distinguish target v. file dependencies in error (#14050)
  • automoc: Use a pre-build event in VS >= 7
  • Handle usr-move without forcing absolute paths (#14041)
  • FindQt4: If Qt5 is in CMAKE_PREFIX_PATH, be sure to find Qt4 includes.
  • Qt4: Fix typo setting a variable for FindThreads.
  • FindCUDA: Use the PRE_LINK mode only for MSVC >= 10
  • UseJava.cmake: simplify path logic
  • UseJava.cmake: fix passing jars to add_jar
  • UseJava.cmake: accept jar targets in add_jar
  • UseJava.cmake: require explicit request to include jars
  • CPack: Avoid "format expects 'unsigned int'" warnings
  • cmSystemTools: Generalize TrimWhitespace to all whitespace
  • FindImageMagick: Search versioned suffixes (#14012)
  • FindRuby: improve version selection
  • FindQt4: Set the Qt4_FOUND variable if Qt4 is found
  • FindQt4: Set the INTERFACE_QT_MAJOR_VERSION for Qt4::QtCore
  • Document that CMAKE_AUTOMOC works with Qt 5.
  • FPHSA: Fix FOUND_VAR check to work with if() auto-dereference
  • Fix cmGeneratorExpression::Preprocess for interleaved inputs.
  • cmake-gui: Use the QStandardItemModel workaround until 5.1.0.
  • Automoc: append implicit includes after user-specified dirs
  • Fix the evaluation of per-config COMPILE_DEFINITIONS (#14037)
  • Fix new target commands documentation.
  • install(EXPORT): Ensure clean INTERFACE_INCLUDE_DIRECTORIES
  • Report an error on IMPORTED targets with a faulty INTERFACE
  • Error if linked target has relative paths in INTERFACE_INCLUDE_DIRECTORIES
  • Fix the Qt 5 version required to run the IncompatibleQt test.

New in CMake 2.8.11 RC 1 (Apr 19, 2013)

  • FindBullet: Search in per-config dirs on Windows (#13738)
  • Add module FindIcotool
  • Eclipse: add switch to disable linked resources (#13189)
  • Eclipse: set source path once to fix Eclipse indexer (#13596)
  • cmDependsC: remove unused member variable
  • cmDependsC: remove code duplication
  • cmDependsC: fix indentation
  • cmDepends: allow multiple dependees per depender
  • AddCustomCommand: Handle multiple IMPLICIT_DEPENDS files (#10048)
  • Add support for Texas Instruments DSP compiler (#12405)
  • Squish: detect version
  • Squish: use FPHSA
  • Squish: find executables also under Windows
  • Squish: rename squish_add_test() to squish_v3_add_test() and fix docs a bit
  • Squish: use ${CMAKE_CURRENT_LIST_DIR}
  • Squish: add support for squish 4 (#9734)
  • Squish: fix new squish_v4_add_test() macro
  • Automoc: "inherit" FOLDER target property from target (#13688)
  • FPHSA: don't succeed if only checking for XX_FOUND (#13755)
  • CONFIGURE_PACKAGE_CONFIG_FILE(): improve generated comments
  • Automoc: get include dirs without stripping implicit include dirs off
  • configure_package_config_file: force absolute paths for usr-move
  • configure_package_config_file(): fix indentation
  • configure_package_config_file(): extend documentation
  • documentation: handling of relative paths by include- and link_directories()
  • automoc: use a std::vector instead a std::list
  • automoc: use the header extensions from cmMakefile
  • Eclipse: also detect include dirs and macro for clang (#13823)
  • cmLocalGenerator: remove "virtual" where not used
  • export files: rewrite the code for checking required targets
  • FPHSA: Add FOUND_VAR option to specify _FOUND variable name
  • FPHSA: improve documentation
  • Xcode: Fix nested source group handling (#12943)
  • Xcode: Sort source files
  • file: remove dead code
  • Add test to secure the file(GLOB empty) behavior.
  • OpenBSD: Install shared libraries without executable permission
  • OpenBSD: Add paths for Java 1.6.0/1.7.0 JRE/JDK
  • OpenBSD: Add path for Freetype under X.org
  • OpenBSD: Add paths for Tcl/Tk 8.4/8.5
  • OpenBSD: Add path for Lua 5.1
  • OpenBSD: Add paths for Qt3/Qt4
  • Documentation: Correct typos and grammar
  • Documentation: Clarify some command descriptions
  • Correct string literal typo (have "(NULL)" like all other cases).
  • Remove seemingly bogus duplicate CPACK_PACKAGE_FILE_NAME call.
  • VS: Avoid empty source groups in some cases (#3474)
  • Swap linking order of SDLmain and SDL (#0013769)
  • FindSDL_...: Restore dropped search paths (#13819)
  • find_library: Refactor internal name iteration
  • find_library: Simplify framework search logic
  • find_library: Generalize helper macro in test case
  • find_library: Optionally consider all names in each directory
  • FindBoost: Remove extra indentation level
  • FindBoost: Mark Boost_DIR cache entry as advanced
  • FindBoost: Use PATH_SUFFIXES to look in "Program Files"
  • FindBoost: Overhaul caching and search repeat behavior
  • FindBoost: Construct a clean Boost_LIBRARIES value
  • FindBoost: Refactor Boost_FOUND computation and version check
  • FindBoost: Rewrite documentation
  • BSD: Do not require dlfcn.h to build shared libs (#13573)
  • Xcode: Fix ReRunCMake.make path to cmake.check_cache (#13603)
  • VS10: Refactor link options collection
  • VS10: Honor /DELAYSIGN and /KEYFILE flags (#13601)
  • Document external language support policy
  • CTest: Allow SUBMIT_INDEX with CDash
  • KWSys: Submit dashboard builds to PublicDashboard
  • pre-commit: Update KWSys rejection message for new workflow
  • CTestCustom: Suppress LNK4089 warning about PSAPI
  • load_command: Deprecate and document pending removal
  • Documentation: Clarify configure_file behavior
  • OS X: Warn about known SDK breakage by Xcode 3.2.6
  • Optionally skip link dependencies on shared library files
  • Teach BuildDepends test to cover LINK_DEPENDS_NO_SHARED
  • Serialize tests for EXCLUDE_FROM_DEFAULT_BUILD
  • MSVC: Drop default use of /Zm1000 for VS >= 7.1
  • Teach find_(path|file) about Linux multiarch (#13742)
  • Test find_path multiarch support (#13742)
  • Add policy CMP0019 to skip include/link variable re-expansion
  • Xcode: Add frameworks search paths from link dependeny closure (#13397)
  • Makefile: Use modern link information for framework search paths
  • Documentation: Clarify handling of implicit link directories
  • Remove references to KWSys Process Win9x support
  • add_library: Document object library portability suggestion
  • OS X: Link with all framework search paths, not just the last
  • OS X: Detect implicit link directories on modern toolchains
  • OS X: Detect implicit linker framework search paths
  • Revert "load_command: Deprecate and document pending removal"
  • VS11: Simplify external object file handling (#13831)
  • KWIML: Teach ABI about 'long long' on older GNU
  • CMake: Skip empty link.txt lines (#13845)
  • ExternalProject: Allow DEPENDS on normal targets (#13849)
  • VS11: Fix VSExternalInclude test
  • target_link_libraries: Document that new sigs privatize old (#13876)
  • Tests: Avoid CTestLimitDashJ crash on Borland 5.8 builds
  • Fix use of cmTypeMacro in new command classes
  • Fix cmSystemTools::RenameFile race on Windows
  • VS 6: Create .rule file directory before file
  • Add ExternalData module
  • ExternalData: Remove compatibility with CMake < 2.8.5
  • ExternalData: Do not match directory names when resolving DATA{}
  • ExternalData: Cleanup stray TODO and typo in comments
  • ExternalData: Remove unused private interface
  • ExternalData: Improve series matching using an explicit syntax
  • ExternalData: Add tests covering interfaces and errors
  • ExternalData: Allow ()-groups in series match regex
  • ExternalData: Allow DATA{} syntax to reference directories
  • ExternalData: Generalize hash algo/ext handling
  • ExternalData: Add support for SHA 1 and 2 hash algorithms
  • ExternalData: Collapse ../ components in DATA{} paths
  • Fix Module.ExternalData test on Cygwin
  • Fix Module.ExternalData test on VS 6
  • ExternalData: Attach download rules to content links in IDEs
  • find_package: Reword _NO_INTERFACES documentation
  • Normalize full paths in implicit link library list
  • Fail early if no current working directory exists
  • MSVC: Fix CMAKE_CL_64 in CXX-only projects (#13896)
  • ExternalProject: Simplify CMake command line generation
  • Tests: Run ctest custom commands with VERBATIM
  • CMake: Add -T option to choose a generator toolset
  • VS: Implement generator toolset selection (#10722, #13774)
  • Xcode: Implement generator toolset selection (#9831, #13802)
  • CTest: Add options to set generator toolset
  • ExternalProject: Propagate the generator toolset
  • Tests: Consolidate ctest --build-and-test generator options
  • Tests: Add generator toolset support
  • Fix crash on empty CMAKE__COMPILER value (#13901)
  • file: Do not remove symlinked directories recursively (#10538)
  • Embarcadero: Fix default link stack/heap flags (#13912)
  • Avoid duplicate RPATH entries
  • AIX-GNU: Put implicit link directories in runtime libpath (#13909)
  • VS: Replace generation timestamp file atomically
  • VS,Xcode: Remove unused CMAKE_GENERATOR_* variables
  • Delete entire CMakeFiles directory when deleting CMakeCache.txt (#13756)
  • Tests/RunCMake: Allow tests to control build tree behavior
  • Test Unix Makefiles generator support for changing compilers
  • Xcode: Drop check for circular target dependencies
  • Xcode: Each target dependency edge needs a unique object (#13935)
  • Tests: Replace exec_program with execute_process
  • Tests: Generalize decision for 'make' tool supporting spaces
  • ExternalData: Test content link with a space in its name
  • FPHSA: Convert FOUND_VAR failure test to RunCMake
  • VS: Restore CMAKE_GENERATOR_FC variable
  • Xcode: Generate recommended artwork setting (#13954)
  • CTest: Fix ctest_update with 'HEAD' file in source tree
  • VS 10: Fix CMAKE__STACK_SIZE implementation (#13968)
  • install(EXPORT): Force absolute paths for usr-move
  • AIX: Do not use -brtl to create shared libraries (#13997)
  • add_subdirectory: Compute output dir with consistent slashes (#10072)
  • ExternalData: Preserve escaped semicolons during argument expansion
  • Avoid crash when checking property link dependencies without link info
  • Avoid crash when checking property compatibility without link info
  • Refactor RunCMake.build_command test to allow more cases
  • build_command: Fail early without CMAKE_MAKE_PROGRAM (#14005)
  • CTest: Fail early without PROJECT_BINARY_DIR (#14005)
  • FindQt4: Fix QT_QMAKE{_QMAKE => }_EXECUTABLE typo
  • XL: Use -qpic for position independent code (#14010)
  • Configure Tests/CMakeTests only with BUILD_TESTING ON
  • CTest: Prevent creation of unbounded number of tests in ctest (#12904)
  • CMake: source_group needs to check its own regex after its children (#13611)
  • Fix for possible Rez errors when creating dmg.
  • PackageMaker: Enable postflight script in component mode (#12375)
  • CPack: Fix RPM/Deb package names to not include "ALL_COMPONENTS_IN_ONE"
  • Qt4: Add SYSTEM option to include_directories.
  • FindQt4: set QT_VERSION_* variables sooner.
  • Begin post-2.8.10 development
  • CPack: Add automatic detection of the Unicode makensis (#9629)
  • BundleUtilities: Use a more inclusive REGEX for frameworks (#13600)
  • VS: Avoid empty, unreferenced solution folders... (#13571)
  • NMake: Add a test to demonstrate EmptyDepends issue (#13392)
  • NMake: Fix problem with empty DEPENDS args (#13392)
  • CMake: Remove "/STACK:10000000" from default linker flags (#12437)
  • Watcom: Avoid prompt from wmake about dll with no exports...
  • Tests: Use the right path to CPack value for running CPack tests
  • VS11: Allow using folders with the VS11 Express Edition (#13770)
  • CPack: Fix dashboard errors (#11575)
  • CPack: Fix dashboard warnings (#11575)
  • CPack: Fix dashboard errors and warnings (#11575)
  • CMake: Stylistic changes and documentation tweaks
  • CMake: Fix dashboard warnings
  • CMake: Fix dashboard test failure
  • CMake: Fix dashboard build errors and warnings
  • CTest: Coverage handler: expect certain output lines from gcov 4.7 (#13657)
  • Add CTestLimitDashJ test (#12904)
  • CPack/NSIS: Fix compatibility issues with prerelease NSIS (#13202)
  • CPack/NSIS: Add support for 64-bit NSIS (#13203)
  • CPack: WIX Product Icon, UI Banner, UI Dialog support (#13789)
  • CPackRPM fix #13898 uses IF(DEFINED var) to avoid wrong var value logic
  • CPack: Fix NSIS version check without release version (#9721)
  • Use PRE_LINK instead of PRE_BUILD when testing PRE_LINK.
  • FindCUDA: Remove linkage against CUDA driver library (#13084)
  • FindCUDA: Add support for separable compilation
  • FindCUDA: Added cupti library.
  • FindQt4: Do not use qmake from Qt5
  • Add $ generator expression.
  • Removed GenerateExportHeader warnings about old compilers
  • VS: Specify WinCE subsystem also for DLLs
  • VS: Specify WinCE subsystems correctly in VS 9 2008
  • enable CTEST_USE_LAUNCHERS with Ninja too
  • Ninja: fix usage of cldeps with ctest launchers
  • ExternalProject: Only run 'git fetch' when required.
  • ExternalProject: Do smoke tests for Git Tutorial builds.
  • ExternalProject: Add tests for UPDATE_COMMAND.
  • ExternalProject: Always do a git fetch for a remote ref.
  • ExternalProject: Make sure the ExternalProjectUpdate setup is available.
  • ExternalProject: Verify when a fetch occurs during update test.
  • ExternalProjectUpdateTest: Only support Git 1.6.5 and greater.
  • ccmake: Allow DEL key in first column
  • GetPrerequisites: Move tool search paths up
  • GetPrerequisites: Add support for objdump
  • GetPrerequisites: Enable test for BundleUtilities on MinGW
  • GetPrerequisites: Add documentation for objdump
  • cmDepends: No dependency-vector erasure in CheckDependencies
  • Added a generator for Sublime Text 2 project files.
  • Added some support for sublimeclang_options in the generated project file.
  • Changed SublimeClang include path generation to expand to absolute paths.
  • Cleaned up the Sublime Text 2 Generator code a bit.
  • Fixed support for the Ninja build system.
  • Added and cleaned up some comments.
  • The generator no longer generates an explicit list of source files.
  • The generator no longer generates absolute paths to the ninja.build/Makefiles.
  • Added a CMAKE_SUBLIMECLANG_DISABLED variable that disables SublimeClang.
  • Fixed Sublime Text project generation for in-source builds
  • Define flags in CMAKE_C(XX)_FLAGS are now included in SublimeClang settings.
  • SublimeText2 Gen: Improved use of define, include flags from CMAKE_C(XX)_FLAGS
  • SublimeText2 Gen: Fixed the issue where include directory flags used -D
  • Sublime Text 2 Gen: Per-source Compile flags are now saved in a separate file.
  • SublimeText 2 Gen: Set the sublimeclang_options_script property.
  • NAG: Use -PIC for Fortran position-independent code (#13932)
  • CPack: Add a WiX Generator (#11575)
  • CMake: Add TIMESTAMP subcommand to string and file commands
  • Introduce the abstract class cmGlobalGeneratorFactory
  • Add cmGlobalGeneratorFactory::GetGenerators()
  • Search generator in cmake::ExtraGenerators before in cmake::Generators
  • Allow a GeneratorFactory handling of more than one generator
  • Make cmGlobalGenerator::GetDocumentation() a static function
  • VS: Remove AddPlatformDefinitions from platform-specific generators
  • VS: Fix ArchitectureId of Visual Studio 10 IA64 generator
  • VS: Remove GetPlatformName from platform-specific generators
  • VS: Remove EnableLanguage from platform-specific generators
  • VS: Remove platform specific generator files
  • FindBISON: Add support for the Win flex-bison distribution
  • FindFLEX: Add support for the Win flex-bison distribution
  • VS: Remove TargetMachine for linker when checking compiler id
  • VS: Add CMAKE_VS_PLATFORM_NAME definition to cmMakefile
  • VS: Add static method to get the base of the registry
  • VS: Change variable type of ArchitectureId from const char* to string
  • VS: Change variable type of Name from const char* to string
  • VS: Support setting correct subsystem and entry point for WinCE
  • VS: Add parser for WCE.VCPlatform.config to read WinCE platforms
  • VS: Allow setting the name of the target platform
  • VS: Make DetermineCompilerId working with WinCE too
  • VS: Added "Deploy" at project configuration for WindowsCE targets
  • Add command to generate environment for a Windows CE SDK
  • VS: Set the correct SubSystem when determinating the CompilerId
  • VS: Add the entry point when compiling for WindowsCE
  • VS: Ignore LIBC.lib when linking the CompilerId executables
  • Set WINCE to 1 when building for WindowsCE
  • Ninja: Avoid LNK1170 linker error
  • Ninja: encode LINK_FLAGS to handle bash variables
  • Ninja: fix building from Codeblocks GUI
  • Ninja: remove implicit dependency on custom command outputs
  • Ninja: use MinGW generator code in EnableLanguage()
  • Ninja: the Ninja generator does not support Fortran yet.
  • Ninja: escape line breaks in literals
  • Add tests for list() argument count
  • Add tests for list() invalid arguments
  • Consolidate list() argument count testing
  • Add several get_property() tests
  • Add tests for EXCLUDE_FROM_DEFAULT_BUILD
  • Add property EXCLUDE_FROM_DEFAULT_BUILD_
  • Define property EXCLUDE_FROM_DEFAULT_BUILD
  • Add tests for VS_SOLUTION_GLOBAL_SECTIONS
  • Implement properties VS_GLOBAL_SECTION_*
  • Define properties VS_GLOBAL_SECTION_*
  • Documentation: Clarify a few subtleties
  • KWIML: Teach ABI.h about Aarch64
  • XCode generator won't infinitely parse compiler flags (bug #13354).
  • Correct missing parameter to CMP0018Flags call.
  • Remove ability to generate sublime clang files.
  • Update generator to use new cmGeneratorTarget api.
  • FindGTK2: Fix GTK2_LIBRARIES order for static gtk libraries
  • FindQt: improve version selection
  • FindQt: add some more places to look for Qt3
  • Tests: add MajorVersionSelection tests
  • Linux/PA-RISC: Link with --unique=.text.* to help binutils
  • FindQt: add to MajorVersionSelection test
  • CMakeTests: allow to call the check_cmake_test macro with a given file
  • list: add tests for CMP0007 behavior
  • GetProperty test: move doc property tests into main process
  • Find* (and some other): use ${CMAKE_CURRENT_LIST_DIR} in include()
  • bootstrap: use better defaults for Haiku
  • Haiku no longer defines __BEOS__
  • check for Haiku only with __HAIKU__
  • FindLua51: do not try to link libm on BeOS
  • FindGLUT: BeOS does not have libXi and libXmu
  • FindOpenGL: add Haiku paths
  • doc: fix linebreaks in generator expression documentation
  • ProcessorCount test: fix path to cmsysTestsCxx executable
  • ProcessorCount test: require SystemInformation process to work
  • FindOpenMP: improve documentation (#13895)
  • properly detect processor architecture on Windows
  • fix Windows processor detection
  • libarchive: fixed undefined left shift with signed ints
  • FindImageMagick: Search quantum depth suffixes (#13859)
  • GenEx: Test early determination of AND and OR
  • Enable some compiler warnings when building CMake.
  • Resolve warnings about unused variables.
  • Resolve warnings about used enum values in switch blocks.
  • Resolve warnings about shadowing parameters and local variables.
  • Resolve ambiguity warning regarding use of && and ||.
  • Remove references to ancient and removed parts of the code.
  • Always use the auto_ptr from cmsys.
  • Port cmGeneratorExpression to cmTarget from cmGeneratorTarget.
  • Split link information processing into two steps.
  • Revert "Move GetLinkInformation to cmGeneratorTarget"
  • Genex: Extract a method to parse parameters.
  • Genex: Ensure that $ has a parameter.
  • Genex: Don't segfault on $
  • Generate an early-return guard in target Export files.
  • Fix some warnings from -Wundef
  • Make targets depend on the link interface of their dependees.
  • Use cmsys::auto_ptr to manage cmCompiledGeneratorExpressions
  • Keep track of INCLUDE_DIRECTORIES as a vector of structs.
  • Add a way to print the origins of used include directories.
  • Tests: Fix warning about unused variable
  • Qt4: Add module dependencies to the IMPORTED targets
  • Don't crash when a target is expected but is not available.
  • Add test for custom command with a genex referring to a target.
  • GenEx: Add expressions to specify build- or install-only values
  • Allow generator expressions to require literals.
  • Add the TARGET_NAME generator expression.
  • Add API to extract target names from a genex string.
  • Add API to populate INTERFACE properties in exported targets.
  • Make all relevant targets available in the genex context.
  • Use mapped config properties to evaluate $
  • Make cycles in target properties ignored, not an error.
  • Populate the ExportedTargets member early in GenerateMainFile
  • Handle INTERFACE properties transitively for includes and defines.
  • Add CMAKE_BUILD_INTERFACE_INCLUDES build-variable.
  • Make linking APIs aware of 'head' target
  • Add LINK_LIBRARIES property for direct target link dependencies
  • Allow target_link_libraries with IMPORTED targets.
  • Add the -Wundef flag when compiling CMake.
  • FindQt4: Add INTERFACE includes and defines to Qt4 targets
  • Add the target_include_directories command.
  • Add the target_compile_definitions command.
  • Keep track of properties used to determine linker libraries.
  • Add API to calculate link-interface-dependent bool properties or error.
  • Process the INTERFACE_PIC property from linked dependencies
  • Fix linking to imported libraries test.
  • Add cmGeneratorExpression::Split() API.
  • Don't pass a position when determining if a target name is a literal.
  • Extract the AddTargetNamespace method.
  • Split the generator expression before extracting targets.
  • Split LINK_INTERFACE_LIBRARIES export handling into dedicated method.
  • Allow generator expressions in LINK_INTERFACE_LIBRARIES.
  • Add a way to check INTERFACE user property compatibility.
  • Don't include generator expressions in old-style link handling.
  • Document the use of generator expressions in new commands.
  • Add the TARGET_DEFINED generator expression
  • Strip consecutive semicolons when preprocessing genex strings.
  • Don't write a comment in the export file without the code.
  • Only generate one check per missing target.
  • Move the exported check for dependencies of targets
  • Move the exported check for file existence.
  • Add a test for the interfaces in targets exported from the build tree.
  • Make the BUILD_INTERFACE of export()ed targets work.
  • Export the INTERFACE_PIC property.
  • Test evaluation target via export for generator expressions
  • Make sure generator expressions can be used with target_include_directories.
  • Populate the link information cache before checking dependent properties.
  • Exit early if we find an inconsistent property.
  • Make INTERFACE determined properties readable in generator expressions.
  • Clear the link information in ClearLinkMaps.
  • Export the COMPATIBLE_INTERFACE_BOOL content properties
  • Add the $ expression
  • Automatically link to the qtmain library when linking to QtCore.
  • Don't wrap all targets in LINK_LIBRARIES in a TARGET_NAME genex.
  • Generate new-style cmake code during export.
  • Store includes from the same include_directories call together.
  • Only output includes once after the start of 'generate-time' when debugging.
  • Specify the target whose includes are being listed.
  • Output include directories as LOG messages, not warnings.
  • Revert "Allow target_link_libraries with IMPORTED targets."
  • Disallow porcelain to populate includes and defines of IMPORTED targets.
  • Exclude the LINK_LIBRARIES related properties from INTERFACE evaluation.
  • Make calculation of link-interface-dependent properties type-sensitive.
  • Add the COMPATIBLE_INTERFACE_STRING property.
  • Move GetCompileDefinitions to cmTarget.
  • Process COMPILE_DEFINITIONS as generator expressions in QtAutomoc.
  • Generate the _IMPORT_PREFIX in the non-config export file.
  • Add the INSTALL_PREFIX genex.
  • Fix TARGET_PROPERTY target extractions.
  • Make the Property name protected so that subclasses can use it.
  • Don't allow targets args in the new target commands.
  • Make subclasses responsible for joining content.
  • Use the result of converting to a unix path.
  • Handle reading empty properties defined by the link interface.
  • Advance more when preprocessing exported strings.
  • Make it an error for INSTALL_PREFIX to be evaluated.
  • Export targets to a targets file, not a Config file.
  • Add a way to exclude INTERFACE properties from exported targets.
  • Add API to check if we're reading a includes or defines property.
  • Add the $ generator expression.
  • Add includes and compile definitions with target_link_libraries.
  • Test workaround of bad interface include directories from depends.
  • Optimize genex evaluation for includes and defines.
  • Cache context-independent includes on evaluation.
  • Style: Use this-> when invoking member functions.
  • Process generator expressions for 'system' include directories.
  • Deduplicate the isGeneratorExpression method.
  • De-duplicate validation of genex target names.
  • Test printing origin of include dirs from tll().
  • The COMPATIBLE_INTERFACE does not affect the target it is set on.
  • Ensure type specific compatible interface properties do not intersect.
  • Fix generation of COMPILE_DEFINITIONS in DependInfo.cmake.
  • Fix determination of evaluating link libraries.
  • Only use early evaluation termination for transitive properties.
  • Move a special case for PIC from the genex to the cmTarget code.
  • Don't keep track of content determined by target property values.
  • Only append build interface include dirs to particular targets.
  • Ensure that the build interface includes have been added.
  • Whitelist target types in target_{include_directories,compile_definitions}
  • Make sure INTERFACE properties work with OBJECT libraries.
  • Don't allow utility or global targets in the LINKED expression.
  • Generate config-specific interface link libraries propeties.
  • Fix determination of when we're evaluating compile definitions.
  • Rename the IncludeDirectoriesEntry to be more generic.
  • Don't use LINKED where not needed.
  • Use the link information as a source of compile definitions and includes.
  • Revert "Don't allow utility or global targets in the LINKED expression."
  • Don't populate INTERFACE includes and defines properties in tll.
  • Revert "Add the $ generator expression."
  • Revert "find_package: Reword _NO_INTERFACES documentation"
  • Revert "Add a way to exclude INTERFACE properties from exported targets."
  • Don't add target-specific interface includes and defines to Qt 4 targets.
  • Fix GenerateExportHeader documentation #13936
  • automoc: Add source file to target early to set the linker language
  • Keep track of all targets seen while evaluating a genex.
  • Add a new Export generator for IMPORTED targets.
  • Handle targets in the LINK_LIBRARIES of try_compile.
  • Strip stray semicolons when evaluating generator expressions.
  • Workaround broken code where a target has itself in its link iface.
  • Fix DAG checker finding cycling dependencies.
  • Expand includes and defines transitively in 'external' genexes.
  • Fix constness of accessors.
  • Fix the tests for evaluating includes and defines.
  • Memoize includes and defines from interface libraries.
  • Remove use of TARGET_DEFINED from target_include_directories test.
  • Remove use of TARGET_DEFINED from the ExportImport test.
  • Remove use of TARGET_DEFINED from the target_link_libraries test.
  • Revert "Add the TARGET_DEFINED generator expression"
  • Only add existing targets to the Qt4 target depends properties.
  • Fix the cmGeneratorExpression::Split when leading chars are present.
  • Fix RPATH information when only a genex is used as a link library.
  • Mention that IMPORTED targets may be created by a find_package call.
  • Remove unused parameters from target_link_libraries tests.
  • Only process transitive interface properties for valid target names.
  • Restore support for target names with '+' (#13986)
  • Automoc: Don't create automoc targets if Qt is not used (#13999)
  • cmake-gui: Use -fPIE if required by Qt.
  • cmake-gui: Workaround bug in Qt 5.0.0 to 5.0.3 QStandardItemModel
  • KWIML: Teach ABI.h that VAX is big endian
  • Automoc: Fix automoc for OBJECT libraries.
  • Automoc: add OBJECT library to QtAutomoc test
  • spell: fix a few typos in comments

New in CMake 2.8.10.2 (Nov 28, 2012)

  • Automoc: fix regression #13667, broken build in phonon
  • Initialize IMPORTED GLOBAL targets on reconfigure (#13702)
  • CMake: Fix infinite loop untarring corrupt tar file
  • FindGettext: fix overwriting result with empty variable (#13691)

New in CMake 2.8.10.1 (Nov 8, 2012)

  • Fix default PDB output directory (#13644)
  • Fix PathScale compiler id for Clang-based upstream
  • Update programmatically-reported copyright year (#13638)
  • FindSDL: Restore accidentally dropped search paths (#13651)
  • OS X: Fix default CMAKE_OSX_SYSROOT with deployment target
  • FindOpenSSL: fix library selection on Windows (#13645)
  • FindOpenSSL: also find the non-MD debug libraries for MSVC
  • GenEx: Use case insensitive comparison for $

New in CMake 2.8.8 (May 9, 2012)

  • heckIncludeFiles: Shorten check description message
  • CPackNSIS: Rewrite variable documentation to make it more readable.
  • OS X: Use correct extra path when searching for applicaton bundles (#13066)
  • OS X: Mark find_program results as advanced
  • Fix some doc typo and add an undocumented var.
  • OS X: Use OSX_DEVELOPER_ROOT for app search path (#13066)
  • FindBoost: add support for 1.49 and 1.50

New in CMake 2.8.1 (May 21, 2010)

  • Fix failing test on cygwin
  • Add a new serach path for MPICH2

New in CMake 2.6.3 (Mar 16, 2009)

  • Add parenthetical expressions to if
  • Improve scoping of policies (see cmake_policy and CMP0011)
  • Teach find_package more config file locations
  • Many improved Find scripts in Modules
  • Added an unset command
  • Qt cmake-gui is the primary GUI for windows, deprecate CMakeSetup
  • Better reporting when nmake compiler environment is not correct

New in CMake 2.6.2 RC6 (Oct 2, 2008)

  • Fix bug: cpack did not work when sym-linked after install

New in CMake 2.6.2 RC5 (Oct 2, 2008)

  • Add beta BundleUtilities.cmake file
  • CPackRPM 7435 fixes to add optional post-install
  • Fix Bug: FindBoost versioned find not working
  • Fix FindCurses to be able to work without ncurses.h
  • FindQt4 fix bug: add a bit more documentation and add ability to specify extra flags to lupdate.