CMake Changelog

What's new in CMake 3.29.2

Apr 11, 2024
  • Changes made since CMake 3.29.1:
  • Brad King (4):
  • Tests/RunCMake/CompilerChange: Simplify test cases
  • Fix regression on reconfigure with unnormalized -DCMAKE_<LANG>_COMPILER=
  • CMakePackageConfigHelpers: Restore undocumented PACKAGE_PREFIX_DIR variable
  • CMake 3.29.2
  • Evan Wilde (1):
  • Swift: Ninja: Remove module dependency for executables
  • Kai Pastor (1):
  • FindJasper: Fix Jasper::Jasper IMPORTED_CONFIGURATIONS
  • Matthias Isele (2):
  • FindOpenSSL: Update layout for Shining Light Productions 32-bit package
  • FindOpenSSL: Update layout for Shining Light Productions debug libraries

New in CMake 3.29.1 (Apr 4, 2024)

  • Ben Boeckel (2):
  • ExternalProject: add an example of `LIST_SEPARATOR` usage
  • ExternalProject: reword `LIST_SEPARATOR` to indicate what it *does*
  • Brad King (11):
  • IntelLLVM: Revert accidental use of -external:I with Fortran compilers
  • libuv: Avoid posix_spawn on macOS < 10.8
  • FindPkgConfig: Avoid finding Strawberry Perl's pkg-config
  • libuv: process: de-duplicate conditions for using kqueue
  • libuv: darwin: group kqueue-specific definitions together
  • libuv: macos: use posix poll instead of kqueue
  • FindMPI: Fix finding IntelLLVM wrappers on Windows
  • ctest: Restore enforcement of RESOURCE_LOCK test property
  • ARTOS: Add support for finding library files named with 'lib' prefix
  • IntelLLVM: Fix link flags with Visual Studio generators
  • CMake 3.29.1
  • Charlotte Koch (1):
  • cmSystemTools: Fix compilation on DragonFly BSD
  • Craig Scott (8):
  • Help: Remove stray formatting for try_compile() LINKER_LANGUAGE keyword
  • try_compile(): Include languages with _ or - when passing linker vars
  • Help: Grammar, typos and wording improvements for linker variables
  • Help: Add custom linker example for CMAKE_<LANG>_USING_LINKER_<TYPE>
  • Help: CMAKE_<LANG>_USING_LINKER_<TYPE> can be a list of flags
  • Help: Restructure and improve LINKER_TYPE docs
  • CMakePackageConfigHelpers: Remove unused variable
  • CMakePackageConfigHelpers: Use unique variable name for pkg prefix
  • Evan Wilde (1):
  • Swift: Add CMAKE_LINKER_TYPE support
  • FeRD (Frank Dana) (1):
  • Help: Fix location of install() note about superseded commands
  • scivision (2):
  • FindMatlab: R2024a version map
  • Help: emphasize need for VS Integrations with oneAPI Fortran

New in CMake 3.29.0 (Mar 25, 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_<LANG>_COMPILER_LINKER, CMAKE_<LANG>_COMPILER_LINKER_ID, CMAKE_<LANG>_COMPILER_LINKER_VERSION and CMAKE_<LANG>_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_<PROJECT-NAME>_INCLUDE, and CMAKE_PROJECT_<PROJECT-NAME>_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 4 (Mar 14, 2024)

  • Changes made since CMake 3.29.0-rc3:
  • Adrian Pop (1):
  • GET_RUNTIME_DEPENDENCIES: Allow more whitespace before objdump's "DLL Name:"
  • Alexander Neumann (1):
  • ASM_MARMASM: Remove broken partial support for preprocessor defines
  • Ben Boeckel (1):
  • Tests/CXXModules: add a test using `TARGET_OBJECTS` from modules
  • Brad King (20):
  • Tests: Generalize ctest tests-from-file test cases
  • ctest: Exit with failure when tests-from-file input is missing
  • Tests: Make ctest tests-from-file expected output more precise
  • ctest: Honor tests-from-file options with empty input
  • ctest: Remove unnecessary and ambiguous tests-from-file comment syntax
  • Help: Improve ctest tests-from-file documentation wording and wrapping
  • Tests: Convert CTestTestSerialOrder to RunCMake.ctest_test case
  • Tests: Convert CTestTestSkipReturnCode to RunCMake.ctest_test case
  • Tests: Remove unnecessary parallel suppression from CTestCoverageCollectGCOV
  • cmCTestMultiProcessHandler: Modernize member initialization
  • ctest: Allow passing -j without value to choose a contextual default
  • install(EXPORT): Drop REQUIRED from exported find_dependency calls
  • Tests: Update RunCMake.CompileFeatures for Xcode 15.3
  • Tests: Update RunCMake.CheckCompilerFlag for Xcode 15.3
  • gitlab-ci: update macOS jobs to use Xcode 15.3
  • LinkerId: Update detection of linker tool for Xcode 15.3
  • EXPORT_PACKAGE_DEPENDENCIES: Add experimental feature gate
  • Autogen: Restore target-ordering dependencies in Makefiles with DEPFILE
  • cmQtAutoGenInitializer: De-duplicate autogen/timestamp target depend logic
  • CMake 3.29.0-rc4
  • Charlie Savage (2):
  • FindRuby: Add support for 3.3
  • FindRuby: Fix finding Ruby 3.1+ on Windows
  • Craig Scott (1):
  • FetchContent: Don't leak temporary variable and restore var robustly
  • Marc Chevrier (4):
  • LINKER_TYPE: Document that linker tool should be in the PATH
  • LINKER_TYPE: fix spelling error in message
  • LINKER_TYPE: Support MOLD only on GCC versions that support it
  • Apple Text Based Stubs: should be usage in subdirectories
  • scivision (1):
  • Help: Convert http URLs to https

New in CMake 3.29.0 RC 3 (Mar 5, 2024)

  • Changes made since CMake 3.29.0-rc2:
  • Ben Boeckel (6):
  • cmGeneratorTarget: collapse paths before querying the fileset cache
  • CMakeDetermineCompilerId: use `_ARG1` to query the clang resource dir
  • Help/file: mention the working directory for `ARCHIVE_EXTRACT`
  • cmExportFileGenerator: only export include paths for HEADERS file sets
  • Help/add_custom_command: fix verb grammo
  • cmImportedCxxModuleInfo: remove unused pointer field
  • Brad King (7):
  • Help: Modernize create_test_sourcelist documentation
  • Help: Document create_test_sourcelist source path convention
  • FindOpenMP: Restore support for Intel compilers on Windows
  • ci: Enable FindOpenMP tests in Intel nightly CI jobs on Windows
  • Tests/RunCMake/CXXModules: Update VS circular error message
  • FindTIFF: Fix name of upstream TIFF cmake package
  • CMake 3.29.0-rc3
  • Evan Wilde (1):
  • Swift: Ninja: Pass module name to all swift builds
  • Matthias Isele (1):
  • FindOpenSSL: Update layout for Shining Light Productions package on Windows

New in CMake 3.29.0 RC 2 (Feb 23, 2024)

  • Ben Boeckel (21):
  • cmDyndepCollation: collapse full path before looking up
  • Tests/CXXModules: support testing rebuild conditions
  • cxxmodules: return failure from the collator when private usage is found
  • Tests/CXXModules: test that objects depend on their modmap files
  • cxxmodules: depend on the modmap contents
  • cmNinjaTargetGenerator: use `emplace_back` for scanning deps
  • Tests/CXXModules: test that objects depend on dependent modules json files
  • cmNinjaTargetGenerator: scanning depends on the module metadata
  • Tests/CXXModules: add a test to ensure that `restat` works for collation
  • Ninja: make the collator rule use `restat = 1`
  • Tests/CXXModules: document `CMake_TEST_MODULE_COMPILATION` items
  • Tests/CXXModules: support building a project with `Ninja`
  • Tests/CXXModules: add a test importing from a `Ninja` install
  • cmGeneratorTarget: store synthetic targets in its cache
  • Tests/CXXModules: add a test with transitive targets
  • cmTarget: copy link libraries from the right properties
  • Tests/CXXModules: test transitive modules usage
  • cmExportFileGenerator: export link libraries as-is
  • cmGeneratorTarget: discover synthetic targets recursively
  • Tests/CXXModules: test `cxx_std_20` coming from a dependency
  • Clang: detect -resource-dir for clang-scan-deps
  • Brad King (12):
  • Tests: Remove unnecessary RunCMake.cmake_language expected result files
  • cmake_language: Fix EXIT inside control flow blocks
  • librhash: aligned_alloc is not available with glibc < 2.15
  • Tests/CommandLength: Refactor test commands to reduce test run time
  • ci: update to WiX 3.14.0.8606 release
  • VS: Verify toolset version= field format more strictly
  • VS: Fix '-T version=14.40' under VS 17.10 preview 1
  • Tests: Fix BuildDepends on macOS arm64 without rosetta
  • Help: Modernize BUILD_SHARED_LIBS documentation
  • Tests: Update RunCMake.TargetObjects cmake_minimum_required version
  • Restore support for TARGET_OBJECTS in link interfaces with unity builds
  • CMake 3.29.0-rc2
  • Craig Scott (1):
  • Help: Advise calling option(BUILD_SHARED_LIBS) early enough
  • Johannes Schultz (1):
  • Help: Fix example for return command
  • Robert Maynard (1):
  • Help: Explicitly discourage absolute install destinations
  • Ruslan Baratov (1):
  • IPO: Support duplicate object names in large archives

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)

  • Ben Boeckel (8):
  • cmFileTimes: return status codes from APIs
  • cmFileCopier: remember error statuses and get their strings
  • errors: avoid constructing a stream before getting the last error
  • Tests/CXXModules: add a test which scans a PCH-using source
  • cmLocalGenerator: prevent scanning of PCH source files
  • cmNinjaTargetGenerator: PCH files do not need dyndep
  • Tests/CXXModules: import from an internal partition
  • Tests/CXXModules: enhance `internal-partitions` test
  • Brad King (5):
  • cmFileLockResult: Fix inclusion of windows.h when cross-compiling
  • LLVMFlang: Fix MSVC ABI debug information format options
  • cmGeneratorTarget: Add helper to check for known runtime artifact
  • cmComputeLinkInformation: Restore soname lookup for non-imported targets
  • CMake 3.28.0
  • Kyle Edwards (2):
  • libuv: win: honor NoDefaultCurrentDirectoryInExePath env var
  • libuv: win/spawn: run executables with no file extension
  • Marc Chevrier (1):
  • cmCMakePath: do not use std::filesystem::path with RH gcc-toolset-10
  • namniav (1):
  • cmCxxModuleMapper: Fix transitive requirements computation

New in CMake 3.27.9 (Nov 28, 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 17, 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 5 (Nov 16, 2023)

  • Brad King (9):
  • Tests: Avoid compiling call to dap::optional<dap::string>(nullptr)
  • cmList: Avoid using operator-> on input iterator
  • cmCTestBuildCommand: Avoid requiring complete cmGlobalGenerator type publicly
  • cmGlobalGeneratorFactory: Provide complete cmGlobalGenerator to deleter
  • cmCommonTargetGenerator: Factor out GetLinkedTargetDirectories loop body
  • cmComputeLinkInformation: Track targets named by TARGET_OBJECTS sources
  • cmComputeLinkInformation: Simplify recording OBJECT libraries as link items
  • cmCommonTargetGenerator: Drop unused local variable
  • CMake 3.28.0-rc5
  • Christoph Reiter (1):
  • FindOpenMP: Add support for openmp 5.1 (llvm 17) and 5.2
  • Kyle Edwards (1):
  • Xcode: Fix linking against .xcframework from static libraries
  • Martin Duffy (1):
  • cmGeneratorExpressionNode: Fix short-circuit logic
  • Robert Maynard (1):
  • FindCUDAToolkit: Search for cufile library name being lowercase

New in CMake 3.28.0 RC 3 (Oct 25, 2023)

  • Some of the more significant changes in CMake 3.28 are:
  • 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.
  • On Apple platforms, “.xcframework” folders are now supported.
  • The “exec_program()” command, which has been deprecated since CMake 3.0, has been removed by policy “CMP0153”. Use the “execute_process()” command instead.
  • 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.

New in CMake 3.28.0 RC 2 (Oct 18, 2023)

  • Ben Boeckel (6):
  • Tests/NinjaPrivateDeps: fix error message for Build-PrivateFileSet-check
  • cxxmodules: include `INCLUDES DESTINATION` directories
  • FlagTables: `-ifcOutput` takes a subsequent argument
  • FlagTables: Add entries for cl -scanDependencies flag
  • VS: Explicitly disallow C++ modules provided by imported targets
  • Tests/CXXModules: test Visual Studio synthetic target error
  • Brad King (5):
  • curl: Update script to get curl 8.4.0
  • curl: Set build options the way we need for CMake
  • Utilities: Update hard-coded try_compile results for curl 8.4.0
  • curl: Backport SOCKS5 heap buffer overflow fix from curl 8.4.0
  • CMake 3.28.0-rc2
  • Curl Upstream (1):
  • curl 2023-10-11 (d755a5f7)
  • Kyle Edwards (1):
  • execute_process(): Restore opening files relative to WORKING_DIRECTORY
  • Orkun Tokdemir (2):
  • Tests: Revert "NinjaMultiConfig: Update tests for the new dependency change"
  • Autogen: Revert "AUTO*_EXECUTABLE: add support for per-config values"
  • Zack Galbreath (1):
  • ctest: Restore support for http redirects during Submit step
  • scivision (1):
  • bootstrap: update known compilers
  • مهدي شينون (Mehdi Chinoune) (1):
  • PGI/NVHPC: Remove -Mipa compiler option for 23.3+

New in CMake 3.27.7 (Oct 12, 2023)

  • Changes made since CMake 3.27.6:
  • 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 20, 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

New in CMake 3.27.5 (Sep 15, 2023)

  • These versions 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.27.4 (Aug 24, 2023)

  • These versions 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.27.3 (Aug 17, 2023)

  • 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.27.2 (Aug 11, 2023)

  • Changes made since CMake 3.27.1:
  • 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 25, 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.27.0 RC 1 (Jun 8, 2023)

  • PGP sig by 2D2CEF1034921684

New in CMake 3.26.4 (May 18, 2023)

  • Changes made since CMake 3.26.3:
  • 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 5, 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 30, 2023)

  • 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
  • Swift: Restore compatibility with old C++ driver

New in CMake 3.26.1 (Mar 24, 2023)

  • Changes made since CMake 3.26.0:
  • 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
  • FindPython: ensure Stable ABI is correctly handled
  • Ninja: Restore detection of clang-cl showIncludes prefix
  • FindMatlab: add version/release map for R2023a

New in CMake 3.26.0 (Mar 14, 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.
  • The “cmake-file-api(7)” “codemodel” version 2 “target” object gained a new “fileSets” field and associated “fileSetIndex” field to “sources” objects.
  • The “$<BUILD_LOCAL_INTERFACE:…>” 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.3 (Mar 8, 2023)

  • Changes made since CMake 3.25.2:
  • 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 5 (Mar 1, 2023)

  • New Features:
  • Languages:
  • The “ASM_MARMASM” language was added to support the Microsoft ARM assembler language.
  • Command-Line:
  • The “cmake -E copy” command-line tool now supports a “-t” argument.
  • The “cmake -E copy_directory_if_different” command-line tool was added.
  • Configure Log:
  • 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.
  • File-Based API:
  • The “cmake-file-api(7)” “codemodel” version 2 “version” field has been updated to 2.5.
  • The “cmake-file-api(7)” “codemodel” version 2 “target” object gained a new “fileSets” field and associated “fileSetIndex” field to
  • “sources” objects.
  • The “cmake-file-api(7)” gained a new “configureLog” object kind that enables stable access to the “cmake-configure-log(7)”.
  • Commands:
  • The “add_custom_command()” and “add_custom_target()” commands now support “generator expressions” in their “COMMENT” option.
  • The “message()” command gained a “CONFIGURE_LOG” mode to record an entry in the “cmake-configure-log(7)”.
  • The “string(TIMESTAMP)” and “file(TIMESTAMP)” commands now support the “%z” and “%Z” specifiers for the time zone.
  • The “try_compile()” and “try_run()” commands gained a “LOG_DESCRIPTION” option specifying text to be recorded in the “cmake-configure-log(7)”.
  • The “try_compile()” and “try_run()” commands gained a “NO_LOG” option to skip recording a “cmake-configure-log(7)” entry.
  • Variables:
  • The “CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT” variable is now set for “GNU”, “MSVC”, and “AppleClang” compilers that have only one frontend variant.
  • A “CMAKE_VS_VERSION_BUILD_NUMBER” variable is now set by Visual Studio Generators for VS 2017 and above to report the four-component Visual Studio version number.
  • Properties:
  • The “<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR” target property was added to allow the “clang-tidy” tool to export its suggested fixes to a set of “.yaml” files. A new
  • “CMAKE_<LANG>_CLANG_TIDY_EXPORT_FIXES_DIR” variable was created to initialize this property.
  • The “XCODE_EMBED_EXTENSIONKIT_EXTENSIONS” target property was added to tell the “Xcode” generator to embed ExtensionKit-based extensions such as extensions using the Background Assets framework. Aspects of the embedding can be customized with:
  • “XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_PATH”
  • “XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_CODE_SIGN_ON_COPY”
  • “XCODE_EMBED_EXTENSIONKIT_EXTENSIONS_REMOVE_HEADERS_ON_COPY”
  • Modules:
  • The “ExternalProject” module’s “ExternalProject_Add()” command gained an “INSTALL_BYPRODUCTS” option to specify files generated by the “install” step.
  • The “FindCUDAToolkit” module:
  • Gained support for the “sbsa-linux” cross compilation target, and now provides an imported target for “nvrtc_static”, if found.
  • The “FindImageMagick” module now provides imported targets.
  • The “FindPython3” and “FindPython” modules gained support for the Stable Application Binary Interface.
  • The “UseSWIG” module gained support for the “perl5” language.
  • Generator Expressions:
  • The “$<BUILD_LOCAL_INTERFACE:…>” generator expression was added to prevent usage requirements from being exported to dependent projects.
  • CTest:
  • The “CTEST_NO_TESTS_ACTION” environment variable was added to provide a default value for the “–no-tests=<action>” command line argument of “ctest(1)”.
  • Deprecated and Removed Features:
  • The “CMakeFiles/CMakeOutput.log” and “CMakeFiles/CMakeError.log” files are no longer populated by CMake’s built-in modules. “cmake(1)” no longer suggests looking at them after a “CMake Error” occurs. Information previously logged to those files is instead logged to the “cmake-configure-log(7)”.
  • On CYGWIN, the undocumented “CMAKE_LEGACY_CYGWIN_WIN32” mode for compatibility with CMake versions older than 2.8.4 has been removed.
  • Other Changes:
  • Language Standard Flags, such as “-std=c++11”, when generated due to “target_compile_features()” or “CMAKE_<LANG>_STANDARD”, are now placed before flags added by “target_compile_options()”, rather than after them.
  • For all “COMPILE_DEFINITIONS” properties, any leading “-D” on an item is removed whether or not it was specified by a generator expression.
  • The “compile_commands.json” database enabled by “CMAKE_EXPORT_COMPILE_COMMANDS” now provides the “output” field in the compile commands objects. This allows multi-config generators, such as the “Ninja Multi-Config” generator, to provide the compile commands for all configurations.
  • The “USE_FOLDERS” global property is treated as “ON” by default.
  • 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.
  • The “cmake --trace” option now follows “try_compile()” and “try_run()” invocations.

New in CMake 3.26.0 RC 4 (Feb 22, 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 “$<BUILD_LOCAL_INTERFACE:…>” 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_<LANG>_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)

  • Changes made since CMake 3.25.1:
  • 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.1 (Dec 1, 2022)

  • Ben Boeckel (3):
  • Help/dev/experimental: document the msvc module map format
  • MSVC: don’t opt into dyndep support
  • Tests/FortranModules: add case for modules after “end interface X”
  • Brad King (7):
  • Tests: Update FindBoost.TestPython for Python 3.11 and 3.12
  • try_compile: Restore COPY_FILE with CMAKE_TRY_COMPILE_CONFIGURATION
  • MSVC: Revert “Teach find_library to consider the ‘libfoo.a’ naming convention”
  • Android: Revert setting LINUX variable on Android target systems
  • MinGW: Fix regression when windres is not found
  • Fortran: Restore support for parsing “end interface X”
  • CMake 3.25.1
  • Hannes Braun (1):
  • FindRuby: Remove documentation for non-existent Ruby_ROOT_DIR
  • Marc Chevrier (1):
  • XCode: ensure LINK_LIBRARY genex is usable with
  • XCODE_LINK_BUILD_PHASE_MODE
  • Oleksii Udod (1):
  • FindCUDA: Do not use CUDA_nppicom_LIBRARY in CUDA 11.0+
  • Robert Maynard (1):
  • FindCUDAToolkit: Handle toolkits that don’t provide nvptxcompiler
  • Zhong Ruoyu (1):
  • Check*: Restore support for arbitrary result variable names

New in CMake 3.25.0 (Nov 17, 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 <prefix>/<name>*/(cmake|CMake)/<name>*/ 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 <LANG>_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:
  • 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.
  • 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 <LANG>_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.

New in CMake 3.24.3 (Nov 1, 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<=1.10
  • Tests: Add case for ninja with non-ascii chars
  • CMake 3.24.3
  • Erlend E. Aasland (1):
  • CPack/IFW: Add support for QtIFW 4.4
  • Kyle Edwards (1):
  • CPack: Require no argument for --trace and --trace-expand
  • Marc Chevrier (1):
  • Apple: Fix regression when linking a framework with postfix
  • Michael Hirsch (3):
  • FindMatlab: Add MEX binary file suffix for Apple Silicon native Matlab
  • FindMatlab: add R2022b 9.13 version map
  • Intel/IntelLLVM: Fortran has distinct “-Werror”-like flag
  • Mika Fischer (1):
  • CPack/NSIS: Fix installer not waiting for uninstaller to finish
  • Robert Maynard (1):
  • CUDA: Add support for the two new architectures in 11.8
  • Sergiu Deitsch (2):
  • FindJNI: replace CMAKE_ANDROID_API by CMAKE_SYSTEM_VERSION
  • Android: Avoid searching API level directories matching architecture bitness
  • Zack Galbreath (1):
  • ctest: only report make-level errors when no others are found
  • مهدي شينون (Mehdi Chinoune) (2):
  • LLVMFlang: Add support for Windows
  • LLVMFlang: Add a required line to define linking rules on Windows

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

  • Some of the more significant changes in CMake 3.25 are:
  • 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 13, 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 17, 2022)

  • 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.23.2 (Aug 4, 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
  • code: Use ad-hoc signing during compiler id on macOS
  • code: Suppress "Run Script" build phase warning during compiler id
  • Tests: Teach RunCMake to ignore code DVTSDK warnings
  • EternalProject: Fi regression in stamp creation for code+iOS
  • Utilities/Release: Update macOS notarization script to use notarytool
  • gitlab-ci: update macOS jobs to use code 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(EPORT): 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 etra paths on the command line

New in CMake 3.22.6 (Jul 29, 2022)

  • Brad King (6):
  • 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
  • Utilities/Release: Update macOS notarization script to use notarytool
  • gitlab-ci: update macOS jobs to use Xcode 13.4
  • CMake 3.22.6
  • Eisuke Kawashima (1):
  • FindLAPACK: Add '-fortranlibs' flag only with NVHPC/PGI compilers

New in CMake 3.24.0 RC 4 (Jul 21, 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.24.0 RC 1 (Jun 15, 2022)

  • New Features:
  • Presets:
  • "cmake-presets(7)" files now support schema version "5".
  • "cmake-presets(7)" files now support a "${pathListSep}" macro, which expands to ":" or ";" based on the platform.
  • "cmake-presets(7)" files gained support for specifying a "testOutputTruncation" field in test presets, which specifies the
  • truncation mode once the maximum test output size has been reached.
  • Generators:
  • The "Green Hills MULTI" generator now generates build rules to re-run CMake if any CMake files are updated.
  • The Visual Studio Generators now support "SYSTEM" headers when using VS 2019 Update 11 or later.
  • Command-Line:
  • "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.
  • "cmake(1)" gained the "--compile-no-warning-as-error" command-line option which causes the effects of the "COMPILE_WARNING_AS_ERROR" target property and "CMAKE_COMPILE_WARNING_AS_ERROR" variable to be ignored.
  • The "cmake(1)" "--trace=json-v1" trace format gained fields "global_frame" and "line_end".
  • The "cmake(1)" "-E" commands "cat" and "env" learned to respect a double dash ("--") argument that acts as a delimiter indicating the end of options. Any following arguments are treated as operands/positional arguments, even if they begin with a dash "-" character.
  • The "cmake(1)" "-E tar" command gained the "--touch" option to keep the current local timestamp instead of extracting file timestamps from the archive.
  • Compilers:
  • LLVM's flang Fortran compiler is now supported on some platforms, with compiler id "LLVMFlang".
  • ADSP compiler support (SHARC and Blackfin) now covers both CCES and VDSP++ installations, with required configuration now done in the compiler module itself rather than the "Generic-ADSP" platform module.
  • Platforms:
  • A dedicated "ADSP" platform has been added to replace the existing "Generic-ADSP" implementation. This features automatic detection of the latest CCES/VDSP++ install and compiler selection ("cc21k" vs. "ccblkfn") based off of the "CMAKE_SYSTEM_PROCESSOR" variable.
  • Commands:
  • The "cmake_host_system_information()" command, on Windows, gained a "QUERY WINDOWS_REGISTRY" mode. See its Query Windows registry section.
  • The "cmake_language()" command gained a new "SET_DEPENDENCY_PROVIDER" sub-command. When a dependency provider
  • is set, calls to "find_package()" and "FetchContent_MakeAvailable()" can be redirected through a custom command, which can choose to fulfill the request directly, modify how the request is processed, or leave it to be fulfilled by the built-in implementation. SeeDependency Providers.
  • The "file(DOWNLOAD)" command gained options "RANGE_START" and "RANGE_END" to specify a range of bytes to download. This can be useful for downloading parts of big binary files.
  • 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.
  • The "find_package()" command gained a "GLOBAL" option that allows for the promotion of imported targets to global scope for the duration of the "find_package()" call.
  • The "if()" command gained the capability to compare paths by using the "PATH_EQUAL" operator. See policy "CMP0139".
  • Variables:
  • The "CMAKE_COLOR_DIAGNOSTICS" variable was added to control color diagnostics generated by compilers. This variable also controls color build system messages with Makefile Generators, replacing "CMAKE_COLOR_MAKEFILE".
  • The "CMAKE_COLOR_DIAGNOSTICS" environment variable was added to set a default value for "CMAKE_COLOR_DIAGNOSTICS".
  • 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 "CMAKE_CUDA_ARCHITECTURES" variable and associated "CUDA_ARCHITECTURES" target property now support the special
  • "native" value to compile for the architectures(s) of the host's GPU(s).
  • The "CMAKE_FIND_PACKAGE_TARGETS_GLOBAL" variable was added to toggle behavior of the "find_package()" command's new "GLOBAL" option.
  • The "CMAKE_FIND_USE_INSTALL_PREFIX" variable was added to toggle behavior of the "find_file()", "find_library()", "find_path()", "find_package()", and "find_program()" commands' new "NO_CMAKE_INSTALL_PREFIX" option.
  • The "CMAKE_PROJECT_TOP_LEVEL_INCLUDES" variable was added to allow injecting custom code at the site of the first "project()" call, after the host and target platform details have been determined.
  • The "CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES" variable was added to tell the "try_compile()" command not to pass any platform variables to the test project.
  • The "CMAKE_VERIFY_INTERFACE_HEADER_SETS" variable and corresponding "VERIFY_INTERFACE_HEADER_SETS" target property were added to enable build rules that verify all headers in header sets can be used on their own.
  • The "CMAKE_WATCOM_RUNTIME_LIBRARY" variable and "WATCOM_RUNTIME_LIBRARY" target property were introduced to select
  • the runtime library used by compilers targeting the Watcom ABI. See policy "CMP0136".
  • The "CMAKE_XCODE_XCCONFIG" variable and corresponding "XCODE_XCCONFIG" target property were added to tell the "Xcode"
  • generator to handle "xcconfig" files.
  • Properties:
  • The "INTERFACE_LINK_LIBRARIES_DIRECT" and "INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE" target properties were
  • added to express usage requirements affecting a consumer's direct link dependencies.
  • The "INTERFACE_HEADER_SETS_TO_VERIFY" target property was added to specify which header sets should be verified by
  • "VERIFY_INTERFACE_HEADER_SETS".
  • The "LINK_LIBRARIES" target property now supports the " " generator expression. See policy "CMP0131".
  • The "VS_DOTNET_STARTUP_OBJECT" target property was added to tell Visual Studio Generators which startup class shall be used when the program or project is executed. This is necessary when more than one "static void Main(string[])" function signature is available in a managed .NET project.
  • The "VS_NO_COMPILE_BATCHING" target property was added to tell Visual Studio Generators whether to disable compiler parallelism and call the compiler with one source file at a time.
  • Modules:
  • The "ExternalProject" module "ExternalProject_Add()" command gained a new "DOWNLOAD_EXTRACT_TIMESTAMP" option for controlling whether the timestamps of extracted contents are set to match those in the archive when the "URL" download method is used. Policy "CMP0135" was added to enable the option by default.
  • The "FetchContent" module and the "find_package()" command now support integration capabilities:
  • "FetchContent_MakeAvailable()" can now try to satisfy a dependency by calling "find_package()" first. A new
  • "FETCHCONTENT_TRY_FIND_PACKAGE_MODE" variable controls whether this is done by default for all dependencies, is opt-in per
  • dependency, or is disabled entirely.
  • "find_package()" can be re-routed to call "FetchContent_MakeAvailable()" instead. A new read-only
  • "CMAKE_FIND_PACKAGE_REDIRECTS_DIR" variable points to a directory where config package files can be located to facilitate these re- routed calls.
  • The "FindJNI" module now provides imported targets.
  • The "FindMatlab" module "matlab_add_mex()" function gained a "NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES" option to disable automatic linking of MATLAB libraries.
  • The "FindPkgConfig" module learned to find static libraries in addition to the default search for shared libraries.
  • "pkg_check_modules()" gained a "STATIC_TARGET" option to make the imported target reference static libraries.
  • The "FindZLIB" gained a new "ZLIB_USE_STATIC_LIBS" variable to search only for static libraries.
  • Generator Expressions:
  • The "LINK_LIBRARY" generator expression was added to manage how libraries are specified during the link step. The
  • "CMAKE__LINK_LIBRARY_USING_" and "CMAKE_LINK_LIBRARY_USING_" variables are used to define
  • features usable by the "LINK_LIBRARY" generator expression. Moreover, the "LINK_LIBRARY_OVERRIDE" and
  • "LINK_LIBRARY_OVERRIDE_ " target properties are available to resolve incompatible features.
  • The "LINK_LIBRARY" generator expression can link frameworks in various ways when targeting "Apple" platforms. The following
  • features were added:
  • "FRAMEWORK"
  • "NEEDED_FRAMEWORK"
  • "REEXPORT_FRAMEWORK"
  • "WEAK_FRAMEWORK"
  • The "LINK_LIBRARY" generator expression can link libraries in various ways when targeting "Apple" platforms. The following
  • features were added:
  • "NEEDED_LIBRARY"
  • "REEXPORT_LIBRARY"
  • "WEAK_LIBRARY"
  • The "LINK_LIBRARY" generator expression gained the feature "WHOLE_ARCHIVE" to force load of all members in a static library.
  • This feature is supported on the following target platforms:
  • all "Apple" variants
  • "Linux"
  • all "BSD" variants
  • "SunOS"
  • "Windows"
  • "CYGWIN"
  • "MSYS"
  • The "LINK_GROUP" generator expression was added to manage the grouping of libraries during the link step. The
  • "CMAKE__LINK_GROUP_USING_" and "CMAKE_LINK_GROUP_USING_" variables are used to define features usable with the "LINK_GROUP" generator expression. This release defines the "RESCAN" feature, which can be used to handle circular references among static libraries when using toolchains for Linux, BSD, SunOS and GNU toolchains for Windows.
  • The "PATH" generator expression was added to manage paths.
  • The "PATH_EQUAL" generator expression was added to manage path comparisons.
  • The "TARGET_BUNDLE_DIR_NAME" generator expression was added to evaluate to the name of the bundle directory for a given bundle target.
  • CTest:
  • "ctest(1)" gained a "--test-output-truncation" option (and corresponding "CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION" variable) to specify the truncation mode once the maximum test output size has
  • been reached. Possible values are "tail" (default), "middle" or "head".
  • CPack:
  • The "CPack WIX Generator" gained a new variable, "CPACK_WIX_ARCHITECTURE", to specify the installer architecture in
  • order to support computers running Windows for ARM.
  • CPack now supports the "CPACK_THREADS" option for "zstd" compression when compiled with libarchive 3.6 or higher. It is supported by official CMake binaries available on cmake.org.
  • Deprecated and Removed Features:
  • =======
  • The "CPack" module no longer enables the SLA by default in the "CPack DragNDrop Generator". See policy "CMP0133" and the
  • "CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE" variable.
  • The deprecated "CPack PackageMaker Generator" has been removed.
  • The "FindGLUT" module no longer provides the undocumented "GLUT_LIBRARY" and "GLUT_INCLUDE_PATH" result variables.
  • Other Changes:
  • CMake no longer sets environment variables like "CC", "CXX", etc. when enabling the corresponding language during the first CMake run in a build directory. See policy "CMP0132".
  • The "CheckIPOSupported" module "check_ipo_supported()" command now uses the caller's "CMAKE__FLAGS" and
  • "CMAKE__FLAGS_" values. See policy "CMP0138".
  • The "MSYS Makefiles" and "MinGW Makefiles" generators, when a compiler is not explicitly specified, now select the first compiler
  • (of any name) found in directories listed by the "PATH" environment variable.
  • The "try_compile()" command whole-project signature now propagates platform variables. See policy "CMP0137".
  • The "while()" command now diagnoses errors during condition evaluation. See policy "CMP0130".
  • The precompiled macOS binaries provided on cmake.org no longer attach a SLA to the ".dmg" packages. This was removed because macOS 12 deprecated the tools used to attach ".dmg" resources.

New in CMake 3.23.5 (Jun 3, 2022)

  • Brad King (10):
  • Tests: Teach RunCMake to ignore Xcode extension point warnings
  • gitlab-ci: update macOS jobs to use Xcode 13.3
  • FindPkgConfig: Fix preservation of ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS}
  • FortranCInterface: Fix failure with gfortran 12 and Clang
  • 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-gui: Restore support for internationalization with Qt5 on Windows
  • CMake 3.22.5
  • Gregor Jasny (1):
  • Tests: Ignore all classes in Xcode internal objc warnings
  • LibArchive Upstream (1):
  • LibArchive 2022-02-08 (673c1eae)

New in CMake 3.23.2 (May 31, 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.23.0 RC 5 (Mar 28, 2022)

  • Brad King (4):
  • Utilities/Release: Add "source" stage to Windows docker spec
  • Revert INTERFACE_LINK_LIBRARIES_DIRECT feature for 3.23 branch
  • Help: Clarify when add_test and test properties support generator expressions
  • CMake 3.23.0-rc5
  • Craig Scott (7):
  • Help: Clean up INITIALIZE_FROM_VARIABLE define_property() option
  • Help: Update the main purpose of define_property()
  • define_property(): Only test prefix if INITIALIZE_FROM_VARIABLE is given
  • Help: Add more detail for CPACK_PRODUCTBUILD_DOMAINS* variables
  • productbuild: Simplify internal CPACK_PRODUCTBUILD_DOMAINS usage
  • CPack: Avoid space / tab mix in productbuild distribution.xml template
  • productbuild: Don't write rootVolumeOnly attribute if writing domains
  • Kyle Edwards (1):
  • define_property(): Change constraints of INITIALIZE_FROM_VARIABLE
  • Marc Jeanmougin (2):
  • CPack/NSIS: Fix uninstall command when run from installer
  • CPack/NSIS: Add support for unquoted (legacy) uninstaller strings
  • Robert Maynard (2):
  • FindCUDAToolkit: Add missing cufftw_static target
  • Help: Better cross-reference CMAKE_FIND_NO_INSTALL_PREFIX
  • Øystein Sørensen (1):
  • Tutorial: Fix casing of reference to License.txt

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.23.0 RC 2 (Feb 24, 2022)

  • Some of the more significant changes in CMake 3.23 are:
  • “cmake-presets(7)” files now have an optional “include” field, which allows the files to include other files.
  • The Visual Studio Generators for VS 2019 and above learned to support .NET SDK-style project files (“.csproj”) for C# projects. See the “DOTNET_SDK” target property and corresponding “CMAKE_DOTNET_SDK” variable. “add_custom_command()” is not yet
  • supported in .NET SDK-style projects.
  • The IBM Open XL C/C++ compiler, based on LLVM, is now supported with compiler id “IBMClang”.
  • The MCST LCC compiler is now supported with compiler id “LCC”. See policy “CMP0129”.
  • The “install(TARGETS)” command gained a new “FILE_SET” argument, which can be used to install header file sets associated with a target.
  • The “target_sources()” command gained a new “FILE_SET” mode, which can be used to add headers as header-only source files of a target.
  • The “CMAKE_CUDA_ARCHITECTURES” variable and associated “CUDA_ARCHITECTURES” target property now support the “all”, and
  • “all-major” values for CUDA toolkit 7.0+.

New in CMake 3.22.2 (Jan 26, 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 9, 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(<string>)
  • 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/<arch> implicit object path
  • Robert Maynard (1):
  • GNUInstallDirs: Prefer system lib64 over conda lib when ambiguous

New in CMake 3.22.0 (Nov 22, 2021)

  • Antons Jelkins (2):
  • cmTimestamp: Declare component buffer before MinGW-specific code
  • MINGW-w64: Fix string(TIMESTAMP) build on 32bits.
  • Brad King (3):
  • libuv: Backport MinGW-w64 compilation fix to CMake 3.22 branch
  • IntelLLVM: Enable Fortran module rebuild avoidance in Makefile generators
  • CMake 3.22.0
  • Craig Scott (5):
  • Help: Add missing version details for Additional Test Measurements
  • Help: Improve cross-referencing of test LABELS and related features
  • Help: Clarify meaning of filter expression in gtest_discover_tests()
  • Tests: Fix and update wrongly named GoogleTest stdout file
  • gtest_discover_tests: Re-run PRE_TEST discovery on any arg change

New in CMake 3.22.0 RC 3 (Nov 13, 2021)

  • Alex Turbov (1):
  • Help: Add `versionadded` for `CPACK_RPM_REQUIRES_EXCLUDE_FROM` variable
  • Ben Boeckel (5):
  • cmCTestRunTest: get the default value from the environment
  • Tests/Environment: also test modifying ambient values
  • FindHDF5: fix variable name when querying `hdf5_hl`'s implib
  • FindHDF5: clear library output variables at the top of the module
  • FindHDF5: clear language-specific libraries list before discovery
  • Brad King (21):
  • MSVC: Refactor C compile features table for C90, C99, and C11
  • MSVC: Tolerate c_std_17 and c_std_23 features on older compiler versions
  • MSVC: Add support for C17
  • Help: Fix versionadded for VS 15 2017 instance selection
  • FindMPI: Fix finding PkgConfg for fallback
  • Help: Use lower-case names of sphinx directives
  • cmNinjaTargetGenerator: Replace "their" with "there" in comment
  • Ninja: Fix creation of Windows import library directory
  • GNUtoMS: Add search path for VS 2022 environment scripts
  • cmScanDepFormat: Accept P1689r4 files with version 1
  • cmGlobalVisualStudio8Generator: Refactor SetGeneratorPlatform
  • Help: Clarify TARGET_RUNTIME_DLLS behavior on imported targets
  • Ninja Multi-Config: Fix cross-config custom command dependency tracing
  • Ninja Multi-Config: Fix internal cross-config target dependency ordering
  • Ninja Multi-Config: Fix custom command target dependencies in cross-configs
  • cmVisualStudio10TargetGenerator: Refactor target framework selection
  • VS: Model a default target framework
  • VS: Default TargetFrameworkVersion to v4.7.2 for VS 2022
  • gitlab-ci: Re-organize Windows job tags
  • gitlab-ci: Update Windows jobs to VS 2022
  • CMake 3.22.0-rc3
  • Craig Scott (4):
  • Help: Clarify how PKG_CONFIG env var initializes cache vars
  • Help: Clarify valid versus supported values for CUDA_STANDARD
  • Help: Correct inaccuracies in wording for CMP0128
  • TI: Recognize invalid compiler option warning during try_compile()
  • Cristian Adam (2):
  • PCH: Fix REUSE_FROM when Debug and RelWithDebInfo configs differ
  • PCH: Fixed Ninja Multi-Config and REUSE_FROM for MSVC
  • Marc Aldorasi (1):
  • Help: Document that configure_file can create directories
  • Raul Tambre (2):
  • Help: Better explain CMAKE_<LANG>_EXTENSIONS_DEFAULT
  • CMP0128: Enable/disable extensions if standard same as default
  • Robert Maynard (1):
  • NVHPC: Support SYSTEM include directories
  • Thomas Dickerson (1):
  • CheckLinkerFlag: Set policies needed by the implementation
  • William R. Dieter (2):
  • IntelLLVM: Use MSVC linker with MSVC frontend variant
  • Fortran: Save frontend variant persistently for IntelLLVM
  • Yonggang Luo (1):
  • Help: Use stronger wording in rule about preset inheritance

New in CMake 3.21.4 (Nov 1, 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.22.0 RC 1 (Oct 14, 2021)

  • New Features:
  • Commands:
  • The cmake_host_system_information() command can now query OS identification variables from the /etc/os-release file.
  • The string(TIMESTAMP) command now supports the %V specifier for ISO 8601 week numbers.
  • Variables:
  • The CMAKE_BUILD_TYPE environment variable was added to provide a default value for the CMAKE_BUILD_TYPE variable.
  • The CMAKE_CONFIGURATION_TYPES environment variable was added to provide a default value for the CMAKE_CONFIGURATION_TYPES variable.
  • The CMAKE_INSTALL_MODE environment variable was added to tell install() rules (implemented by file(INSTALL)) to install symbolic links instead of copying of files.
  • The CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG and CMAKE_LINK_WHAT_YOU_USE_CHECK variables were added to control the linker flag and check used by the LINK_WHAT_YOU_USE target property.
  • The CMAKE_REQUIRE_FIND_PACKAGE_<PackageName> variable was added to turn a non-REQUIRED find_package() call into a REQUIRED one.
  • Properties:
  • The <LANG>_EXTENSIONS target property is now initialized to CMAKE_<LANG>_EXTENSIONS_DEFAULT, detected from the compiler. See CMP0128.
  • The VS_SETTINGS source file property is now supported for all source file types. Previously it worked only for non-built sources.
  • Modules:
  • The CMakeDependentOption module cmake_dependent_option() macro now supports full Condition Syntax. See policy CMP0127.
  • The FetchContent module now passes through the CMAKE_TLS_VERIFY, CMAKE_TLS_CAINFO, CMAKE_NETRC and CMAKE_NETRC_FILE variables (when defined) to the underlying ExternalProject sub-build. Previously, those variables were silently ignored by FetchContent.
  • The FindBLAS and FindLAPACK modules gained a BLA_SIZEOF_INTEGER option to find a BLAS/LAPACK whose ABI uses a specific integer size.
  • The FindJasper module now provides an imported target.
  • The FindMatlab module now provides imported targets.
  • The FindPkgConfig module gained a PKG_CONFIG_ARGN variable to specify arguments to pkg-config calls.
  • The GoogleTest module gtest_discover_tests() function gained a TEST_FILTER option to filter tests using --gtest_filter during test discovery.
  • The UseSWIG module, for Visual Studio Generators, can now use the swig tool to generate implicit dependencies.
  • CTest:
  • ctest(1) learned to recognize labels attached to a test at run time. Previously it was only possible to attach labels to tests at configure time by using the LABELS test property. See Additional Test Measurements for more information.
  • ctest(1) learned to be able to modify the environment for a test through the ENVIRONMENT_MODIFICATION property. This is allows for updates to environment variables based on the environment present at test time.
  • The ctest_memcheck() command now also generates a DynamicAnalysis-Test.xml file which may be used to submit test results to CDash.
  • CPack:
  • The CPack DEB Generator gained the option to set CPACK_DEBIAN_COMPRESSION_TYPE to zstd, which enables Zstandard compression for deb packages.
  • The CPack NSIS Generator gained a new CPACK_NSIS_IGNORE_LICENSE_PAGE variable to suppress the license page in the installer.
  • The CPack RPM Generator gained the CPACK_RPM_REQUIRES_EXCLUDE_FROM option to avoid scanning specific paths for dependencies.
  • Deprecated and Removed Features:
  • The Visual Studio 10 2010 generator is now deprecated and will be removed in a future version of CMake.
  • Other Changes:
  • The Compile Features functionality now correctly disables or enables compiler extensions when no standard level is specified and avoids unnecessarily adding language standard flags if the requested settings match the compiler's defaults.
  • The Compile Features functionality now ignores features for languages that are not enabled.
  • The Ninja Generators now implement the edit_cache target using ccmake(1) if available.
  • The Ninja and NMake Makefiles generators now use the MSVC -external:I flag for system includes. This became available as of VS 16.10 (toolchain version 14.29.30037).
  • The CPack NSIS Generator now requires NSIS 3.03 or later.

New in CMake 3.21.3 (Sep 22, 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 30, 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 29, 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_<LANG> 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.21.0 (Jul 16, 2021)

  • Alex Turbov (1):
  • CPack/DEB: Avoid overriding user-provided `postinst` and `postrm`
  • Brad King (6):
  • FindJPEG: Revert "Search for 'turbojpeg' and 'turbojpeg-static' too"
  • Tests: Fix RunCMake.try_compile C/CXX standards with IntelLLVM MSVC mode
  • Find{BLAS,LAPACK}: Avoid clobbering results when no vendor is requested
  • ci: Verify that Intel MKL is found when it is the only BLAS/LAPACK
  • Help: Clarify 'cmake --build' signature alternatives
  • CMake 3.21.0
  • Kyle Edwards (1):
  • file(GET_RUNTIME_DEPENDENCIES): Check architecture of dependencies
  • Lingkai Dong (1):
  • ARMClang: Fix regression in check for working compiler
  • Raul Tambre (1):
  • CMakeCCompilerId: Fix C standard detection in Clang and IntelLLVM MSVC mode
  • Sérgio Martins (1):
  • Help: Fix preset example cmakeMinimumRequired

New in CMake 3.21.0 RC 3 (Jul 9, 2021)

  • Ben Boeckel (2):
  • ci: update to 3.21.0-rc2 for CI usage
  • gitlab-ci: upload JUnit reports for builds
  • Brad King (9):
  • Help: Document VS generator support for Intel Fortran
  • DetermineCompiler: Restore identification of MSVC with no INCLUDE or LIB
  • Tests: Fix newline matching in several RunCMake.* cases
  • gitlab-ci: Rename CI config variable to avoid conflict with CMAKE_BUILD_TYPE
  • IntelLLVM: Fix C/C++ standard level flags on Windows
  • Help: Document when OBJC_STANDARD values as definition list
  • Help: Document when OBJCXX_STANDARD values were added
  • Help: Document when CUDA_STANDARD values were added
  • CMake 3.21.0-rc3
  • Craig Scott (3):
  • Help: Add missing versionadded 3.21 for file(RENAME) options
  • Help: Tighten install(SCRIPT) wording for ALL_COMPONENTS option
  • Help: Improve readability and accuracy of runtime deps-related content
  • Gregor Jasny (1):
  • Xcode: Ignore deprecated build system
  • Jean-Marc Hengen (1):
  • IAR: Use placeholders in linker and archiver rules
  • Kyle Edwards (1):
  • CMakePresets.json: Make --list-presets show presets with no generator
  • Marc Chevrier (1):
  • Makefiles: Normalize compiler-generated depfile paths
  • Michael Hirsch (3):
  • Help: Note C_STANDARD values added in CMake 3.21
  • Help: Note CXX_STANDARD values added vs. CMake version
  • Help: Note PROJECT_IS_TOP_LEVEL behavior w.r.t. ExternalProject
  • Robert Maynard (3):
  • Correct CUDAToolkit_VERSION_MINOR variable name typo
  • FindCUDAToolkit: Properly document the version support
  • Check*CompilerFlag: Do not set result as a normal variable too

New in CMake 3.21.0 RC 2 (Jul 1, 2021)

  • Alex Sweet (1):
  • CPack/RPM: Fix weak dep support
  • Ben Boeckel (1):
  • Help/CMP0102: mention the varible that controls CMP0102 warnings
  • Brad King (16):
  • bootstrap: Compile with _FILE_OFFSET_BITS=64 on Linux
  • Help: Remove unnecessary Sphinx versionadded markup in VS toolset selection
  • VS: Update v142 CL flag table for VS 17.0 Preview 1
  • Tests: Shorten RunCMake.GenEx-* case names
  • VS: Add Visual Studio 17 2022 generator
  • VS: Use 64-bit MSBuild in VS 2022
  • TestDriver: Avoid declaring local variable after statement
  • Help: Clarify 3.21 release note on supportedPlatforms
  • Help/dev/experimental: Link to published P1689R4
  • ci: update keyserver URL
  • ci: add freeglut to Debian and Fedora base images
  • curl: backport upstream fix to 7.77.0 regression
  • VS: Add ARM64EC to supported platforms for VS 16 and 17
  • DetermineCompiler: Restore identification of MSVC with no INCLUDE dirs
  • target_link_libraries: Restore transitive out-of-dir linking
  • CMake 3.21.0-rc2
  • Eisuke Kawashima (1):
  • FindOpenMP: Link with OpenMP flags on Fujitsu
  • FeRD (Frank Dana) (1):
  • Help: Add versionadded tags to cmake-generator-expressions(7)
  • Gregor Jasny (1):
  • ASM_NASM: Do not generate depfiles with YASM
  • KWSys Upstream (1):
  • KWSys 2021-06-28 (0648cb1a)
  • Marc Chevrier (2):
  • Help: UseJava reorganization
  • CMP0126: Add control for warnings
  • NAKAMURA Takumi (1):
  • Tests/RunCMake/Ninja.*: Sanitize NINJA_STATUS since we expect default behavior
  • Paul Zehner (1):
  • Fujitsu: Add IPO support for Fortran
  • Yuichiro Utsumi (2):
  • FujitsuClang: Set CMAKE_<LANG>_COMPILER_AR and CMAKE_<LANG>_COMPILER_RANLIB
  • FujitsuClang: Change LTO option from -flto=thin to -flto
  • Ðoàn Tr?n Công Danh (1):
  • Ninja: Fix LINK_WHAT_YOU_USE link flag placement

New in CMake 3.21.0 RC 1 (Jun 25, 2021)

  • New Features:
  • Presets:
  • "cmake-presets(7)" gained support for specifying the install prefix in a configure preset.
  • "cmake-presets(7)" gained support for conditional enabling of presets.
  • "cmake-presets(7)" gained support for a "${hostSystemName}" macro.
  • "cmake-presets(7)" gained support for omitting the "generator" and "binaryDir" fields.
  • Generators:
  • The Makefile Generators and the "Ninja" generator learned to add linker launcher tools along with the linker for "C", "CXX", "OBJC", and "OBJCXX" languages. See the "CMAKE_<LANG>_LINKER_LAUNCHER" variable and "<LANG>_LINKER_LAUNCHER" target property for details.
  • Languages:
  • CMake learned to support "HIP" as a first-class language that can be enabled via the "project()" and "enable_language()" commands.
  • "C_STANDARD", "OBJC_STANDARD", and the "Compile Features" functionality gained support for C17 and C23.
  • Source file extensions ".ixx" and ".cppm" are now treated as C++.
  • Command-Line:
  • "cmake(1)" gained the "--install-prefix <dir>" command-line option to specify the location of the install prefix.
  • "cmake(1)" gained the "--toolchain <path/to/file>" command-line option to specify a toolchain file.
  • "cmake(1)" "-E capabilities" output now contains for each generator a "supportedPlatforms" field listing platforms known to be supported in "CMAKE_GENERATOR_PLATFORM".
  • Messages printed to a terminal now may be colored by message type.
  • Compilers:
  • The Fujitsu compiler is now supported using compiler id "Fujitsu" in traditional ("Trad") mode, and compiler id "FujitsuClang" in "Clang" mode.
  • Platforms:
  • CMake now supports the MSYS runtime environment, much like CYGWIN.
  • File-Based API:
  • The "cmake-file-api(7)" "codemodel" version 2 "version" field has been updated to 2.3.
  • The "cmake-file-api(7)" "codemodel" version 2 gained a new "directory" object containing directory-level information. This includes a list of installers generated by the "install()" command.
  • Commands:
  • The "add_custom_command()" command "DEPFILE" option may now use "generator expressions", is now supported by Visual Studio Generators for VS 2012 and above, and is now supported by the "Xcode" generator.
  • The "add_custom_command(TARGET)" command (for Build Events) gained support for resolving target-dependent generator expressions.
  • The "build_command()" command gained a "PARALLEL_LEVEL" option.
  • The "file(COPY_FILE)" command was added to copy a single file.
  • The "file(GET_RUNTIME_DEPENDENCIES)" command gained new "POST_INCLUDE_FILES" and "POST_EXCLUDE_FILES" arguments.
  • The "file(REAL_PATH)" command gained the option "EXPAND_TILDE" to replace any leading tilde with the path to the user's home directory.
  • The "file(RENAME)" command learned to optionally capture failure in a result variable. It also gained a "NO_REPLACE" option to fail if the destination exists.
  • The "install()" command gained a new "IMPORTED_RUNTIME_ARTIFACTS" mode, which can be used to install the runtime artifacts of imported targets.
  • The "install()" command gained a new "RUNTIME_DEPENDENCY_SET" mode, which can be used to install runtime dependencies using "file(GET_RUNTIME_DEPENDENCIES)".
  • The "install(TARGETS)" command gained new "RUNTIME_DEPENDENCIES" and "RUNTIME_DEPENDENCY_SET" arguments, which can be used to install runtime dependencies using "file(GET_RUNTIME_DEPENDENCIES)".
  • The "install(SCRIPT|CODE)" command supports a new option "ALL_COMPONENTS" which allows the corresponding code to run for every component of a per component installation.
  • The "project()" command now sets variables "PROJECT_IS_TOP_LEVEL" and "<PROJECT-NAME>_IS_TOP_LEVEL" to indicate whether it was called in a top-level "CMakeLists.txt" file.
  • Variables:
  • The "CMAKE_TOOLCHAIN_FILE" environment variable was added to provide a default value for the "CMAKE_TOOLCHAIN_FILE" variable.
  • Properties:
  • The "IMPORTED_TARGETS" directory property was added to get a list of Imported Targets created in the current directory.
  • The "XCODE_EMBED_APP_EXTENSIONS" target property was added to tell the "Xcode" generator to embed app extensions such as iMessage sticker packs. Aspects of the embedding can be customized with the "XCODE_EMBED_APP_EXTENSIONS_PATH",
  • "XCODE_EMBED_APP_EXTENSIONS_CODE_SIGN_ON_COPY" and "XCODE_EMBED_APP_EXTENSIONS_REMOVE_HEADERS_ON_COPY" properties.
  • Modules:
  • The "FindBLAS" and "FindLAPACK" modules learned to support the serial "Fujitsu_SSL2" and parallel "Fujitsu_SSL2BLAMP" libraries.
  • The "FindDevIL" module now provides imported targets.
  • The "FindIconv" module now has version support.
  • The "FindIntl" module now has version support.
  • The "FindMPI" module learned to support "Fujitsu" and "FujitsuClang" in both host and cross compiling modes.
  • The "FindMsys" module was added to find MSYS installations. Like "FindCygwin", it is used automatically by some other find modules to locate UNIX-style tools on Windows.
  • The "FindOpenMP" module learned to support "Fujitsu" and "FujitsuClang".
  • The "FindVulkan" module gained imported targets "Vulkan::Headers" and "Vulkan::glslangValidator".
  • The "UseJava" module command "add_jar" gained a "RESOURCES" option to allow explicit naming of resources with non-optional namespace.
  • The "UseSWIG" module use now standard library naming conventions for the "CSharp" language. See policy "CMP0122".
  • The "UseSWIG" module now supports using the "swig" tool to generate implicit dependencies with the "Xcode" generator.
  • Generator Expressions:
  • A new "TARGET_RUNTIME_DLLS" generator expression was added.
  • CTest:
  • "ctest(1)" gained documentation for its ability to capture Additional Test Measurements.
  • "ctest(1)" learned to recognize files attached to a test at run time. Previously it was only possible to attach files to tests at
  • configure time by using the "ATTACHED_FILES" or "ATTACHED_FILES_ON_FAIL" test properties. See Additional Test Measurements for more information.
  • "ctest(1)" gained a "--output-junit" option to write test results to a JUnit XML file.
  • The "ctest_build()" command gained a "PARALLEL_LEVEL" option.
  • CPack:
  • The "CPack DragNDrop Generator" gained option "CPACK_DMG_FILESYSTEM" to control the ".dmg" filesystem.
  • The "CPack IFW Generator" now supports hyphens in names given to"cpack_ifw_configure_component()" or
  • "cpack_ifw_configure_component_group()" as "DEPENDS" or "DEPENDENCIES" arguments. This requires QtIFW 3.1 or later.
  • The "CPack NSIS Generator" gained a new "CPACK_NSIS_EXECUTABLE" variable to specify the "makensis" executable to use instead of the default one.
  • The "CPACK_CUSTOM_INSTALL_VARIABLES" variable was added to set variables in "cmake_install.cmake" script invocations made by CPack.
  • Deprecated and Removed Features:
  • =======
  • Undocumented "CMAKE_SYSTEM_NAME" version-stripping behavior has been removed entirely. If it is set by a "-D" flag or by a "toolchain file", it is left unaltered, even if it still contains a version number. Similar "CMAKE_HOST_SYSTEM_NAME" version-stripping behavior, also undocumented, has been moved earlier, before "project()" or "enable_language()" is called.
  • "ARMClang" cpu/arch compile and link flags are no longer added automatically based on the "CMAKE_SYSTEM_PROCESSOR" variable or the undocumented "CMAKE_SYSTEM_ARCH" variable. They must be specified explicitly. See policy "CMP0123".
  • Other Changes:
  • The "find_file()", "find_path()", "find_program()", and "find_library()" commands handle cache variables in the same way regardless how they are defined. See policy "CMP0125" for details.
  • The "find_file()", "find_path()", "find_program()", and "find_library()" commands gained the option "NO_CACHE" to store find result in normal variable.
  • The "foreach()" command now isolates loop variables in the loop scope. See policy "CMP0124" for details.
  • The "list()" command's "GET", "INSERT", "SUBLIST", and "REMOVE_AT" subcommands now error with invalid (i.e., non-integer) values are given as any of their index arguments based on the setting of policy "CMP0121".
  • The "set(CACHE)" command no longer removes a normal variable of the same name, if any. See policy "CMP0126".
  • "target_link_libraries()" calls referencing object libraries via the "TARGET_OBJECTS" generator expression now place the object files before all libraries on the link line, regardless of their specified order. See documentation on Linking Object Libraries via
  • $<TARGET_OBJECTS> for details.
  • The Ninja Generators now pass source files and include directories to the compiler using absolute paths. This makes diagnostic
  • messages and debug symbols more consistent, and matches the Makefile Generators.
  • The "NMake Makefiles" generator now encodes the generated makefiles as UTF-8 with a BOM when using "nmake" from VS 9 or above.
  • The Visual Studio Generators for VS 2010 and above now place per- source preprocessor definitions after target-wide preprocssor definitions. This makes VS consistent with the Ninja Generators and the Makefile Generators.
  • The precompiled binaries provided on cmake.org now support "liblzma" multi-threading. See the "CPACK_THREADS" and
  • "CPACK_ARCHIVE_THREADS" variables.

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 (May 3, 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)

  • Alexander Neumann (1):
  • Help: Add Q_NAMESPACE_EXPORT to CMAKE_AUTOMOC_MACRO_NAMES default values
  • Ben Boeckel (1):
  • FindHDF5: search for the new Fortran HL library name
  • Brad King (20):
  • gitlab-ci: Update Windows builds to MSVC 1928-169 toolset
  • FindIntl: Fix detection of intl built in to C library
  • GNUInstallDirs: Clarify that CMAKE_INSTALL_<dir> may be absolute
  • Tests: Teach RunCMake to ignore incidental 'Recompacting log' ninja output
  • Ninja Multi-Config: Fix crash on custom command config with no output
  • Tests: Add RunCMake helper to run a plain script
  • Help: CMAKE_APPLE_SILICON_PROCESSOR cannot be set in a toolchain file
  • gitlab-ci: Tell CDash when a test-ext job is done
  • Help: Document in add_library how to import libraries with SONAME
  • libarchive: Use uint8_t instead of u_char
  • Utilities/Release: Add script to generate a table of files
  • Utilities/Release: Add deprecation fields to File Table v1
  • UseSWIG: Transform swig depfile to match Ninja generator paths
  • ci: add jq and DevIL to Debian and Fedora base images
  • ci: Enable jq-based tests on Linux builds
  • BinUtils: Avoid clobbering a variable named without a private prefix
  • Makefiles: Fix dependency extraction with CUDA < 102 and host compiler
  • FindBLAS: Fix detection of OpenMP as dependency of BLA_STATIC
  • Restore support for backslashes in initial language-wide flags
  • CMake 3201
  • Craig Scott (7):
  • CPack: Validate and document NSIS branding text trim positions
  • Help: Custom OUTPUT and BYPRODUCTS genexes cannot refer to targets
  • Tests: Remove redundant files for configure_file() tests
  • Tests: Check host platform instead of target for running stat
  • Cleanup: Fix misspelt name of local C++ variable
  • Help: Clarify permission-related command options
  • Apple: Set CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG on non-macOS too
  • Haibo Huang (1):
  • Android: Fix search for binutils
  • Justin LaPolla (1):
  • Cray: Detect Fortran compiler version patch level if available
  • Kyle Edwards (3):
  • Ninja Multi-Config: Include configs in long CC scripts
  • autogen: Don't include SKIP_AUTOMOC files in depfile
  • Tests: Add test for Ninja automoc dependency cyle
  • Marc Chevrier (5):
  • Makefiles dependencies: normalize windows paths
  • CUDA Device link: Ensure all link options are correctly formatted
  • Genex: $<HOST_LINK:> and $<DEVICE_LINK:> must be usable in try_compile
  • FindMPI: avoid host link options to be propagated to device link step
  • UseSWIG: Run using policy settings from includer
  • Robert Maynard (3):
  • cmCommandLineArgument: correctly compute next parse index
  • CMakeDetermineCompilerABI: Revert "Parse library arch from versioned paths"
  • CMakeDetermineCompilerABI: Extract lib arch from implicit object file paths
  • Sibi Siddharthan (1):
  • FindIntl: Improve documentation formatting
  • mcc (1):
  • Help: Clarify IMPORTED_LOCATION documentation

New in CMake 3.20.0 (Apr 2, 2021)

  • Changes made since CMake 3.20.0-rc5:
  • Adriaan de Groot (1):
  • Help: Fix typos in presets schema field descriptions
  • Brad King (3):
  • CMP0118: Fix NEW behavior when looking up target sources
  • Help: Document CMP0118 requirement for boolean values
  • CMake 3.20.0
  • Craig Scott (1):
  • Help: CMAKE_NO_BUILTIN_CHRPATH applies to XCOFF too

New in CMake 3.20.0 RC 5 (Mar 22, 2021)

  • Brad King (8):
  • 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
  • gitlab-ci: remove redundant sphinx build from release-style CI jobs
  • gitlab-ci: Fix using VS 16.8 toolset under VS 16.9
  • FindPkgConfig: Restore preference for first pkg-config in PATH
  • Ninja: Do not recompact deps log in regeneration during a build
  • CMake 3.20.0-rc5
  • Michael Hirsch (1):
  • FindMatlab: R2021a version map
  • Sam Freed (2):
  • Fail at read-time if configurePreset field invalid
  • Tests: update tests to catch invalid configurePreset at read-time
  • William R. Dieter (1):
  • FindOpenMP: Use -Qiopenmp instead of -fiopenmp for IntelLLVM on Windows

New in CMake 3.19.7 (Mar 17, 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.20.0 RC 4 (Mar 12, 2021)

  • Brad King (5):
  • cmake-gui: Restore search bar case insensitivity
  • Cray: Enable explicit Fortran preprocessing for Ninja generator
  • Revert "Cray: Fix Cray compiler detection on new platforms"
  • Xcode: Restore support for spaces in framework names
  • CMake 3.20.0-rc4
  • Craig Scott (1):
  • Revert ExternalProject and FetchContent refactoring
  • Justin LaPolla (1):
  • Cray: Enable Cray compiler wrapper detection on all platforms
  • Silvio Traversaro (1):
  • FindMatlab: Fix Matlab_LIBRARIES for MCR

New in CMake 3.20.0 RC 3 (Mar 7, 2021)

  • Ben Boeckel (5):
  • FindOpenGL: handle GLX without GLVND
  • Help/guide: fix the remaining CMake install destinations
  • gitlab-ci: always upload test and release artifacts
  • gitlab-ci: allow some jobs to ignore failing tests on nightly runs
  • gitlab-ci: ignore failing tests for external IDE testing
  • Brad King (4):
  • gitlab-ci: update macOS jobs to use Xcode 12.4
  • Help: Document CMAKE_ANDROID_NDK_VERSION variable
  • Tests: Update RunCMake.Android for NDK r22
  • CMake 3.20.0-rc3
  • Haibo Huang (2):
  • Android: Detect NDK version number
  • Android: Do not use gold for ndk >= r22
  • Raul Tambre (2):
  • CMakeDetermineCompilerId: Test without COMPILER_ID_FLAGS if REQUIRE_SUCCESS
  • CMakeDetermineCompilerId: Fix REQUIRE_SUCCESS with multiple user flags
  • Robert Maynard (2):
  • HELP: Update compile-features documentation with missing compilers
  • PGI: Explicitly specify CMAKE_CXX98_STANDARD_COMPILE_OPTION

New in CMake 3.19.6 (Mar 1, 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.20.0 RC 2 (Feb 25, 2021)

  • Changes made since CMake 3.20.0-rc1:
  • Brad King (25):
  • Intel: Make explicit Fortran preprocessing under Ninja more robust
  • IntelLLVM: Make explicit Fortran preprocessing under Ninja more robust
  • bindexplib: remove stray debugging output when using llvm-nm
  • Utilities/Sphinx: Avoid converting -- to an en-dash
  • Help: Mention version 2 in cmake-presets(7)
  • Help: Link to tool-specific preset arguments from cmake-presets(7)
  • Help: Clarify role of binaryDir inheritance in cmake-presets(7)
  • Help: Fix CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS documentation
  • cmVisualStudio10TargetGenerator: Refactor per-source PCH logic
  • VS: Restore support for PCH in CXX but not C within once target
  • NAG: Fix using Fortran modules from their output directory
  • Tests: Clarify internal project name in RunCMake.GoogleTest cases
  • Tests: Remove explicit no-signing marks from BundleTest
  • Tests: Fix CTestTestCrash expected output on macOS arm64
  • Tests: Suppress failures on macOS arm64 due to separate Xcode signing phase
  • cmake: Document '--preset <preset>' form of the argument
  • cmake: Add support for '--build --prefix=<prefix>' form of the argument
  • ctest: Add support for '--prefix=<prefix>' form of the argument
  • ci: Use Qt macOS 10.13+ package for macOS build and test jobs
  • ci: update to sccache 0.2.15 on linux builds
  • Tests: Update for upstream ninja change to write status on stderr
  • ci: add sccache 0.2.15 custom build for aarch64-apple-darwin
  • gitlab-ci: rename macos build and test jobs to macos-x86_64
  • gitlab-ci: Add macos-arm64 jobs for Ninja and Xcode
  • CMake 3.20.0-rc2
  • Craig Scott (5):
  • FetchContent: Restore patch command support
  • CPackIFWInstaller: Avoid potential null pointer dereference
  • Autogen: Don't change the order of HEADERS array in AutogenInfo.json
  • ExternalProject: Fix misuse of IS_NEWER_THAN in timestamp checks
  • FetchContent: Don't update timestamps if files don't change
  • Daan De Meyer (1):
  • Tests: Fix ExternalProject CONFIGURE_HANDLED_BY_BUILD on 1s filesystems
  • Gregor Jasny (1):
  • DetermineCompiler: Fix copy-paste error in Intel Compiler detection
  • Kyle Edwards (7):
  • cmCustomCommand: Record value of CMP0116 at time of creation
  • Ninja: Use CMP0116 status recorded at time of custom command's creation
  • Tests: Test per-CC behavior of CMP0116
  • Tests: Test Qt autogen target with CMP0116 set to WARN
  • Help: Note that CMP0116 is recorded at the time of CC creation
  • CMakePresets.json: Remove undocumented support for comments
  • Tests: Remove comments from CMakePresetsTest/Good.json.in
  • Marc Chevrier (1):
  • Genex: LINK_LANGUAGE respects LINKER_LANGUAGE property
  • Michael Hirsch (2):
  • Help: Clarify preset name conflict rules in cmake-presets(7)
  • Help: Add build and test preset to examples in cmake-presets(7)
  • Michael Hirsch, Ph.D (1):
  • Help: Add internal links to if() docs
  • Robert Maynard (1):
  • CUDA: Improve error messages when CUDA compiler detection fails
  • Sankhesh Jhaveri (1):
  • cmake-gui: Restore search bar for cache view and environment dialog

New in CMake 3.20.0 RC 1 (Feb 16, 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.
  • 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 $<COMMAND_CONFIG:...> and $<OUTPUT_CONFIG:...> 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_<LANG>_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 <LANG>_CLANG_TIDY target property and the associated CMAKE_<LANG>_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 <bool> 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_<compName>_PACKAGE_ICON allow package icons to be specified by local files.
  • CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION and CPACK_NUGET_<compName>_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_<compName>_PACKAGE_LICENSE_FILE_NAME allow licenses to be specified by local files.
  • CPACK_NUGET_PACKAGE_LANGUAGE and CPACK_NUGET_<compName>_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_<LANG>_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_<compName>_PACKAGE_ICONURL have been deprecated; replace with a reference to a local icon file.
  • CPACK_NUGET_PACKAGE_LICENSEURL and CPACK_NUGET_<compName>_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 implementation of the ExternalProject module was significantly refactored. The patch step gained support for using the terminal with a new USES_TERMINAL_PATCH keyword as a by-product of that work.
  • The FetchContent module no longer creates a separate sub-build to implement the content population. It now invokes the step scripts directly from within the main project’s configure stage. This significantly speeds up the configure phase when the required content is already populated and up-to-date.
  • 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.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 17, 2020)

  • Starting with CMake 3.19.2 Apple ARM is now supported:
  • The “CMAKE_HOST_SYSTEM_PROCESSOR” is selected using “uname -m”Since this may vary based on CMake’s own architecture and that of
  • the invoking process tree, the “CMAKE_APPLE_SILICON_PROCESSOR”
  • variable or “CMAKE_APPLE_SILICON_PROCESSOR” environment variable may be set to specify a host architecture explicitly.
  • If “CMAKE_OSX_ARCHITECTURES” is not set, CMake adds explicit flags
  • to tell the compiler to build for the “CMAKE_HOST_SYSTEM_PROCESSOR” so the toolchain does not have to guess based on the process tree’s architecture.
  • Changes in 3.19.2 since 3.19.1:
  • 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 26, 2020)

  • Changes made since CMake 3.19.0:
  • 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 22, 2020)

  • Changes made since CMake 3.19.0-rc3:
  • Ben Boeckel (7):
  • Help/get_filename_component: clarify NAME_W[L]E summaries
  • clang-tidy: ignore `misc-no-recursion`
  • clang-tidy: ignore new warnings from newer versions
  • Tests/FindBoost/TestPython: support finding 3.8 and 3.9
  • ci: update to Fedora 33 for Linux builds
  • gitlab-ci: update Linux CI to use Fedora 33
  • gitlab-ci: use Fedora 33 to build sources
  • Brad King (8):
  • Utilities/Sphinx: Tell Sphinx that documentation is written in English
  • Ninja: Avoid cleandead with dyndep bindings for Fortran module dependencies
  • Xcode: Default to arm64 arch on Apple Silicon hosts during compiler id
  • Xcode: Extract CMAKE__COMPILER from compiler id with multiple archs
  • ci: install gmock in the Fedora 31 image
  • Suppress MSVC 14.28 C5105 warning triggered by Windows SDK
  • gitlab-ci: Update Windows builds to MSVC 19.28
  • CMake 3.19.0
  • Erlend Egeberg Aasland (2):
  • CPack/IFW: Add support for QtIFW 4.0
  • CPack/IFW: Locate the archivegen utility
  • Gusts Kaksis (1):
  • Xcode: Clean library paths to avoid linker duplicate symbol definitions
  • Haibo Huang (1):
  • Android: Use NDK_KNOWN_DEVICE_ABI{32,64}S instead of NDK_DEFAULT_ABIS
  • Marc Chevrier (1):
  • FindPython: Fix version range tests
  • Michael Hirsch (1):
  • Help: MSVC now has C standard level flags
  • Miro Hroncok (1):
  • FindPython{Interp,Libs}: Add support for version 3.10
  • Nikita Nemkin (1):
  • Help: Fix `.. versionadded` directives in environment variable docs
  • Silvio Traversaro (1):
  • FindRuby: Consider more VS runtime suffix combinations
  • Tobias Ribizel (1):
  • CTest: Rename CudaMemcheck to CudaSanitizer

New in CMake 3.19.0 RC 3 (Nov 7, 2020)

  • Ben Boeckel (1):
  • CheckSourceRuns: do not fail on unrecognized arguments
  • Brad King (4):
  • FindBoost: Avoid leaking internal Boost_ROOT setting
  • Help: Add 3.19 release note about CUDA support on QNX
  • cmake-gui: Restore workaround for crash in file dialog
  • CMake 3.19.0-rc3
  • Craig Scott (1):
  • Help: Clarify variables specifying scripts to execute during packaging
  • Gusts Kaksis (1):
  • Xcode: Inherit target library and framework search paths from project
  • Kyle Edwards (1):
  • CMakePresets.json: Don't warn if no path argument is given
  • Marc Chevrier (1):
  • cmake_path: remove new command from 3.19
  • Pavel Cernohorsky (1):
  • FindPostgreSQL: support version 13
  • Peter Steneteg (1):
  • Help: Clarify string(JSON) error handling
  • Tobias Ribizel (2):
  • CTest: Add cuda-memcheck to Dart and CTest module
  • Help: Add cuda-memcheck to CTest documentation
  • Tor Arne Vestbø (1):
  • Apple: Update SDK architecture detection for tbd file version 4
  • janbernloehr (1):
  • CUDA: Enable support on QNX

New in CMake 3.19.0 RC 2 (Oct 29, 2020)

  • Ben Boeckel (3):
  • ci: use a patched sccache on macOS
  • ci: update to use CMake 3.18.4
  • ci: update to Qt 5.15.1
  • Ben McMorran (1):
  • Help: Add JSON schema for CMakePresets.json
  • Brad King (12):
  • cmake-gui: Attach icons only to main GUI executables
  • clang-format: Fix include block order in ctest.cxx and cpack.cxx
  • cmConsoleBuf: Factor out cout/cerr console buffer management
  • Tests: Add cases for CheckSource{Compiles,Runs} bad arguments
  • Fix regression in test/install/package configuration selection
  • CMP0111: Clarify that the new error is on a missing property setting
  • find_package: Fix regression in searching root prefix
  • ci: add Python to PATH on Windows
  • FindBoost: Honor Boost_NO_SYSTEM_PATHS when finding upstream BoostConfig
  • FindBoost: Honor BOOST_ROOT when finding upstream BoostConfig
  • FindRuby: Restore compatibility variable RUBY_VENDORLIB_DIR
  • CMake 3.19.0-rc2
  • Craig Scott (1):
  • Help: Cleanup typos and grammar for the 3.19 release
  • Cristian Adam (1):
  • file(CONFIGURE): Allow angle brackets in content
  • Deniz Bahadir (1):
  • add_custom_command: Properly recognize if sources depend on config
  • Felipe Torrezan (1):
  • IAR: Use .o object file extension with IAR-Ilink toolchains
  • Gusts Kaksis (1):
  • Xcode: Fix regression that automatically links libraries in source list
  • Issam E. Maghni (2):
  • bootstrap: add samu as known ninja processors
  • bootstrap: add smake as known make processors
  • Johnny Jazeix (1):
  • cmake: Fix '-E cat' command for binary files on Windows
  • Kyle Edwards (21):
  • Help: Fix invalid code-block in cmake(1) manual
  • CMake GUI: Disable preset fields instead of hiding them
  • Help: Move CMakePresets.json documentation into a separate file
  • Help: s/unusedVars/unusedCli/
  • Help: Move vendor field into example
  • Help: Show multiple ways of doing cacheVariables
  • Help: Show environment field
  • Help: Add documentation for debug field
  • Help: Add inheritance to CMakePresets.json example
  • Help: Make architecture and toolset descriptions generic
  • Help: Clarify purpose of warnings and errors
  • Tests: Add JSON schema validation to CMakePresets.json tests
  • CI: Install jsonschema for schema testing
  • CMakePresets.json: Properly report macro expansion errors
  • CMakePresets.json: Allow boolean for cache variable value
  • CMakePresets.json: Add ${sourceDirName} macro
  • CMakePresets.json: Split cmakeGeneratorConfig field
  • CMakePresets.json: Rework how --preset argument is handled
  • Ninja Multi-Config: Don't try to calculate dependencies for "all"
  • ccmake: Don't list --preset in --help
  • CMake GUI: Add --browse-manual argument
  • Marc Chevrier (2):
  • FindPython: Add support of version 3.10
  • cmake_path: Enhance documentation
  • Michael Hirsch (1):
  • CheckSource{Runs,Compiles}: Fix default Fortran source extension
  • Raul Tambre (1):
  • VS: Don't compute CUDA options unless necessary
  • Robert Bozzetto (1):
  • separate_arguments: Fix crash on *_COMMAND with no arguments
  • Robert Maynard (3):
  • cmake: command arguments which use '=' behave consistently
  • Modules: Do not implicitly add new functions via old Check Modules
  • CUDA: Use MSVC version to determine supported C++ standard levels
  • Volker Jacht (1):
  • VS: Remove flag table entries for Fortran /Z* flags

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 22, 2020)

  • Changes made since CMake 3.18.1:
  • 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.18.0 (Jul 16, 2020)

  • The “CUDA” language can now be compiled using Clang on non-Windows platforms. Separable compilation is not yet supported on any platform.
  • “cmake(1)” gained support for profiling of CMake scripts through the parameters “–profiling-output” and “–profiling-format”.
  • The “add_library()” and “add_executable()” commands learned to create Alias Targets referencing non-“GLOBAL” Imported Targets.
  • The “cmake_language()” command was added for meta-operations on scripted or built-in commands, starting with a mode to “CALL” other commands, and “EVAL CODE” to inplace evaluate a CMake script.
  • The “file(CONFIGURE)” subcommand was created in order to replicate the “configure_file()” functionality without resorting to a pre-existing file on disk as input. The content is instead passed as a string.
  • The “find_program()”, “find_library()”, “find_path()” and “find_file()” commands gained a new “REQUIRED” option that will stop processing with an error message if nothing is found.
  • A “CMAKE_CUDA_ARCHITECTURES” variable was added to specify CUDA output architectures. Users are encouraged to use this instead of specifying options manually, as this approach is compiler-agnostic.
  • The variable is initialized automatically when “CMAKE_CUDA_COMPILER_ID” is “NVIDIA”. The variable is used to initialize the new “CUDA_ARCHITECTURES” target property. See policy “CMP0104”.
  • The “UNITY_BUILD_MODE” target property was added to tell generators which algorithm (“BATCH”, “GROUP”) to use for grouping included source files.
  • The “CheckLinkerFlag” module has been added to provide a facility to check validity of link flags.
  • The “$<DEVICE_LINK:…>” and “$<HOST_LINK:…>” “generator expressions” were added to manage device and host link steps.
  • The “$<LINK_LANGUAGE:…>” and “$<LINK_LANG_AND_ID:…>” “generator expressions” were added. “ctest(1)” gained a new “CTEST_RESOURCE_SPEC_FILE” variable, which can be used to specify a resource specification file.
  • “ccmake(1)” learned to read a “CCMAKE_COLORS” environment variable to customize colors.
  • On Windows, the “Ninja” and “Ninja Multi-Config” generators, when a compiler is not explicitly specified, now select the first compiler (of any name) found in directories listed by the “PATH” environment variable.

New in CMake 3.17.3 (Jun 1, 2020)

  • Andreas Schönle (1):
  • PCH: Fix REUSE_FROM in multi-config generators
  • Ben Boeckel (1):
  • ExternalProject: expose _ep_cache_args_script to the caller
  • Boris Basic (1):
  • FindBoost: Add 1.73 to known versions
  • Brad King (14):
  • bootstrap: Use 'tr' more portably
  • FindBoost: Update MinGW compiler tag for Boost 1.73
  • CheckLanguage: Fix forwarding of CMAKE_CUDA_HOST_COMPILER
  • Help: Add 3.17 release note for FindPkgConfig '-isystem' fix
  • FindGTK2: Add harfbuzz target for dependency from pango
  • VS: Fix using PCH from source with COMPILE_OPTIONS
  • XL: Install our Fortran 'cpp' helper script with execute permission
  • MSVC: Use 'pragma system_header' in PCH only on cl 19.13 and above
  • Help: Document OBJC and OBJCXX env vars for Objective C/C++ compilers
  • Objective C/C++: Honor CC and CXX env vars to select compiler
  • Help: Add 3.17.3 release note for Objective C/C++ compiler selection
  • cmGeneratorTarget: Clear AllConfigSources in ClearSourcesCache
  • VS: Restore .sln support for VS Version Selector
  • CMake 3.17.3
  • Jennifer Green (2):
  • cm_cxx_features: Filter out libhugetlbfs warnings
  • cm_cxx_features: Filter out 'icpc: command line warning #10121'
  • Jonathan Verner (1):
  • CPack-deb: don't add a line with a dot to pkg desc
  • Kyle Edwards (1):
  • Ninja Multi-Config: Make "install" targets depend on default configs
  • Marc Chevrier (4):
  • FindPython: fix error on FPHSA call
  • FindPython: ensure any specified version is correctly handled
  • FindPython: use CMAKE specific variables to look-up debug library
  • Help: clarify add_definitions() and add_compile_definitions() behavior
  • Robert Maynard (5):
  • Help: Correct CMAKE_CUDA_RUNTIME_LIBRARY applicability
  • CUDA: Propagate CMAKE_CUDA_RUNTIME_LIBRARY state to try_compile
  • CUDA: Compute CMAKE_CUDA_RUNTIME_LIBRARY default from toolchain
  • Tests: Add coverage of ctest_test RETURN_VALUE and REPEAT
  • CTest: Make sure NOT_RUN tests show up in the failed test log
  • Rolf Eike Beer (1):
  • FindPkgConfig: also handle "-isystem" prefixes for include directories
  • Vitezslav Cizek (1):
  • FindOpenSSL: Detect OpenSSL 3.0.0

New in CMake 3.17.2 (Apr 29, 2020)

  • Alexander Grund (3):
  • BoostScanDeps: Fix typo in numpy handling
  • FindBoost: Simplify Boost_VERSION_STRING comparisons
  • FindBoost: Add support for Boost 1.73
  • Alexandru Croitor (1):
  • iOS: Fix detection of supported SDK architectures
  • Ben Boeckel (2):
  • FindPython: avoid autoderef in version comparisons
  • FindPython: remove extra dereference
  • Brad King (7):
  • AIX: Activate symbol export/import IBM i (OS400)
  • Ninja: Document that Fortran support is available with Ninja 1.10+
  • CPack: Do not recurse through directory symlinks
  • target_precompile_headers: Fix documented example using genex
  • Makefiles: Scan Objective C/C++ preprocessor dependencies
  • Makefiles: Add Objective C/C++ compilations to compile_commands.json
  • CMake 3.17.2
  • Chuck Atkins (1):
  • FindMPI: Add the pgi compiler wrapper names used by IBM Spectrum MPI
  • Craig Scott (4):
  • Help: Fix unescaped asterisks in docs for SKIP_PRECOMPILE_HEADERS
  • Help: Minor grammar cleanups of CMAKE_CURRENT_FUNCTION* docs
  • Help: Add cross-references for CMAKE_CURRENT_FUNCTION* docs
  • Help: Improve wording of CMAKE_CURRENT_FUNCTION_LIST_DIR docs
  • Gregor Jasny (1):
  • Apple: Merge per-arch sysroot parameters if all are the same
  • Harry Mallon (1):
  • file(UPLOAD): Add default ca_certs
  • Kyle Edwards (1):
  • Ninja: Remove config suffix from order-only target
  • Marc Chevrier (2):
  • FindPython: fix python compiler validation
  • FindPython: fix reason failure propagation
  • Orgad Shaneh (1):
  • FindBoost: Prevent warning with boost 1.73
  • Robert Maynard (1):
  • FindCUDAToolkit searches stub location last

New in CMake 3.17.1 (Apr 10, 2020)

  • Ben Boeckel (1):
  • ExternalProject: allow `DOWNLOAD_NO_EXTRACT OFF`
  • Brad King (15):
  • Makefiles: Fix silencing of nested calls for GNU make 4.3
  • VS: Fix ClangCL toolset compiler path detection
  • Ninja Multi-Config: Fix MSVC showincludes prefix detection
  • CheckIPOSupported: Avoid polluting cache with common name 'result'
  • CTest: Fix reported duration on timeout when grindchild keeps pipes open
  • target_link_libraries: Fix regression in case of $ genex
  • AIX: Install ExportImportList script with execute permission
  • XL: C++14 language level flags are only available on Linux
  • XL: Add comment clarifying why we pretend it has full C++11/14 support
  • CPack/NSIS: Document and check requirement of at least NSIS 3.0
  • Utilities/Release: Update to openssl 1.1.1f
  • Apple: Improve handling of missing SDKs in CMAKE_APPLE_ARCH_SYSROOTS
  • Apple: Fix mapping CMAKE_APPLE_ARCH_SYSROOTS to custom OSX_ARCHITECTURES
  • cmCursesLongMessageForm: Factor out helper to draw message to form
  • CMake 3.17.1
  • Craig Scott (5):
  • Help: Minor typos and formatting for XCODE_SCHEME_WORKING_DIRECTORY
  • Help: Add missing XCODE_SCHEME_WORKING_DIRECTORY
  • Help: Fix inaccuracies and omissions in MACHO_* property docs
  • Help: Fix CMAKE_FIND_DEBUG_MODE list formatting
  • Help: Improve discoverability of CMAKE_FIND_DEBUG_MODE
  • Francisco Facioni (1):
  • cmake-gui: Fix use-after-free in Open-possible check
  • Jaak Ristioja (1):
  • Help: Fixed typo in CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst
  • Kyle Edwards (2):
  • Help: Move Ninja Multi-Config variable details into their respective pages
  • Ninja: Make config uppercase in object order target
  • Lucas Wang (1):
  • llvm-rc: Enable preprocessing if CMAKE_RC_COMPILER_INIT is an absolute path
  • Marc Chevrier (3):
  • FindPython: misc. fixes
  • FindPython: fix variable spelling error
  • FindPython: fix handling when FIND_VIRTUALENV == FIRST
  • Sylvain Joubert (1):
  • ccmake: Use incremental rendering for the logs
  • Thomas Bernard (4):
  • llvm-rc: Select preprocessor from active languages
  • llvm-rc: Write depfile to location specified by the generator
  • llvm-rc: Print stderr output when calling tools through cmake_llvm_rc
  • llvm-rc: Restore include path for data after explicit preprocessing

New in CMake 3.17.0 (Mar 21, 2020)

  • Brad King (2):
  • export: Fix use-after-free on multiple calls overwriting same FILE CMake 3.17.0
  • Err0rC0deX (1):
  • GetPrerequisites: Classify vcruntime libraries as system
  • FeRD (Frank Dana) (2):
  • Help: Add missing word in AUTOGEN_TARGET_DEPENDS.rst
  • Help: Expand discussion of GENERATED / BYPRODUCTS
  • Kyle Edwards (2):
  • Help: Fix documentation of --trace-format parameter
  • cmake: List valid values for --trace-format on the command line
  • Marc Chevrier (1):
  • FindPython: fix regression on version validation
  • Michael Hirsch, Ph.D (1):
  • FindMatlab: Add R2020a=9.8
  • Rolf Eike Beer (1):
  • FindThreads: Improve documentation

New in CMake 3.17.0 RC3 (Mar 13, 2020)

  • “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.
  • 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”.
  • 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 “FindCUDAToolkit” module was added to find the CUDA Toolkit without enabling CUDA as a language.
  • “cmake(1)” gained a “–debug-find” command-line option to enable additional human-readable output on where “find_*” commands search.
  • 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 “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 “FindPython” module has learned to find Python components in active virtual environments managed by “conda”.
  • The “ctest(1)” tool gained a “–no-tests=<[error|ignore]>” 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”.
  • 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 “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.
  • “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.

New in CMake 3.16.5 (Mar 6, 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.17.0 RC2 (Mar 3, 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() learned a new option ZIP_LISTS 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.
  • 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_<LANG>_COMPILER_LAUNCHER variable, if not set explicitly, now takes its initial value from the CMAKE_<LANG>_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 and XCODE_SCHEME_ENVIRONMENT 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 disbale 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 $<INSTALL_PREFIX> generator expression can be used to set the directory relative to the install-time prefix.
  • Target properties OSX_COMPATIBILITY_VERSION and OSX_CURRENT_VERSION were added to set the compatibility_version and curent_version respectively on macOS. 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.
  • 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 <cfg>.
  • The ctest(1) gained support for Dr. Memory to run memcheck runs.
  • The ctest(1) tool gained a --no-tests=<[error|ignore]> 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 <mode>:<n> option to specify conditions in which to repeat tests. This generalizes the existing --repeat-until-fail <n> option to add modes for until-pass and after-timeout.
  • The ctest_test() command gained a REPEAT <mode>:<n> option to specify conditions in which to repeat tests.
  • CPack:
  • The CPack DragNDrop Generator learned to use the CPACK_DMG_<component>_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, <language>.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 option CPACK_PRODUCTBUILD_BACKGROUND 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.17.0 RC1 (Feb 14, 2020)

  • Some of the more significant changes in CMake 17 are:
  • “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.
  • 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”.
  • 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 “FindCUDAToolkit” module was added to find the CUDA Toolkit without enabling CUDA as a language.
  • “cmake(1)” gained a “–debug-find” command-line option to enable additional human-readable output on where find commands search.
  • 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 “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 “FindPython” module has learned to find Python components in active virtual environments managed by “conda”.
  • The “ctest(1)” tool gained a “–no-tests=<[error|ignore]>” 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”.
  • 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 “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.
  • “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.

New in CMake 3.16.4 (Feb 7, 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.2 (Jan 6, 2020)

  • 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
  • PCH: Append pch header file to list of forced include files
  • Tests: Fix testCTestResourceSpec struct initialization for some compilers

New in CMake 3.16.0 (Nov 27, 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 searching
  • "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH" - Controls the searching the cmake-specific environment variables.
  • "CMAKE_FIND_USE_CMAKE_PATH" - Controls the searching the cmake-specific cache variables.
  • "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH" - Controls the searching cmake platform specific variables.
  • "CMAKE_FIND_USE_PACKAGE_ROOT_PATH" - Controls the searching of"_ROOT" variables.
  • "CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH" - Controls the searching the standard system environment variables.
  • The "find_package()" command has learned to check the following variables to control searching
  • "CMAKE_FIND_USE_PACKAGE_REGISTRY" - Controls the searching the cmake user 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.
  • 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 "FindP 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 serialize 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.
  • Changes made since CMake 3.16.0-rc4:
  • Brad King (4):
  • Xcode: Set source file type for Objective C/C++
  • FindwxWidgets: Fix finding both release and debug libs
  • CMakeParseImplicitIncludeInfo: Remove all CR chars from compiler output
  • CMake 3.16.0
  • Craig Sturdy (1):
  • FindwxWidgets: Find wxQt debug libraries
  • Cristian Adam (2):
  • Unity: No repeated path for internal generated unity files
  • FindODBC: Add library name for MinGW toolchains
  • Kyle Edwards (3):
  • CTest: Add version field to resource spec file
  • CTest: Clarify that resource requirements can be split
  • Help: Clarify how tests are run if no resource spec file is specified

New in CMake 3.15.5 (Nov 5, 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)

  • Brad King (10):
  • VS: Tell VS 16.4 not to verify SYMBOLIC custom command outputs
  • Tests: Teach RunCMake to support a custom working directory
  • Tests: Revise RunCMake.add_subdirectory ExcludeFromAll to avoid globbing
  • Tests: Clarify target names in RunCMake.add_subdirectory ExcludeFromAll
  • Makefiles: Revert "Make build root targets ... recursive"
  • Restore "all" target in subdirectories marked EXCLUDE_FROM_ALL
  • Help: Add release note for EXCLUDE_FROM_ALL fix in 3.14.7
  • Help: Add release note for EXCLUDE_FROM_ALL fix in 3.15.4
  • Help: Mention 3.14.7 EXCLUDE_FROM_ALL fix in 3.15.4 release note
  • CMake 3.15.4
  • LE GARREC Vincent (1):
  • Help: Document VS 2019 toolset in MSVC_TOOLSET_VERSION

New in CMake 3.15.3 (Sep 19, 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.2 (Aug 13, 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.1 (Jul 29, 2019)

  • Betsy McPhail (1):
  • CTest: Generate Done.xml before calculating its hash
  • Brad King (7):
  • VS: Place intermediate files in the "ASM List Location" next to objects
  • MSVC: Document behavior when MSVC_RUNTIME_LIBRARY is not set
  • Clang: For MSVC ABI do not use modes older than C++14
  • Tests: Revert "require C++14 for the Tutorial"
  • Makefile: Fix regression in dependencies on relative includes
  • Help: Add 3.15.1 release notes
  • CMake 3.15.1
  • James Butler (2):
  • IRSL: Fix typo in v143 toolset version check
  • IRSL: Fix discovery of VS 2019 v141 toolset redistributables
  • Marc Chevrier (1):
  • FindPython: ensure interpreter is founded when cross-compiling
  • Marek Antoniak (1):
  • Fix allocation in CROSSCOMPILING_EMULATOR evaluation
  • Robert Maynard (2):
  • FindMPI: Updated to use INTERFACE_LINK_OPTIONS
  • FindMPI: make sure computed link flags are not de-duplicated
  • Saleem Abdulrasool (5):
  • Support per-language library link flags
  • Swift: Add library search paths for dependencies
  • Swift: add rules for static linking
  • Swift: support multithreaded compilation
  • Swift: support SONAME on ELFish targets

New in CMake 3.15.0 (Jul 22, 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 <prefix>_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 <library_name> for python language or -dllimport <library_name> 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.
  • The $<CUDA_COMPILER_ID:...> and $<CUDA_COMPILER_VERSION:...> generator expressions were added.
  • The $<COMPILE_LANG_AND_ID:...> generator expression was introduced to allow specification of compile options for target files based on the CMAKE_<LANG>_COMPILER_ID and LANGUAGE of each source file.
  • A $<FILTER:list,INCLUDE|EXCLUDE,regex> generator expression has been added.
  • A $<REMOVE_DUPLICATES:list> generator expression has been added.
  • The $<SHELL_PATH:...> generator expression gained support for a list of paths.
  • New $<TARGET_FILE*> generator expressions were added to retrieve the prefix, base name, and suffix of the file names of various artifacts:
  • $<TARGET_FILE_PREFIX:...>
  • $<TARGET_FILE_BASE_NAME:...>
  • $<TARGET_FILE_SUFFIX:...>
  • $<TARGET_LINKER_FILE_PREFIX:...>
  • $<TARGET_LINKER_FILE_BASE_NAME:...>
  • $<TARGET_LINKER_FILE_SUFFIX:...>
  • $<TARGET_PDB_FILE_BASE_NAME:...>
  • The $<TARGET_OBJECTS:...> generator expression is now supported on SHARED, STATIC, MODULE libraries and executables.
  • 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_<LANG>_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)

  • 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.15.0 RC2 (Jun 20, 2019)

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

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)

  • Changes in 3.14.3 since 3.14.2:
  • 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 15, 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
  • Julien Jomier (1):
  • cmake-gui: Fix icon overlay on windows
  • Regina Pfeifer (1):
  • Modules/CTest: Fix SubmitURL
  • mistersandman (1):
  • cmake-gui: Fix theme on Windows with Qt >= 5.10

New in CMake 3.14.0 RC1 (Feb 8, 2019)

  • Support for running CMake on Windows XP and Windows Vista has been dropped. The precompiled Windows binaries provided on “cmake.org” now require Windows 7 or higher.
  • 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 31, 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)

  • Changes since 3.13.1:
  • 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 (Nov 29, 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 (Nov 21, 2018)

  • Significant changes:
  • 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 <source_dir>” 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 <build_dir>” 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 8, 2018)

  • Brad King (5):
  • 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
  • CMake 3.12.2
  • Craig Scott (2):
  • EXPORT_PROPERTIES: Add test for an undefined property
  • EXPORT_PROPERTIES: Prevent null dereference for undefined property
  • David Demelier (1):
  • Help: Fix typo in clang-tidy example -checks option
  • Igor Kostenko (1):
  • FindBoost: Fix context discovery for 1.60 and below
  • Kenta Kubo (1):
  • FindCUDA: Do not find cublas_device on CUDA >= 9.2
  • Raffi Enficiaud (1):
  • FindMatlab: Remove erroneous duplicate code
  • Robert Maynard (1):
  • CUDA: Avoid using deprecated cublas_device to identify device lib dirs
  • Shane Parris (1):
  • cmState: Clear GlobVerificationManager state on Reset

New in CMake 3.12.1 (Aug 10, 2018)

  • Brad King (8):
  • 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
  • Craig Scott (1):
  • GoogleTest: Ensure policy settings allow use of IN_LIST
  • Dima Panov (1):
  • FindTCL: Add support for version 8.7
  • Marc Chevrier (2):
  • 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 [<jobs>]” and “-j [<jobs>]” 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
  • “<min>[…<max>]”. The “<min>” version is required but policies are
  • set based on the “<max>” 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 “$<GENEX_EVAL:…>” and “$<TARGET_GENEX_EVAL:target,…>”
  • “generator expression” has been added to enable consumption of
  • generator expressions whose evaluation results itself in generator
  • expressions.
  • A new “$<TARGET_EXISTS:…>” “generator expression” has been
  • added.
  • A new “$<TARGET_NAME_IF_EXISTS:…>” “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)

  • Brad King (3):
  • cmSystemTools: Revert GetRealPath implementation on Windows
  • CPack: Fix cross-compilation of WiX generator
  • CMake 3.11.3
  • Sander Vrijders (1):
  • TestDriver: Replace strncpy with strcpy

New in CMake 3.11.1 (Apr 18, 2018)

  • Brad King (5):
  • 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
  • Daniel Filipe (1):
  • Features: Record for VS 2017 through 15.6
  • Kirill Erofeev (2):
  • Explicitly require LibUV 1.10 or higher to build CMake
  • bootstrap: Add option to enable/disable usage of system libuv
  • R2RT (1):
  • Fix crash with --trace-expand --warn-uninitialized together
  • Roland Schulz (1):
  • FindOpenMP: Fix support for Intel on Windows
  • Sebastian Holtermann (7):
  • 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 RC4 (Mar 28, 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_<LANG>_COMPILER_LAUNCHER” variable and
  • “<LANG>_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 RC3 (Mar 16, 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)

  • Changes in 3.10.2 since 3.10.1:
  • KWIML: Backport RISC-V update to CMake 3.10
  • CMake 3.10.2
  • 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 14, 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"
  • 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.10.0 (Nov 21, 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.9.6 (Nov 10, 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.9.4 (Oct 4, 2017)

  • Brad King (2):
  • FindBoost: Finish reverting "Simplify search in lists" for 3.9
  • CMake 3.9.4

New in CMake 3.9.3 (Sep 21, 2017)

  • Brad King (3):
  • VS: Do not consider MAP_IMPORTED_CONFIG_ on non-imported targets
  • bootstrap: Fix running multiple times in-source CMake 3.9.3
  • Maarten de Vries (1):
  • vim: Remove default setting of expandtab
  • Roger Leigh (1):
  • FindBoost: Add support for Boost 1.65.0 and 1.65.1 to CMake 3.9
  • Rolf Eike Beer (1):
  • CTest: fix crash if source file for coverage cannot be found
  • Sebastian Holtermann (2):
  • 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
  • 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)

  • The “find_” command “PACKAGE_ROOT” search path group added by
  • CMake 3.9.0 has been removed for the 3.9 series due to regressions
  • caused by new use of “<PackageName>_ROOT” variables. The behavior
  • may be re-introduced in the future in a more-compatible way.

New in CMake 3.9.0 (Jul 19, 2017)

  • Some of the more significant changes in CMake 3.9 are:
  • 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.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
  • 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 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_<refname> 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, ...).
  • 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_<CONFIG> target properties to specify a link library name since interface libraries do not build their own library files.
  • A <LANG>_CPPLINT target property and supporting CMAKE_<LANG>_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_<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_<refname> 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:
  • A CSharpUtilities module was added to aid parameterization of Visual Studio C# targets. It provides functions to allow automated setting of source file properties to support Windows Forms, WPF/XAML or other technologies as needed.
  • 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 <var> 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 $<IF:cond,true-value,false-value> 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 <LANG>_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 <CMAKE_CURRENT_BINARY_DIR>/<TARGETNAME>_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.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 (Sep 8, 2016)

  • [CMake] LIST(FILTER [ ...] [OUTPUT_VARIABLE ]) - closed.
  • [CPack] CPack DEBdefault to standard Debian package file names
  • [CPack] CPackDeb.cmake creates debian directory only, DEBIAN sometimes needed - dpkg-shlibdeps bails out upon a $ORIGIN RPATH
  • [CMake] AUTOMOC produces same output moc file if target has two source files resides in different sub-directory
  • [CPack] cpack deb generator components specify output names
  • [CMake] Ninja generator doesn't set version in dylib
  • [CTest] CTest interprets "NoteNo relevant classes found. No output generated." string as compilation erro
  • file(GLOB) and file(GLOB_RECURSE) indeterministic
  • [CPack] CPack doesn't allow to create RPM with other user/group than root/root
  • [CMake] [ninja] system wide header change doesn't start project rebuild. - closed.
  • [CMake] No way to exclude a component install() from a full installation - closed.
  • [CMake] The ExternalProject should use the --depth option when working with git (Brad King) - closed.
  • [CMake] CMake.App bundle is malformed which prevents code signing it
  • [CMake] Target property that sets Startup Project in MSVC - closed.
  • [Modules] Eclipse Generator does accept / as seperator in SOURCE_GROUP instead of \
  • [Modules] FindBoost ignores Boost_NO_SYSTEM_PATH in debug builds
  • [CMake] Detecting custom arm-none-eabi-g++ compiler (Brad King) - closed.
  • [Modules] FindOpenssl can't find self built openssl but prefers slproweb openssl - closed.
  • [CMake] CMake Does Not Use -isystem with GCC on OS X
  • [CMake] Ninja generator is non-deterministic
  • [CMake] GHS Multi GeneratorCOPY_FILE in try_compile does not work
  • [CMake] cmSystemTools::RandomSeed() requests excessive entropy per invocation
  • [CMake] STATUS variable to FILE(DOWNLOAD) does not consider HASH mismatch failures
  • [CMake] CMake will crash if project command is used in the toolchain file
  • [CMake] 'cmake -U*' causes SIGABRT in cmGlobalGenerator::EnableLanguage()
  • [CMake] cmake-mode.elcmake-helpone help item is missing for each 'type'
  • [CMake] Cannot build on OS X with GCC
  • [Modules] GenerateExportHeader DEFINE_NO_DEPRECATED define conflicts
  • [Modules] Add support to use OpenBLAS to FindBLAS/FindLAPACK
  • [CMake] GHS Generator does not support LINK_FLAGS property
  • [CMake] Various typos
  • [CMake] CHECK_COMPILER_FLAG_COMMON_PATTERNS doesn't match clang-cl's unknown argument warning
  • [CMake] GHS Multi Generatorduplicate object file names (geoffviola) - closed.
  • [CMake] Extra space on NDEBUG in release builds causes flag to be ignored
  • [CMake] FindBoostNo imported target when components not specified
  • [CMake] define SOLARIS and CMAKE_HOST_SOLARIS as a cmake built-in - closed.
  • [CMake] Missing /usr/local/bin causes --install script to fail.
  • [CMakeSetup] Compilation error on ./bootstrap
  • [CMake] flex macro can't handle parenthesis in path - closed.
  • [Modules] InstallRequiredSystemLibraries and VS 2015 Universal CRT libraries
  • [CMake] CMake on Cygwin with clang not creating expected dll.a
  • [CMake] ExternalProject with empty GIT_SUBMODULES does not initialize submodules of submodules
  • [CMake] Clarify documentation of --build as a separate command mode
  • [CMake] Latest CMake bundles insecure copy of Expat
  • [CMake] Implicit link information parsing reads the wrong line from 'pathcc -v' output (Brad King) - closed.
  • [CMake] Address "RegularExpression::compile()Expression too big."
  • [CPack] get_prerequisites failed to locate installed Microsoft Visual Studio if installed into not default location - closed.
  • [CMake] Memory leak during function call
  • [CMake] CMake crashes at generation stage
  • [CMake] CMake multi-processor compilation for Fortran projects
  • [Documentation] CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES variable is not documented

New in CMake 3.5.2 (Sep 8, 2016)

  • [CMake] CMAKE_ASM_NASM_COMPILE_OBJECT lacks
  • [CMake] cmake crashed with SIGSEGV in cmTarget::GetProperty()
  • [CMake] Resources generated with autorcc are always rebuilt using ninja

New in CMake 3.5.1 (Sep 8, 2016)

  • [Modules] pkg_search_module no longer caches _PREFIX, _LIBDIR, _INCLUDEDIR
  • [CMake] FindBoost: iostreams depends on regex [3.5 regression] (Roger Leigh) - closed.
  • [CMake] FindBoost "Automatically add missing component dependencies" fails with header-only libraries
  • [CMake] OS X CMake.app (version 3.5) contains empty CFBundleIdentifier, which is malformed
  • [Modules] nvcc encloses -ccbin argument with gratuitous quotation marks during intermediate-link phase

New in CMake 3.5.0 (Sep 8, 2016)

  • [CMake] CMake Error: Parse error in cache file /home/mathieu/Perso/gdcm/debug-gcc/CMakeCache.txt. Offending entry: (Brad King) - closed.
  • [CMake] Add command line options for deprecation message control (Stephen Kelly) - closed.
  • [CMake] Issue deprecation warnings by default. (Stephen Kelly) - closed.
  • [Modules] FindDCMTK.cmake outdated (Matt McCormick) - closed.
  • [Modules] pkg_check_modules() should add PREFIX/share/pkgconfig to PKG_CONFIG_PATH - closed.
  • [CMake] [Buildroot] [PATCH] cmake: use system libzma when the xz package is enabled (Brad King) - closed.
  • [Modules] UseJava add_jar incorrect documentation for target property (Brad King) - closed.
  • [Documentation] Documentation for RPM CPack generator is missing a number of the variables that it supports (Domen Vrankar) - closed.
  • [CMake] cmake generates corrupt Xcode projects for KDE projects (Gregor Jasny) - closed.
  • [CMake] Clarify why add_custom_command(TARGET ...) can't see in scope target (Brad King) - closed.
  • [CPack] BundleUtilities broken on Win10 (MSVC 2015) (Brad King) - closed.
  • [CMake] Clang CXX feature detection disabled on WIN32 platforms (Brad King) - closed.
  • [CMake] Building CUDA files fails when source path contains parenthesis - closed.
  • [CMake] Use after free in regexp functionality (Brad King) - closed.
  • [CMake] CMake GUI crashes generating FLTK 1.3.3 project files on Windows 10 - closed.
  • Ninja generated superbuilds do not reinstall dependent projects - closed.
  • [CMake] cmake-gui.1 man page should not be installed unless --qt-gui is given (Brad King) - closed.
  • [CTest] ctest FTP failure (Brad King) - closed.
  • [CMake] Using CMake-Gui to run generate for Windows followed by generate for Unix generates incorrect Unix makefiles (Brad King) - closed.
  • [CMake] cmake-gui crashes when I click configure or generate on GLFW project (Brad King) - closed.
  • [CMake] Visual Studio 2015 does not work with v120 toolset (Brad King) - closed.
  • [CMake] Support creating of Framework for iOS (Gregor Jasny) - closed.
  • [CMake] CMake fails to support existing custom VS_GLOBAL_* properties in VS10 (ProjectExtensions -> VisualStudio -> UserProperties) - closed.
  • [CMake] cmSystemTools::GetShortPath works not correct - closed.
  • [CMakeSetup] CMake installer can't modify %PATH% if it's 'loo long'. (Brad King) - closed.
  • [CMake] file(STRINGS ..) doesn't work on single character files. (Clinton Stimpson) - closed.
  • [CPack] The DragNDrop CPack generator has an off-by-one in its code line-wrapping LICENSE files configured in CPack - closed.
  • [CMake] MACOSX_BUNDLE path problem when building for iOS with Xcode - closed.
  • [CMake] Documentation is not mention about support for iOS Application Bundle and iOS Framework Bundle (Gregor Jasny) - closed.
  • [CMake] "cmake -E copy" support for multiple files - closed.
  • [CMake] Generalize RESOURCE target property to by used by all Bundles (not only by FRAMEWORK) - closed.
  • [CMake] .def files are not visible in Visual Studio project tree - closed.
  • [CMake] XCode generated profiles for xcode 7.1 gets warning: Turn on "Enable Testability" When Debugging (Gregor Jasny) - closed.
  • ALIAS target scope regression (Stephen Kelly) - closed.
  • CPack WIX generator should set top feature to be mandatory (Nils Gladitz) - closed.
  • [CMake] AUTORCC not generating files with Qt 5.1 (Brad King) - closed.
  • [Modules] FindPkgConfig.cmake: error returned to the user may be wrong when checking for package existence (Brad King) - closed.
  • [CMake] Add support for resw files for Windows RT & Windows Phone platforms (Gilles Khouzam) - closed.
  • [CPack] When setting CMAKE_OSX_SYSROOT to macosx, CPack fails (Brad King) - closed.
  • [CMake] OS X: Filesystem timestamp checks use only 1s resolution (Brad King) - closed.
  • [CMake] GHS-MULTI Generator Uses Macros in GPJs Uncompatible With Older Versions (geoffviola) - closed.
  • [CMake] FindFlex should have a DEFINES_FILE option in analogue with FIndBison - closed.
  • Enable ANSI colors when CLICOLOR_FORCE is set to 1 (Brad King) - closed.
  • [CMake] The Xcode generator consumes all arguments beginning with "-O" even when they're not optimization flags. (Gregor Jasny) - closed.
  • [Documentation] add_test page ought to specify what constitutes a valid test (Brad King) - closed.
  • [CMake] FindGit does not work when git is installed through SourceTree (Brad King) - closed.
  • [Modules] FindOpenSSL.cmake does not honor OPENSSL_ROOT_DIR (Brad King) - closed.
  • [CPack] The WiX patch file parser ignores text nodes. (Nils Gladitz) - closed.

New in CMake 3.2.3 (Jun 2, 2015)

  • [CMake] Using MS or Intel compilers fails with MinGW Makefiles generator, worked with CMake 3.0.2
  • [CMake] InstallRequiredSystemLibraries needs to learn about VS 2015
  • [CMake] Crash when parsing malformed foreach() inside function()

New in CMake 3.2.2 (Jun 2, 2015)

  • [Modules] FindMFC.cmake warning due to POLICY CMP0054

New in CMake 3.2.1 (Jun 2, 2015)

  • [CMake] cmake add_custom_command issue with multiple output files

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

  • [CMake] configure_file is not WARNING about ill-named parameter COPYONLY - resolved.
  • [CMake] CMake cannot building by VC6 with PSDK - resolved.
  • [CMake] Wrong encoding for generated .sln - resolved.
  • [Modules] CheckStructHasMember breaks on -Wunused-value - resolved.
  • [CMake] FindJNI missing JAVA_AWT_LIBRARY on JDK9 as jdk/lib/ is not included in JAVA_AWT_LIBRARY_DIRECTORIES - resolved.
  • [CMake] configure_file documentation could be more useful by specifing exactly where the files are generated - resolved.
  • Toolset is not updated/loaded correctly in CMake GUI - resolved.
  • [CMake] Xcode generator fails to re-configure existing build tree when CMake has moved - resolved.
  • [CPack] Default value for CPACK_NSIS_INSTALL_ROOT when installing 64 bit binaries is $PROGRAMFILES - resolved.
  • [CMake] Clarify try_compile and try_run documentation - resolved.
  • [CMake] [AUTOUI] Simplifiy wrong headers - resolved.
  • [CMake] Target property INTERFACE_SYSTEM_INCLUDE_DIRECTORIES doesn't seem to work- resolved.
  • [CMake] Ninja generator causes build failure for ASM files via NASM - resolved.
  • [CMake] cmake should support ninja's "console" pool - resolved.
  • [CMake] Ninja: wrong check for link with RSP_FILE - resolved.
  • [CMake] ExternalProject's BUILD_ALWAYS flag doesn't clear any existing build stamp file - resolved.
  • [CMake] cmake add_custom_command issue with multiple output files - resolved.
  • [Modules] cmake --find-package ignores multi-arch dir - resolved.
  • [CMake] Provided CMAKE_*_LINKER_FLAGS ignored during configuration step - resolved.
  • [CMake] cmake 3.1 doesn't know how to select CMAKE_CXX_STANDARD 11 on Mac OS - resolved.
  • [CMake] CMake GUI browser cannot handle Unicode paths - resolved.
  • [CMake] generated .vcproj with wrong encoding - resolved.
  • [CMake] "Could not copy from" On Windows 7 (Simplified Chinese) - resolved.
  • [CMake] CMake won't generate Visual Studio projects with working paths that have Unicode charactors - resolved.
  • [CMake] CMake fails to copy Visual Studio macro files into folder with non-latin symbols - resolved.
  • [CMake] Wrong version found when overriding System OpenSSL with custom path (-DCMAKE_PREFIX_PATH=) - resolved.
  • [CMake] Documentation clarification - resolved.
  • [CMake] 3.0.2-3.1rc2: _IMPORT_PREFIX always used even if absolute paths are in use - thus breaking build - resolved.
  • [CMake] find_library does not account for directory modification between calls - resolved.
  • [CMake] FindMPI.cmake fails to properly detect Intel MPI 5.0.1- resolved.
  • [CMake] /wd flags in source COMPILE_FLAGS replace /wd flags from other sources in Visual Studio generator - resolved.
  • [CMake] Xcode generator is unusably slow on large projects - resolved.
  • 0014963: [CMake] Add explicit specification of custom command side effect outputs - resolved.
  • [Modules] FindOpenGL.cmake incorrectly depends on X11 on Linux - resolved.
  • [CPack] CPackRPM: need CPACK_RPM__PACKAGE__REQUIRES - resolved.
  • [CPack] CPackRPM support for per-component summary/description - resolved.
  • [CMake] CMake unconditionally sets WARNING_CFLAGS for each targets overriding project-level option. - resolved.
  • [CMake] Qt 5: resources aren't being updated when CMAKE_AUTORCC is used - resolved.
  • [CMake] add_jar() in UseJava.cmake uses wrong classpath seperator when cross-compiling under Windows - resolved.

New in CMake 3.1.3 (Feb 28, 2015)

  • [CMake] CMake cannot test compiler features in Turkish locale - resolved.

New in CMake 3.1.2 (Feb 28, 2015)

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

New in CMake 3.1.1 (Jan 23, 2015)

  • [CMake] Xcode generator default target is no longer "ALL_BUILD"
  • [CMake] CMAKE_CXX_KNOWN_FEATURES variable documentation should be corrected
  • [CMake] The regular expression in CMakeDetermineCompilerID.cmake strips out qnxnto
  • [CMake] Eclipse cannot run Makefile
  • [CPack] CPack seg fault during stripping
  • [CMake] Querying for (deprecated) LOCATION property prevents expansion of TARGET_OBJECTS generator expression
  • [Modules] FindRuby: Problem with "find_package(Ruby 2.0)"
  • [CMake] Behaviour change with 3.1 - target properies set to empty string returned as -NOTFOUND
  • [CMake] Regression building x265 using CMake 3.1 (Segmentation fault)
  • [CMake] cmComputeLinkDepends.cxx fils to compile
  • [CMake] cmake-3.1.0: failing bootstrap on solaris 10

New in CMake 3.1.0 (Dec 29, 2014)

  • [CMake] if(variable STREQUAL string) can treak LHS as a variable name - resolved.
  • [CMake] Verbose install - resolved.
  • [CMake] file GENERATE does not support generator expression for paramter INPUT - resolved.
  • [CMake] Add hlsl compiler support to Visual Studio 2012 - resolved.
  • [CMake] Error getting iOS compiler identification on master - resolved.
  • [CMake] ps2pdf not detected when cross-compiling - resolved.
  • problem to find non-standard ncurses.h location
  • [CMake] CMake doesn't escape # properly in add_compile_options with Makefile generator
  • [CMake] Error getting iOS compiler identification on master
  • [Modules] Duplicated lines in FindPythonInterp.cmake
  • [CMake] Document NVIDIA Nsight Tegra configuration settings
  • [CMake] setting CMAKE_RC_FLAGS has no affect on rc flags
  • [CMake] Compiler identification fails with -DCMAKE_SYSTEM_NAME=WindowsStore
  • regex match when not matched do not clear cmake_match_0 and 1 var
  • [CMake] Source file properties are lost, if the name of the file is not specified case sensitive.
  • [Documentation] GET_PROPERTY and SET_PROPERTY need update for installed file properties
  • [CMakeSetup] When cross compiling, "make install" invokes target "cmake" instead of host version
  • [CMake] Make GNUInstallDirs more discoverable in the documentation
  • [CMake] No CMAKE_C_COMPILER could be found (3.1.0-rc1 regression)
  • [CMake] Clarify add_compile_options command documentation
  • [Modules] Find_package(Curses) failed for QNX 6.5 and QNX 6.6
  • [Modules] CheckTypeSize changes CMAKE_MINIMUM_REQUIRED_VERSION
  • [Documentation] Please document CMAKE_XCODE_ATTRIBUTE_*
  • [CMake] Ninja gen generates invalid phony dependencies for source files with in-source build
  • [CMake] ps2pdf not detected when cross-compiling
  • [Modules] FindThreads.cmake: several small bugs
  • [CPack] Allow properties on installed directories
  • [CMake] find_package(PythonLibs) finds different version of Python headers and libraries
  • [CMake] Visual Studio 9 generator does not output Custom Build Tool command line for assembler sources
  • [CMake] Add support for Intel Fortran 15.0 Visual Studio
  • [Modules] typo in Modules/GNUInstallDirs.cmake
  • [CPack] WiX : Remember the INSTALL_ROOT directory for upgrades
  • [CMake] AUTOUIC not generating all needed ui_xxx.h files
  • [CMake] enable_language reports failure to find a module, but not which one
  • [CMake] FindGettext.cmake documentation issue
  • [CMake] FindProtobuf: Generated source not regenerated on library update
  • [CMake] Sometime, CMake can't find clang/clang++ - resolved.
  • [CMake] if expansion of quoted arguments as variables should be deprecated
  • [CMake] WindowsCE: /SUBSYSTEM and /ENTRYPOINT does not end up in the generated Visual Studio project
  • [Modules] UseSWIG rebuilds source even when the the dependencies have not changed
  • [CMake] Add support for WinRT platforms and "metro" apps
  • [CMake] CMake does not support generating projects for Windows Phone 8. (Brad King) - resolved.
  • [CMake] Symlinked lib directories confuse cmake
  • [CMake] add_custom_command: Clarify documented relationship of multiple COMMANDs
  • [Documentation] Document that the CHECK_* macros create cache variables
  • [Modules] CMAKE_HOST_SYSTEM_PROCESSOR not detected on GNU/Hurd
  • [CMake] Imported libraries go out of scope after call to target_link_libraries()..
  • [CMake] XCode generator cannot add assetcatalog assets
  • InstallRequiredSystemLibraries does not install OpenMP library on MSVC
  • [CCMake] /ZW- compiler flag to disable CompileAsWinRT property in Visual Studio project
  • [CPack] Setting file permissions for the cpack WiX generator through install properties
  • [CMake] Platform information override files are not loaded for assembler.
  • [Modules] FindOpenMP does not return Fortran flags
  • [CMake] Incorrect compiler flag not detected for Intel
  • [CMake] ExternalProject: Clarify SVN_REVISION usage in documentation
  • [Modules] FindMPI sets MPIEXEC to wrong executable
  • [CTest] MSVC level 3 warning in test code
  • [CMake] Clarify documentation of CMake custom build step PRE_LINK/PRE_BUILD
  • [Documentation] "This is not security software." too sloppy
  • [CMake] FILE(STRINGS) does not work correctly for UTF8 encoded strings
  • [Modules] CheckIncludeFiles uses old-style function definition
  • [CMake] Add QUIET option to install() command
  • [CMake] target_link_libraries: clarify documented treatment of link flags (Brad King) - resolved.
  • [Modules] check_cxx_compiler_flag fails when variable name contains "++" [CMake] visual studio 2012 generator ampersand escaping
  • [CMake] Detect more fujitsu compiler warnings
  • [CMake] ExternalProject doesn’t handle .tar.xz
  • [CMake] libarchive supports 7-Zip, Add 7-Zip support to cmake - resolved.
  • [CMake] 7z ( LZMA and LZMA2) support for cpack - resolved.
  • [CPack] Allow CPack to generate tar.xz archives - resolved.
  • [CMake] Specifying CMAKE_CXX_COMPILER=g++ after first run deletes all cached values
  • [CMake] CMake needs to support building against "/" on OS X with a deployment target set.
  • [CMake] Generalize LINK_ONLY
  • [CMake] Build fails with Cray compiler on Linux - resolved.
  • [CMake] AUTORCC doesn't work with OBJECT library
  • [Modules] FindImageMagick.cmake needs update for ImageMagick >= 6.8.0-8, perhaps use pkgconfig
  • [CMake] [CMake/Ninja] add_dependencies() to objlib's user is ignored.
  • [Modules] CMakeFindBinUtils always search for install_name_tool even when cross compiling on OSX
  • [CMake] VS14 VS2014 Support
  • [CMake] Static library can miss some object files
  • [CTest] ctest doesn't manage correctly the -LE and -L flags
  • [CMake] [RFE] Produce shorted output for cmake/ccmake when no arguments specified
  • [CMake] cmake succeeds evaluating a script that is a directory
  • archive_write_header: Can't translate pathname 'bin/教學程式' to UTF-8 - resolved.
  • [CMake] Need a way to disable CMake package registry
  • [Modules] findboost.cmake can't find boost::graph_parallel library
  • [CMake] CMake has no cross-platform way to ask for C99
  • [CMake] $ with add_custom_target does not work
  • [CMake] Visual Studio 7-9 generators case bools incorrectly
  • [CMake] No Support for C++11
  • [CMake] Xcode projects with binary files cannot load in Xcode
  • [CPack] What options do I have to set the NeverOverwrite and Permanent attributes for Components that install files from CPack?
  • [Modules] FindPkgConfig module doesn't honor CMAKE_PREFIX_PATH.
  • [Modules] GTEST_ADD_TESTS doesn't use new signature ADD_TEST(NAME name COMMAND command): generated executable is then not found
  • [CPack] Cpack crashes when issuing a bad Wix Patch
  • [CMake] Unpacking Qt 5.2.1 source distribution fails (ExternalProject_Add)
  • [CMake] CMake's ENABLE_ACL option does not stop CMake looking for libacl.h
  • [CMake] RunCMake.include_directories (SourceDirectoryInInterface & BinaryDirectoryInInterface) tests fail.
  • [CMake] Flags specified for the compiler do not stay together during processing.
  • [Modules] Java add_jar() doesn't copy resources to build directory when make is run for the first time - closed.
  • [Modules] CheckTypeSize does not work if C language is not enabled [CMake] Inconsistent behaviour between find_package and pkg_check_modules
  • [CMake] file(DOWNLOAD) progress goes wild
  • [CMake] CMake 2.8.12.2 cannot be built on HP-UX 11.11 (hppa)
  • [CMake] typo in comment, Source/cmELF.cxx
  • [QtDialog] Crash in QCMake.cxx
  • [CMake] FindPkgConfig.cmake should respect environment variable PKG_CONFIG just like autotools do
  • [Modules] GTEST_ADD_TESTS from FindGTest may find sources automatically
  • [CMake] OBJECT libraries cause Fortran to relink each time
  • [CMake] --graphviz generates many files
  • [CMake] Add target properties to specify MS compiler PDB files (

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)

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

New in CMake 3.0.1 (Sep 12, 2014)

  • [CMake] Semicolon in AIX compiler warning FAIL_REFEX causes it to match other output - resolved.
  • Linking $ into a static library is broken with Xcode 6 - resolved.
  • [CMake] CMake build error on QNX - resolved.
  • [CMake] Fix CMakeExpandImportedTargets to avoid Error on non-existent target in get_target_property. - resolved.
  • [CMake] cannot build targets 'test' or 'package' after bootstrapping - resolved.
  • [CMake] UseSWIG.cmake use wrong filenames for Python - resolved.
  • [CMake] Fortran modules for GNU fortran are not correctly identified - 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 (Nov 9, 2013)

  • 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.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
  • CMake: Fix infinite loop untarring corrupt tar file
  • FindGettext: fix overwriting result with empty variable

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)
  • 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.7 RC2 (Mar 29, 2012)

  • Alex Neundorf (5):
  • automoc: default to strict mode, use CMAKE_AUTOMOC_RELAXED_MODE
  • automoc: improved warning message in relaxed mode
  • Remove trailing whitespace
  • Add comment about one more problem of the C depency scanner.
  • fix #12262: dependency scanning for ASM files
  • Bill Hoffman (1):
  • Fix the case where cmake --build failed with two project cmds in one file.
  • Brad King (11):
  • KWSys: Correctly handle empty environment variables
  • FortranCInterface: Work around mingw32-make trouble with parens
  • Xcode: Create separate rerun dependencies for subprojects (#12616)
  • Fix Intel Fortran .vfproj files for VS 10
  • HP: Drive shared library linking with compiler front end
  • Follow all dependencies of shared library private dependencies
  • Do not link private dependent shared libraries on OS X > 10.4
  • Avoid clobbering variable 'OUTPUT' in compiler tests (#12628)
  • Fix and simplify Fortran test compiler compatibility check
  • CTest: Recognize Intel errors without space before colon (#12627)
  • Windows-GNU: Remove extra quotes in GNUtoMS rule variable
  • David Cole (4):
  • Release: Increase timeout for slow-testing cygwin build
  • Modules: Use "windres" as rc compiler base name for cross-compiles (#12480)
  • Tests: Only really run MFC test if we can build MFC apps (#11213)
  • FindBoost: Quote possibly empty string argument (#12273)
  • Eric NOULARD (1):
  • CPackRPM fix #0012608 and unoticed related bug
  • Johan Fänge (1):
  • CMake: Fix progress reporting for custom targets (#12441)
  • Mike McQuaid (2):
  • Unset configurations variable when no build type.
  • Improve component support and output indentation.
  • Raphael Kubo da Costa (2):
  • Remove the apparently outdated README in Source/QtDialog.
  • QtDialog: Set Ctrl+Q as the shortcut for quitting the program.
  • Tim Gallagher (2):
  • FindLAPACK: Correct CMAKE_FIND_LIBRARY_SUFFIXES spelling (#12624)
  • FindLAPACK: List thread libs to avoid link errors (#12625)
  • Valat Sébastien (1):
  • CTest: Do not get CDash version without drop site (#12618)

New in CMake 2.8.7 RC1 (Mar 29, 2012)

  • Aaron Ten Clay (1):
  • VS: Add support for three new project properties (#12586)
  • Alex Neundorf (60):
  • fix #12392: handle CMAKE_CXX_COMPILER_ARG1 for Eclipse projects
  • fix #12262: use the C dependency scanner also for ASM files
  • fix #12465: detect the masm compiler ID ("MSVC")
  • Silence make on OpenBSD in FindPackageModeTest(#12508)
  • Remove trailing whitespace
  • Find Ruby on OpenBSD when installed from ports (#12507)
  • Eclipse generator: detect Eclipse version
  • Detect whether the current Eclipse version supports VirtualFolders
  • Eclipse: don't create VirtualFolders if not supported
  • Eclipse: better message when Eclipse version could not be determined
  • automoc:run moc on the header if the source file contains include "foo.moc"
  • Add copyright notices
  • automoc: always run moc on the cpp file if there is a foo.moc included
  • Eclipse: add virtual folder for each target
  • Eclipse: move code for generating links to projects into separate function
  • Eclipse: move code for generating links to targets into separate function
  • Eclipse: add Build and Clean targets to targets
  • Eclipse: detect number of CPUs, set CMAKE_ECLIPSE_MAKE_ARGUMENTS accordigly
  • Eclipse: fix #12417, don't create wrong src pathentries
  • FindLibXslt: also search libexslt and xsltproc
  • don't crash in automoc with empty COMPILE_DEFINITIONS property
  • Automoc: fix the fix, need to use std::string, not just char* pointer
  • automoc: fix #12541, support moc options
  • add documentation for the AUTOMOC_MOC_OPTIONS property
  • Eclipse: warn if CMAKE_BINARY_DIR is subdir of CMAKE_SOURCE_DIR
  • Eclipse: make targets work from any directory
  • Eclipse: quote the build dir (to make it work with spaces)
  • make automoc work when using ccmake via PATH (#12551)
  • Strip trailing whitespace
  • make GETTEXT_PROCESS_PO_FILES() work with files with multiple dots
  • FindGettext: two more fixes for files with multiple dots
  • FindPNG: provide PNG_INCLUDE_DIRS, as the readme.txt says (#11312)
  • Eclipse: create links to subprojects also in the source-project (#12579)
  • Eclipse: use new variable CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
  • install(EXPORT): Enforce existence of imported target files
  • Remove trailing whitespace
  • cmake-gui: add completion for the names when adding cache entries
  • automoc: stricter checking for what file is included
  • automoc: rework the checking for the matching header, to give better warnings
  • automoc: handle the case when the developer includes the wrong mocfile
  • automoc: add more test cases
  • automoc: improved diagnostics
  • automoc: minor optimization
  • automoc: another runtime optimization
  • Automoc: modified handling of included .moc files
  • automoc: add a test for including both abc.moc and moc_abc.cpp
  • automoc: add test for including the moc file from another header
  • automoc: add test for including a moc_abc_p.cpp file
  • automoc: move some code from the big parsing loop into separate functions
  • automoc: add special handling for including basename_p.moc, with test
  • automoc: add extra check whether the header contains Q_PRIVATE_SLOT
  • automoc: some more linebreaks for the warnings for better readability
  • automoc: fix handling of included _p.moc files
  • automoc: move the code for finding headers into separate function
  • automoc: add a StrictParseCppFile(), which is only qmake-compatible
  • automoc: also accept other files when .moc is included in non-strict mode
  • automoc: accept even more .moc files in non-strict mode
  • automoc: add variable CMAKE_AUTOMOC_STRICT_MODE, to enable strict parsing
  • automoc: fix line length
  • automoc: add documentation for CMAKE_AUTOMOC_STRICT_MODE
  • Alexey Ozeritsky (1):
  • FindLAPACK: Fix linking to static LAPACK on Unix (#12477)
  • Bernhard Walle (1):
  • Source/cmCTest.cxx: Add missing newline (#12538)
  • Brad King (65):
  • Refactor find_* command final path list computation
  • Constify XCode generator getters to match cmGlobalGenerator
  • Fix line-too-long style violations
  • KWSys: Fix Doxygen warnings
  • Add pre-commit|commit-msg|prepare-commit-msg hook placeholders
  • pre-commit: Reject changes to KWSys through Git
  • Fix CTest.UpdateSVN with Subversion 1.7 (#12535)
  • Teach CTest.UpdateSVN to detect svn add --depth before using it
  • KWSys: Address Intel compiler remarks
  • Fix linking to OS X Frameworks named with spaces (#12550)
  • Watcom: Use shortpath to CMake if full path has parens (#12548)
  • KWSys: Remove trailing whitespace in SystemTools.cxx
  • KWSys: Fix wrong spelling of __INTEL_COMPILER
  • Update main Copyright.txt year range for 2011
  • KWIML: The Kitware Information Macro Library
  • Configure KWIML inside CMake as cmIML
  • KWIML: Avoid redefining _CRT_SECURE_NO_DEPRECATE in test.h
  • KWIML: Suppress printf/scanf format warnings in test
  • KWIML: No INT_SCN*8 on SunPro compiler
  • KWIML: No INT_SCN*8 on Intel for Windows
  • KWIML: Create test output dir for Xcode
  • Order VS local generator Version ivar values consistently
  • Enumerate VS11 version explicitly in local generators
  • KWIML: Test header inclusion after system headers
  • KWIML: Ignore _LONGLONG on MS compiler
  • KWIML: Teach ABI.h about PGI compiler
  • KWIML: Avoid MSVC linker warning about not using C++ runtime
  • Factor Compute(File|String)MD5 into cmCryptoHash helper
  • Add file(MD5) command to compute cryptographic hash
  • Import sha2 implementation 1.0 from Aaron D. Gifford
  • Import sha2 implementation 1.1 from Aaron D. Gifford
  • sha2: Use KWIML fixed-size integer types and endian-ness
  • sha2: Build as part of CMakeLib
  • Add file(SHA*) commands to compute cryptographic hashes
  • sha2: Use "static const" instead of "const static" declarations
  • cmCryptoHash: Provide factory "New" method
  • Add string(MD5) and string(SHA*) commands to compute hashes
  • sha2: Use KWIML fixed-size integer constant macros
  • sha2: Suppress Borland warnings in third-party code
  • Disable file() and string() hash commands during bootstrap
  • sha2: Wrap long lines in third-party declarations
  • Fix CMake.File hash test for CRLF checkouts
  • cmCryptoHash: Add virtual destructor
  • sha2: Cast safe conversions to smaller integer types
  • sha2: Suppress -Wcast-align warning from Clang
  • sha2: Zero entire SHA_CTX structure during cleanup
  • target_link_libraries: Add missing space in documentation
  • target_link_libraries: Simplify argument processing state tests
  • install(EXPORT): Improve target import failure message format
  • Remove trailing whitespace from cmLocalGenerator
  • bootstrap: Include cmNewLineStyle in build
  • cmNewLineStyle: Remove trailing comma in enum
  • cmNewLineStyle: Use cmStandardIncludes.h
  • Provide std::ios_base typedef on GCC < 3
  • FindZLIB: Search under ZLIB_ROOT if it is set
  • Factor out target location undefined behavior helper macro
  • export(): Document undefined behavior of location properties
  • Recognize the Tiny C Compiler (#12605)
  • TinyCC: Add compiler info for shared libs on Linux (#12605)
  • Fortran: Detect pointer size in gfortran on MinGW
  • Load platform files that need to know the ABI when possible
  • Factor makefile generator link rule lookup into helper function
  • Add CMAKE_GNUtoMS option to convert GNU .dll.a to MS .lib
  • Test CMAKE_GNUtoMS option in ExportImport on MinGW and MSys
  • cmTarget: Create helper method for versioned library names
  • Clinton Stimpson (2):
  • Fix XML safety issue with adding preprocessor defines in CodeBlocks project.
  • Qt4: Fix dependencies of QtDeclartive.
  • Dan Kegel (1):
  • Modules: Add XRes to FindX11.cmake
  • David Cole (17):
  • Begin post-2.8.6 development
  • CTest: Fix crash when variables are not defined
  • VS11: Fix comment generated at the top of *.sln files
  • CTest: Add COVERAGE_EXTRA_FLAGS cache variable (#12490)
  • CTest: Clear custom vectors before populating (#12383)
  • Tests: Add the MFC test (#11213)
  • Tests: Avoid MFC test automatically for VCExpress builds (#11213)
  • Tests: Fix MFC test w/ Make-based generators (#11213)
  • Tests: Fix MFC test for old vs6 dashboards (#11213)
  • Tests: Avoid MFC test automatically for Watcom WMake builds (#11213)
  • Tests: Fix MFC test to work with VS 10 and later (#11213)
  • VS10: Use expected values for UseOfMfc (#11213)
  • Tests: Add environment logging to the MFC test (#11213)
  • VS11: Update InstallRequiredSystemLibraries.cmake for VS11 (#11213)
  • Tests: Nudge MFC test to pass on VS 6 dashboards (#11213)
  • VS: Use "call " keyword with .cmd and .bat file custom commands (#12445)
  • CTest: Disallow problem chars in build and site names (#11792)
  • Eric NOULARD (3):
  • CPackRPM support component specific variables for spec files
  • Fix old reference to CMAKE_MAKE_PROGRAM inside CMAKE_BUILD_TOOL doc.
  • CPackRPM fix #12556 and enhance documentation
  • James Bigler (6):
  • Added support for CUDA_PATH which is present in the CUDA toolkit 3.2 onward.
  • Reset dependency file list when a dependency disappeared.
  • Add work around for CUDA in UNC paths.
  • Fixes for handling quotes in args and other places (Fix Bug 11726 and 12099).
  • Make CUDA working directory unique for each target.
  • Miscellaneous fixes.
  • Jean-Christophe Fillion-Robin (1):
  • CTest: Look for CTestConfig.cmake in build dir first, then source dir
  • Johan Bjork (1):
  • Xcode: Avoid spewing the environment on every script run (#12522)
  • Mateusz Loskot (1):
  • FindBoost: Use MSVC11 to find Boost on Windows (#12568)
  • Mathieu Malaterre (1):
  • TinyCC: Add default compilation flags (#12605)
  • Mike McQuaid (6):
  • Add QT_LIBRARIES_PLUGINS variable to UseQt4.
  • Add DeployQt4 module.
  • Match fixup_qt4_executable with documentation.
  • Don't resolve directories; are never relative.
  • Check plugin variables are defined before warning.
  • Check QtCore without warning.
  • Nicolas Despres (17):
  • Refactor TargetTypeNames.
  • Add const versions of some getters.
  • Constify many getters of cmGlobalGenerator.
  • Remove trailing white-spaces.
  • Fix typo.
  • Doxygen: Improve code documentation.
  • Doxygen: Generate call graph and relationships.
  • Doxygen: Fix warnings.
  • Doxygen: Remove dependency on VTK when building doxygen.
  • Usage: Document -j|--parallel option in help message.
  • Usage: Document all options printing usage information.
  • Usage: Document all options printing the version number.
  • Usage: Print help, version and copyright options in usage information.
  • Usage: Add missing exepath argument in get_prerequisites documentation.
  • ccmake: Align 'g' and 'q' key instructions.
  • ccmake: Document '/' key.
  • ccmake: Factor toggle key help instructions.
  • Niels Dekker (1):
  • Fix CMAKE_VERBOSE_MAKEFILE for VS10 vcxproj files (#12504)
  • Ondrej Balaz (1):
  • FindBISON: Fix bison++ version parsing to avoid "Offending entry"
  • Peter Collingbourne (4):
  • Make cmLocalGenerator::ConvertToLinkReference virtual
  • Introduce a cmLocalGenerator::ConvertToIncludeReference function
  • Introduce a cmGlobalGenerator::ResolveLanguageCompiler function
  • Fix configuration-dependent flag lookup in cmLocalGenerator::GetTargetFlags
  • Peter Kuemmel (1):
  • Add NEWLINE_STYLE option to configure_file (#3957)
  • Philip Lowman (1):
  • FindProtoBuf: Documented limitation of the public macro
  • Pierre-Francois Laquerre (1):
  • Fix path quoting in Qt4 macros
  • Robert Dailey (1):
  • VS: Add VS_SCC_AUXPATH target property (#12549)
  • Rolf Eike Beer (4):
  • libarchive: fix typo in CheckFileOffsetBits.cmake
  • Tell people that link_directories() is not what they are searching for
  • FindBISON: Fix matching output of "bison --version"
  • Tests: ExternalProject: Remove unnecessary 'svn --version' call
  • Stephen Kelly (13):
  • Add features from KDE for arguments to qdbusxml2cpp.
  • Remove unused define.
  • Build each library only once instead of once for each test.
  • Initialize LINK_INTERFACE_LIBRARIES target property with a variable
  • Also run moc automatically with Qt5.
  • Fix typo.
  • Don't assume the existence of QT_MAJOR_VERSION.
  • Update comments and method names to not be Qt4 specific.
  • Fix style.
  • target_link_libraries: Trim trailing whitespace
  • target_link_libraries: Add LINK_(PUBLIC|PRIVATE) options
  • moc is now part of the Qt5Core module
  • Add a test case for the use of Q_PRIVATE_SLOT.

New in CMake 2.8.6 (Oct 13, 2011)

  • Remove trailing whitespace
  • Minor improvements to the UsePkgConfig.cmake docs
  • Remove trailing whitespace
  • Improve behaviour of --find-package mode with try_run/try_compile
  • Use makefile->IssueMessage() for better error messages
  • Use version 11.0 for 12.x and 9.10 for 10.x intel versions to fix 12.1 vsIDE.
  • Also, check for 11.x as an intel fortran version.
  • Add Visual Studio 11 generator for x86 and x64 tools
  • Teach our tests about special cases for VS 11
  • CTestCustom.cmake: Ignore clang's summary warning
  • FindBullet: Also search for _Debug postfixed library names
  • Fix typo in set_target_properties' documentation.
  • Fix typo in UsePkgConfig.cmake

New in CMake 2.8.6 RC 4 (Oct 13, 2011)

  • FindFLEX.cmake: also search the include dir
  • Fix typos in FeatureSummary.cmake (#12462)
  • Don't warn when setting a property multiple times to the same value #12464
  • For VS Intel Fortran IDE builds, add a check to find the Fortran library PATH.
  • Enable Fortran tests for IDE builds.
  • FortranCInterface: Compile separate Fortran lib in VerifyC[XX]
  • Move IntelVSImplicitPath project to better location
  • Simplify IntelVSImplicitPath detection project
  • libarchive: Fix ssize_t detection with mingwrt 3.20
  • Make file(DOWNLOAD) fail on http error
  • Tests: Add a KWStyle test, equivalent to the make StyleCheck target
  • KWStyle Test: Activate by default if KWStyle is found
  • Xcode: Use EFFECTIVE_PLATFORM_NAME reference in ComputeOutputDir
  • Xcode: Add test to demonstrate iOS project in Xcode
  • CMake: Reference test targets only when BUILD_TESTING is ON
  • Tests: Add the more modern Mac64 nightly build
  • Release Scripts: Use Qt 4.7.4 on dashmacmini5 (#12460)
  • Revert "FindThreads: Try pthreads with no special option first (#11333)"
  • CPack fix #12449 doc mispelled
  • CPack fix template too
  • CPackDeb fix #10325 automagically use fakeroot for DEB if fakeroot is found
  • CPackRPM authorize per-component pre/post-[un]install scripts (#0012063)
  • Just code style changes.
  • Don't warn when nothing to do in visibility function.
  • Made ADD_COMPILER_EXPORT_FLAGS into a macro.
  • Make add_compiler_export_flags a function again.
  • remove stray brace in CPackDeb documentation

New in CMake 2.8.6 RC 3 (Oct 13, 2011)

  • FindBLAS/LAPACK fixes
  • FindBLAS/LAPACK fixes
  • Modules: Add support for more java archives in add_jar().
  • Search for the installed python interpreter first
  • Determine python version
  • Update documentation of FindPythonInterp.cmake
  • Use FIND_PACKAGE_HANDLE_STANDARD_ARGS second mode
  • VS: Map per-source Fortran flags to IDE options
  • VS: Map Fortran free- and fixed-format flags to IDE options
  • Fortran: Add support for free- and fixed-form flags
  • Xcode: Honor Fortran_FORMAT target and source file property
  • Set CMAKE__COMPILER_ID for VS generators
  • KWSys: Remove always-true dir_only parameter
  • KWSys: Add symlinks to directories as files (#12284)
  • FindPackageMessage: Eliminate new lines in cache entries
  • FindPackageMessage: Eliminate new lines using REGEX REPLACE
  • CMake: Add SaveCache at the end of successful Generate calls
  • Suppress Qt warning for dashmacmini5 builds
  • Suppress Qt warning for dashmacmini5 builds
  • Tests: Look for "Illegal" or "SegFault" in the output
  • CPack fix #12366 components RPM packages have the same package name
  • CPackRPM fix #12305, include directories in RPM package
  • Xcode: No spaces in makefile target names (#12370)
  • CMake: Write symlinks to directories as files in archives (#12284)
  • CPack: Do not recurse through directory symlinks (#12284)
  • Xcode: Do not emit the ZERO_CHECK target more than once
  • Xcode: Honor -g0 to disable debugging (#12377)
  • Johannes Stallkamp (1):
  • CTest: Fixed valgrind output parsing (#12260)
  • CMake: Remove documentation for -E build (#12446)
  • Add some more unit tests.
  • Don't put what some compilers consider junk at the end of the line.
  • CTest: Fix memory leaks on error
  • Fix file() command descriptor leak on error
  • ccmake: Fix off-by-one memory access error

New in CMake 2.8.6 RC 2 (Oct 13, 2011)

  • KWSys: Add hash function for std::string
  • KWSys: Fix std::string hash function for Borland
  • qt4: also find QtUiTools when cross compiling with mingw.
  • Xcode4: Requires more quoting of single quote char
  • cmake.m4: Use modern signature of install(FILES ...)
  • CMake Release Scripts: Changes for next release candidate...
  • Don't use a variable name that might be used in other files.
  • Create moc files in the current binary dir, not the top level.
  • Make the formatting of feature_summary output a little better.
  • Add the GenerateExportMacro with unit tests.
  • Handle the case where the user changes the DEFINE_SYMBOL property.
  • Add a newline at the end of the file.
  • Add a newline at the end of the file.
  • Add missing licence header.
  • Remove the fatal_warnings option which is no longer used.
  • Test for features, not specific compilers.
  • Simplify. We already know we have hidden visibility at this point.
  • Simplify the compiler feature check
  • Add some debug output.
  • Short-circuit the tests on unsupported compilers.
  • Test expected no-op instead of aborting the build.
  • Fix tests with clang.
  • Fix typo and tests failing as a result.
  • Only run the failure tests with gcc >= 4.2
  • Set the CMAKE_RUNTIME_OUTPUT_DIRECTORY for windows builds.
  • Only set the COMPILER_HAS_HIDDEN_VISIBILITY if GCC >= 4.2
  • Disable all export macros on Borland.
  • Another attempt to fix the tests on Borland.
  • Use the correct project name compiletest not compilefail
  • Fix off-by-not in test for Borland.
  • Another attempt at fixing Borland.
  • Add some debug output to narrow down deprecation test issues
  • Export deprecated free methods too.
  • Remember to surround the other deprecated test in the Borland check.
  • Only set the deprecated attribute if hidden visibilty is enabled.
  • Make sure the hidden visibility variables never get set on MINGW.
  • Don't use hidden visibility on non-mingw windows either.
  • Don't export methods on already exported classes.
  • Split the deprecated available check from setting macro values.
  • Test for compiler features, instead of for specific platforms.
  • Exclude the XL compiler from the hidden-visibility test.
  • Add the COMPILER_HAS_DEPRECATED only if it has a declspec variant
  • Don't change the expected build result based on the platform.
  • Expect the tests to pass if hidden visibilty is not enabled.
  • Test -Werror instead of enabling it per compiler.
  • Add some messaging output to make remaining issues findable.
  • Perform the -Werror test only once.
  • Test for deprecated attribute before declspec.
  • Try to error on deprecated on Intel and SunCC.
  • Borland can't do deprecated.
  • Fixup forgotten part of aed84517c942a4c40f493fcf997cdf6a047349f8
  • Disable testing of deprecated macros.
  • Don't enable deprecated on HP.
  • Don't enable deprecated on old GCC
  • Exclude cygwin from the hidden visibility feature.
  • Exclude PGI from exports and deprecated.
  • Start testing expected values for compiler flags.
  • Exclude win32 from hidden visibility checks.
  • Comment the test assertion for now
  • Test the correct cxx variable.
  • Fix the version extraction regex for clang.
  • Hopefully add version extraction for Intel.
  • Add some settings for non-truncation of test output.
  • Fix up the regex command for Intel.
  • Test for too-old-intel compilers.
  • Possibly fix test on HPUX.
  • Possibly fix configuration test on AIX.
  • Try to make the macros do almost nothing for Watcom.
  • More consistency in the macro options.
  • Add missing NO_EXPORT macro variant.
  • Look for errors reported by PGI too.
  • Quote paths in case there is a space in one of them.
  • Disable the tests for Watcom.
  • Fix Compiler id variable name.
  • Add quotes in case cmake is installed in a prefix with a space.
  • Fix the feature of using a specific prefix for macros.
  • Add documentation about the prefix and no_deprecated options.
  • Remove blank line at the start of the file.
  • Don't start a line with a dash(-)
  • Fix up verbatim code sections of the dox.
  • FindBoost: Call find_package with NO_MODULE first
  • Fix XL compilers on non-AIX machines.
  • Fixed link bugs in BlueGeneP build.

New in CMake 2.8.6 RC 1 (Oct 13, 2011)

  • FindSubversion: Invoke svn non-interactively (#12304)
  • Add a switch to disable a find_package() call completely
  • Add documentation for the CMAKE_DISABLE_FIND_PACKAGE_ switch
  • Add a basic test for CMAKE_DISABLE_FIND_PACKAGE_
  • Add macros cmake_push/pop_check_state() as discussed on the list.
  • Fix copyright notice test
  • Add CheckCXXSymbolExists.cmake, so this can be used also for C++
  • Minor fix to try_compile() docs (#12333)
  • Fix #12342: Add APPEND_STRING option to set_property()
  • Extend FeatureSummary: add PURPOSE of package and TYPE
  • FeatureSummary.cmake: remove "comment" field
  • FeatureSummary.cmake: add INCLUDE_QUIET_PACKAGES keyword
  • FeatureSummary.cmake: error out when a REQUIRED package is missing
  • FeatureSummary.cmake: only higher TYPEs can override previous TYPEs
  • FeatureSummary.cmake: cosmetics
  • FeatureSummary.cmake: update documentation
  • Remove debug output from CheckSymbolExists
  • Don't put files from CMAKE_ROOT into CodeBlocks projects (#12110)
  • More PATH_SUFFIXES for finding Postgresql and also search catalog/pg_type.h
  • Use FPHSA(), remove unnecessary stuff and don't recommend link_directories()
  • Mark the results from find() as advanced
  • FindPostgreSQL: fix PATH_SUFFIXES, better output for FPHSA
  • Strip trailing whitespace
  • FindGIF/FindFreetype.cmake: remove standard search paths from find-calls
  • FindGif: add giflib4 as one more name for the library under Windows
  • Add basic version check for giflib
  • Patch by Campbell Barton: puts definitions into C::B project file
  • Remove useless line of code
  • Also put builtin include dirs into CodeBlocks project file
  • Remove trailing whitespace
  • Also search for libxkbfile, XSync and SM include dir
  • Provide macro write_basic_config_version_file()
  • Add example to documentation
  • Add some tests for write_basic_config_version_file()
  • Fix copyright notice
  • Really fix copyright notice
  • Set UNSUITABLE instead of not COMPATIBLE
  • Improve documentation for WriteBasicConfigVersionFile.cmake
  • Add macros GETTEXT_PROCESS_POT() and GETTEXT_PROCESS_PO_FILES()
  • Support REQUIRED in FindGettext.cmake (using FPHSA.cmake)
  • Fix #12358: make optionally enabling ASM work again
  • Start work on automoc: add empty cmQtAutomoc class
  • Start implementing skeleton for automoc in cmake
  • Add actual automoc code from automoc
  • Remove the need to check for .h/.cxx during buildtime
  • Add the cmake module required currently for automoc
  • Add AUTOMOC to the add_library() command
  • Fix line lengths
  • Move code for parsing a cpp-file from the big loop to separate function
  • Initialize verbose based onb the env.var.
  • Color output when running moc
  • Add the generated automoc.cpp file to the cleaned files
  • Use cout instead of printf()
  • Remove trailing whitespace
  • Refactor SetupAutomocTarget() so it can be run after creating the target
  • Remove trailing whitespace
  • Move automoc processing from add_executable/library to cmGlobalGenerator
  • Nicer progress message for the automoc target
  • Add a test for automoc
  • Add documentation for AUTOMOC, add initialization via CMAKE_AUTOMOC
  • Fix logic which decides when to execute automoc test
  • Automoc.cmake is not needed anymore
  • Fix build: non-void function must return a value
  • Fix warnings
  • Fix bootstrap test with automoc
  • Only enable the automoc test after checking that Qt4 works
  • Fix build: use std::ios::out|ios::trunc instead of std::ios_base::out
  • Silence warning in automoc: use long instead of int
  • Fix automoc with VS builds: apply patch from Bill
  • Make clLocalGenerator::GetTargetFlags() public
  • Add find-package mode, which does nothing yet
  • Implement find-package mode of cmake
  • Replace cmake::GetScriptMode() with GetWorkingMode()
  • Fix copyright notice in new CMakeFindPackageMode.cmake
  • Better support for lib64 and Debian multiarch
  • Use the file-utility to test for 64bit if there is no /usr/lib64
  • Add a cmake.m4 for using cmake in autoconf projects instead of pkgconfig
  • Improve documentation for --find-package mode
  • Add a test for the new --find-package mode
  • Only run the test if we are using a makefile generator under UNIX
  • The makefile for the test was kindof wrong
  • Fix test on OpenBSD with BSD make
  • Rename helper macros print_compile_flags() to set_compile_flags_var()
  • Dont check for -isysroot and -mmacosx-version on OSX in --find-package mode
  • Disable any STATUS output in --find-package mode
  • Much improved test, should now be executed on all UNIXes
  • Make the --find-package test harder
  • Make the test harder by always having a space in the include dirs
  • Only enable the test when using GNU make
  • Fix line length
  • Use $(CXXFLAGS) and $(LDFLAGS) in the --find-package test Makefile
  • Require the current cmake version in --find-package mode
  • Fix --find-package mode on Cygwin, where enable_language(RC) is called
  • Alexey Ozeritsky (5):
  • fixed: search of acml libraries
  • gotoblas supported
  • ACML-GPU supported
  • ACML-GPU supportede
  • fixed: search of ATLAS library for C/C++-only projects
  • FindJava: Find missing java development executables.
  • Modules: Added CMake Java support.
  • Tests: Java tests should test UseJava.cmake
  • Tests: Check for the new Java exeutable variables.
  • Java: Use set_property/get_property for target variables.
  • Java: Fix documentation format and indentation
  • Search for the ASPELL executable
  • Only pay for unused variable checking if it is on.
  • Initial support for Intel Fortran VS2010.
  • Fix custom commands in VS2010 Fortran projects using CFG_INTDIR and test.
  • Use MSBuild when devenv is not around, since VCExpress seems broken.
  • Fix for bug #12413, nmake did not handle targets with + in the name.
  • MinGW: Remove old workaround and use native echo (#12283)
  • Document caveat of custom commands in multiple targets (#12311)
  • cmSystemTools: Remove trailing whitespace
  • RunSingleCommand: Fix indentation
  • RunSingleCommand: Avoid assignment in condition
  • Documentation: WIN32 not defined on Cygwin (#12334)
  • KWSys: Simplify SystemTools::GetTime implementation (#12261)
  • KWSys: Avoid conversion warning in SystemTools::GetTime
  • KWSys: Fix using long long and __int64 with hash_(set|map)
  • KWSys: __int64 and long long may be same type in specialization
  • XL: Fix old VisualAge branding of Fortran compiler
  • Do not crash when an imported target depends on a missing target
  • Fix CHECK_(C|CXX)_COMPILER_FLAG for Clang (#12394)
  • Clinton Stimpson (5):
  • Add -DQT_NO_DEBUG if no build type is specified so Qt plugins will work.
  • Add qt4/QtCore to help find Qt headers when cross-compiling.
  • Qt4: Fix reference of undefined variable when detecting frameworks on Mac OS X
  • Remove C compiler requirement from FindQt4.cmake
  • CPack/NSIS: Fix reinstall and multiple install issues when using components.
  • Begin post-2.8.5 development
  • Fix Architecture test to work with Xcode 4
  • Fix BuildDepends test to work with Xcode 4
  • Base architecture choice logic on Xcode version
  • Use correct default multiple architecture values in test
  • Add use of EFFECTIVE_PLATFORM_NAME to generated Xcode projects.
  • Correct KWStyle line too long error
  • Add fail regex to detect supported warning flags correctly.
  • Add support for Visual Studio project-specific globals (#8707)
  • Fix machine-specific UpdateGIT test failures
  • Ensure libgmp-10.dll is in the PATH for CMakeTestAllGenerators
  • Watcom: Add -c flag to wlib calls (#12245)
  • Add Watcom support to InstallRequiredSystemLibraries (#11866)
  • Watcom: Use correct args for execute_process call (#11866)
  • CTest: print failed tests in index order (#11746)
  • Fix line too long style violation
  • Documentation: Fix comments in the source code (#10941)
  • Add more find_path locations for DCMTK header files (#12323)
  • VS9: Add include_directories to midl command lines
  • KWSys: Remove translation path for "/tmp_mnt/" (#10595)
  • VS10: Avoid unnecessary rebuilds for custom commands
  • QtAutomoc test: Pass QT_QMAKE_EXECUTABLE
  • QtAutomoc: Eliminate compiler warning
  • CheckSymbolExists: Use IMMEDIATE flag for configure_file (#11333)
  • Xcode: Suppress same-old warning again.
  • Xcode: Save object id values in CMakeCache.txt (#11690)
  • Xcode: Remove PREBINDING attribute for Xcode 4 and above
  • RunSingleCommand: Replace verbose boolean with enum
  • RunSingleCommand: Add a OUTPUT_NORMAL flag.
  • Xcode: Quote ',' in Xcode string values (#12259)
  • Xcode: Rearrange CMakeReRun to enable parallel builds
  • VS: Factor Find64BitTools out of Win64 generator to parent
  • Add VisualStudio 9 and 10 generators for Itanium platform
  • multiarch: Treat lib/ as implicit link dir (#12326)
  • Java: Create java_class_filelist only if it does't exist.
  • Java: Added some dependency magic to avoid recompilations.
  • Java: Create correct jar archive dependencies.
  • remove extra output message from FindJava.cmake
  • FindThreads: Try pthreads with no special option first (#11333)
  • VS10: Add SCC support
  • Try regular compiler when no MPI compiler.
  • Fix issues with removing try_compile input file.
  • Added HDF5 high level Fortran bindings to available components.

New in CMake 2.8.5 (Oct 13, 2011)

  • Revert "Add a new function SWIG_GET_WRAPPER_DEPENDENCIES to UseSWIG.cmake" (this revert means that issue #4147 has been re-opened)

New in CMake 2.8.5 RC 3 (Oct 13, 2011)

  • Use devenv instead of msbuild for vs2010.
  • Revert "With very long file names, VS 2010 was unable to compile files."
  • Use relative paths for custom command inputs.
  • Look for VCExpress as a possible build tool as well as devenv.
  • KWSys: Recognize color TERM=screen-256color-bce (#12287)
  • find_library: Use lib->lib64 conversion in CXX-only projects (#12247,#12248)
  • libarchive: Install COPYING with CMake documentation
  • FindJNI: Search in Fedora arch-specific JVM location (#12276)
  • FindSWIG: Use NAMES in find_program directives (#12280)
  • Documentation: Fix spelling / formatting errors (#12287)
  • FindBoost: Fixes #12188
  • FindBoost: Also search for 1.46.1
  • Detect VS 2010 SP1, faster and more robust detection

New in CMake 2.8.5 RC 2 (Oct 13, 2011)

  • Fix a memory leak.
  • Fix for bug#10798. VS10 did not append -I flags with COMPILE_FLAGS prop.
  • Append and do not clobber CMAKE_CXX_FLAGS in the test.
  • Use bin tree for inclues to avoid -I with spaces in the path.
  • One more try. Use full path by default, and relative on broken compilers.
  • Fix for bug #11927, external project git clone step always runs vs10.
  • XL: Place Fortran modules with -qmoddir= flag (#12246)
  • Teach file(DOWNLOAD|UPLOAD) to timeout after inactivity
  • Xcode: Fix parallel build depends with universal binaries (#11844)
  • Fix style errors added by parent and grandparent
  • Use cascading-if for per-config test and install code
  • CTest: Report tests not run due to unknown configuration
  • GNU: Fix CMAKE_INCLUDE_SYSTEM_FLAG_ value (#12258)
  • Teach find_(library|package) about Linux multiarch (#12037)
  • Test find_package multiarch support (#12037)
  • BundleUtilities: Work w/ non .app exes on Mac (#12034)
  • BundleUtilities: Fix regex to extract dependents from ldd (#12034)
  • BundleUtilities: Fix test when using xcode (#12034)
  • BundleUtilities: Fix issues with custom target DEPENDS in test (#12034)
  • BundleUtilities: Disable running test on Windows unless using MSVC.
  • BundleUtilities: Run test on Windows if either MSVC or dumpbin was found.
  • BundleUtilities: Print reason for not loading module.so
  • BundleUtilities: Add rpath to loadable modules in test.
  • Revert "BundleUtilities: Run test on Windows if either MSVC or dumpbin was found."
  • Qt4: complete module dependencies in UseQt4.cmake
  • Add imported targets support for frameworks on Mac.
  • Fix plugin API for gcc 2.9-aix51-020209 (#12233)
  • BundleUtilities: Avoid a cryptic and unhelpful error message
  • BundleUtilities: Avoid test on Watcom dashboards (#12034)
  • CMake: eliminate use of cvs in the Release scripts
  • CPackRPM: Enhance documentation
  • Add some more Specs file tag handling.
  • CMake: Move tokenize to cmSystemTools
  • Xcode: Support multiple level nesting of XCode folders (#10039)
  • XCode: Support target folders on XCode.
  • multiarch: Set CMAKE_LIBRARY_ARCHITECTURE_REGEX for Linux|Hurd|kFreeBSD
  • FindProtobuf: Better MSVC support, Searching for protobuf lite
  • Fix , to - in Copyright message so it passes CMake.ModuleNotices test
  • : PROTOBUF_GENERATE_CPP now supports proto files outside current dir
  • CMake: Update documentation of STRING(SUBSTRING) for length -1 (#10740)
  • Fix XCode -> Xcode typos, notably in man page (#12231)
  • Modified the FindHDF5.cmake file to locate the Fortran bindings.
  • HDF5 high level library is a find COMPONENT now.
  • Add logic for CMake built HDF5 install.
  • Use CMAKE_CURRENT_LIST_DIR to locate FindPackageHandleStandardArgs.
  • Use HDF5_FOUND to control autoconf and CMake built FindHDF5.
  • Fix for bug 11752, mixed debug and release libraries.
  • FindHDF5 ensures good link lines when libraries are duplicated.
  • Remove unnecessary mark_as_advanced from FindHDF5.
  • Dynamic analysis test output should not be compressed.
  • We will actually compress memcheck output if the server supports it.
  • Fix type conversion warning

New in CMake 2.8.5 RC 1 (Oct 13, 2011)

  • Rework the way assembler is handled, use the C/CXX compiler by default
  • Make it possible to exlude external libs from dot files
  • GRAPHVIZ_IGNORE_TARGETS is now a list of regular expressions
  • Also generate dependers-graphviz files.
  • Fix XML escaping for the project() name in Eclipse projects (#11658)
  • Fix XML escaping for target names in Eclipse project files (#11658)
  • Add XML escaping for directory name in Eclipse projects (#11658)
  • Eclipse projects: created one linked resource for each subproject
  • Also add the SOURCES from add_custom_target() to CodeBlocks projects (#11736)
  • Add ASM support for the Intel compiler
  • Actually use CMAKE_ASM_COMPILER for asm, instead of CMAKE_C_COMPILER
  • Add support for ASM for the SunPro compiler
  • Add suport for ASM for the IBM XL compiler
  • Add support for ASm for the HP compiler.
  • Set the HP asm file suffix
  • Change the default rules so they fit better to the new ASM handling
  • Fix the default CMAKE_ASM_COMPILE_OBJECT, make XL-ASM use it
  • Add assemble- and preprocess commands for HP
  • The Assembler test now tests ASM for GNU, Intel, HP, XL and SunPro
  • Use a regexp instead a lot of ORs for checking the compiler ID
  • Only try assembler support for Makefile-based generators
  • Fix bad comparison in the detect assembler-code
  • It's ELSEIF(), not ELSIF()
  • Add temporary debug output for compiler ID detection for ASM
  • Add more regex for gcc, always print the ASM compiler ID
  • Add support for the Intel compiler used for ASM under Windows
  • use CMAKE_C_FLAGS when generating the assembler file
  • only enable the asm test for the Intel compiler if we are under UNIX
  • Remove trailing whitespace
  • Make use_mangled_mesa() available in cmake script mode (#11926)
  • Fix parsing include dirs and builtin macros for CXX-only projects
  • Don't skip the last builtin include dir for the Eclipse project file
  • fix VirtualFolders in Eclipse under Windows
  • ACML search improvement
  • Modules: Added CheckPrototypeDefinition module.
  • Tests: Added test for check_prototype_definition.
  • FindOpenSSL: Added support for pkg-config.
  • FindOpenSSL: We should only use hints to find OpenSSL.
  • FindOpenSSL: Fixed crypto und ssl variable names.
  • FindOpenSSL: Use find_package_handle_standard_args for version check.
  • With very long file names, VS 2010 was unable to compile files.
  • Fix for bug where VS2010 did not use .obj files as part of the build.
  • Reject directory names containing '=' (#11689)
  • FindQt4: Include builtin FindPackageHandleStandardArgs directly
  • Handle trailing slashes on add_custom_command DEPENDS
  • Handle relative WORKING_DIRECTORY in add_custom_(command|target)
  • Pass -o after -c for Fortran to avoid mpif77 ordering bug
  • Add link flag table entries for VS 7,8,9
  • VS: Create a Fortran DLL's import library directory
  • Fix linker flag initialization from LDFLAGS (#11840)
  • ccmake: Remove extra parens around comparison
  • Avoid direct use of std::stringstream
  • Honor module .def files with MinGW tools (#9997)
  • CTest: Update Git submodules with --recursive
  • libarchive: Remove unused build/windows directory (#11885)
  • Pass .def files directly to MinGW tools (#9997)
  • Fix Fortran test .def file symbol mangling
  • Require at least CMake 2.6.3 to build current CMake
  • GNUInstallDirs: Simplify and clarify documentation
  • KWSys: Require at least CMake 2.6.3
  • Remove unused CMAKE_BACKWARDS_COMPATIBILITY mark
  • Factor AIX and XL compiler flags into common module
  • Move RPATH flags to AIX per-compiler information files
  • Initialize ASM rpath flags for executables with those for shared libs
  • Add ASM platform information for XL compiler on AIX
  • Factor HP compiler flags into per-platform/per-compiler files
  • Add ASM platform information for HP compiler on HP
  • Add target property LINK_SEARCH_START_STATIC to aid static linking
  • Test static linking with LINK_SEARCH_START_STATIC
  • Fix Assembler test to parse C flags string before using
  • Teach Assembler test to generate main.s at build time
  • Do not bother enabling C++ in Assembler test
  • The link interface of MODULE libraries is empty (#11945)
  • CTest: Do not fail with submodules and Git < 1.6.5.0
  • Remove trailing whitespace
  • Add parens in cmTarget::ComputeLinkInterface logic
  • Validate custom command arguments (#11963)
  • Factor old-style -D flags out from -I flag generation
  • FindMPI: Fix documentation formatting
  • Generate target-wide flags before individual build rules
  • Optionally pass include directories with response files
  • Pass include directories with response files to GNU on Windows
  • Enable Java test more carefully on Apple
  • Disable Java test with Xcode generator
  • Allow '.' in target names in generator expressions (#12002)
  • GNUInstallDirs: Propagate DATAROOTDIR changes to dependent defaults
  • KWSys: Do not trust EXECUTABLE_OUTPUT_PATH for ProcessFwd9x encoding
  • Refine unused cache variable warning
  • Fix unused cache warning after multiple configure iterations
  • FortranCInterface: Fix mangling detection with Cray Fortran >= 7.3.2
  • Fix typo in include_directories documentation (#12020)
  • KWSys: Recognize rxvt-unicode-256color terminal (#12013)
  • Normalize slashes of add_custom_(command|target) DEPENDS (#11973)
  • COMP: Fix build against non-standard outside libarchive
  • Modules: Add comment and copyright notice validation to readme.txt
  • cmArchiveWrite: Clear xattr and acl from entries (#11958)
  • find_package: Forward component list for recursive calls in modules
  • XL: Set C++ and Fortran flags consistently with C
  • XL: Consolidate compiler flag information
  • XL: Avoid copying archives into shared libraries that link them
  • VS10: Fix working directory of consecutive custom commands (#11938)
  • Fix working drive of make rules on Windows
  • Change working drive only in MinGW Makefiles
  • VS: Use setlocal/endlocal only in VS 10 custom commands
  • VS10: Fix exit code of custom commands with setlocal/endlocal (#11938)
  • KWSys: Remove unused CheckCXXSourceRuns cmake module
  • find_package: Rename implementation of user package registry
  • find_package: Cleanup user package registry less aggressively
  • find_package: Document user package registry locations
  • find_package: Search a "system package registry"
  • find_package: Check both 32-bit and 64-bit registry views
  • find_package: Test system package registry when possible
  • find_package: Fix system package registry test path conversion
  • FindITK: Use passthru find_package config mode for messages
  • OpenBSD: Use 'arch -s' for host processor (#12143)
  • Fix case typo in CMAKE_BUILD_TYPE docs (#12148)
  • KWSys: Fix leaked FILE in EncodeExecutable error case
  • ENH: Fix Intel 12 plugin project generation for VS < 10
  • Revert "Honor RULE_MESSAGES property for build target messages" (#12190)
  • Fix signed/unsigned comparison in EscapeJSON
  • Fix run_compile_commands build on Apple GCC 3.3
  • Make std::map usage more portable in language=>flags/defines maps
  • Provide std::map::at for use in run_compile_commands
  • run_compile_commands: Avoid shadow in std::map::at workaround
  • Improve string(RANDOM) default seed
  • run_compile_commands: Avoid extra stl vector conversion
  • VS 6: Define _WIN32_WINNT to load wincrypt.h correctly
  • run_compile_commands: Cast istream::get() result to char
  • Fix CompileCommandOutput test for Make tools not supporting spaces
  • Explicitly cast time value in cmSystemTools::RandomSeed
  • Fix CompileCommandOutput test build on Windows
  • Add Absoft Fortran compiler id and basic flags
  • Absoft: Detect implicit link libraries on Linux and Mac
  • Absoft: Enable FortranCInterface check in Fortran test
  • Document status of output_required_files command (#12214)
  • Fix forced-seed argument type in string(RANDOM)
  • Add new module Armadillo
  • Corrected copyright format in FindArmadillo.cmake
  • Change to use fphsa to check required variables and version.
  • Fix grouping bug where "Ungrouped Entries" showed up as a child.
  • When checking find_package() components, special case qtmain.
  • Fix issues with find_path() for QtCore include dir on Mac. Fixes 11868.
  • Fix regression in 43cb9b8.
  • Speed up creation of parameters file for moc custom command.
  • Combine component packaging methods into an enum.
  • Add component support to DragNDrop generator.
  • ExternalProject Test: Increase test timeout value
  • CFBundle Test: Add PATHS for finding Rez (#11295)
  • CTest: Mark DART_TESTING_TIMEOUT as advanced (#10150)
  • Xcode: Allow override of CMAKE_CONFIGURATION_TYPES (#8914)
  • Tests: Eliminate unnecessary files and variables.
  • VS9: Map enable/disable PREfast flags (#10638)
  • Strip trailing space from xcode-select output (#10723)
  • CTest: Add alias for make test target (#4564)
  • Add CMAKE_SCRIPT_MODE_FILE variable (#2828)
  • Add CMAKE_ARGC and CMAKE_ARGV0..N-1 variables (#2828)
  • Fix KWStyle line-too-long complaint (#2828)
  • Documentation: Sync two differing copies of -E docs (#10446)
  • Clarify list subcommand documentation (#8154)
  • VS2010: Fixed GenerateManifest flag (#10704)
  • VS: Only use /MANIFEST if hasManifest is true (#11216)
  • Make file DOWNLOAD less noisy (#11761)
  • Begin post-2.8.4 development
  • Use stable_sort to preserve test order (#11877)
  • Implement file(UPLOAD (#11286)
  • Fix KWStyle line too long error (#11286)
  • ExternalProject: Extract file names from more urls
  • InstallRequiredSystemLibraries: Read reg values with get_filename_component
  • Add correct module notice header.
  • If getconf returns empty output, try cpuinfo. (#11302)
  • Add ProcessorCount support for QNX via pidin. (#11302)
  • Compare ProcessorCount to SystemInformation count. (#11302)
  • ProcessorCount test: more output, do not fail. (#11302)
  • ProcessorCount: Add support for remaining platforms (#11302)
  • ProcessorCount: Test fails if count is 0 (#11302)
  • ProcessorCount: Use ERROR_QUIET with execute_process (#11302)
  • ExternalProject: Add SVN_TRUST_CERT argument
  • CMake: Clarify the --debug-trycompile help text
  • ExternalProject: Always use --non-interactive with svn
  • VS10: Write header-only files in correct xml element (#11925)
  • CPackRPM honors all the different ways of packaging components
  • CPackRPM fix IRIX compiler warning (variable never used)
  • CPack remove "-ALL" suffix for ALL-IN-ONE packages
  • CPack Authorize DISPLAY_NAME usage in component package
  • CPack fix KWStyle warning
  • CPack remove previously CPack generated files (if any) before running CPack
  • CPackRPM Replace space in some CPACK_ vars (Fix bug 9932)
  • CPackRPM activate CPackRPM test on Linux systems where rpmbuild is found
  • CPackArchive package all components specified in CPACK_COMPONENTS_ALL
  • CPack more robust way to collect files belonging to a component
  • CPackRPM do not run test if build dir contains space
  • CPack fix compile error on VS70 and avoid KWStyle warnings
  • CPackRPM add more trace output in order to help failing diagnostics
  • CPackRPM even more trace in debug mode or in case of failure
  • CPackRPM non matching ENDIF
  • CPack try to please SUSE 64 bits and install lib in lib64 and not lib.
  • Remove debbuging typo
  • CPack fix CPackDeb crash when CPackDeb.cmake ends with a FATAL_ERROR
  • CPack fix #11930 and simplifies component packaging options
  • Fix #11964 Handle lib64 library on Linux
  • Fix KWStyle warnings
  • Split CPack.cmake in more manageable parts
  • Fix KWStyle warnings
  • CPackRPM Fix #12096: handle absolute install path with component install
  • CPack make RPM work on AIX. fix #0012183 merge patch from Pasi Valminen
  • Add FloatingPointModel to the list of known VS7 generator flags.
  • XCode: Also qoute [] as needed to set build-configurations.
  • Documentation: document platform specific -E commands (#10446)
  • CPackDeb add Component Support to DEB generator fix #0011655
  • refactor flags and defines
  • cache flags and defines
  • implement cxx command output
  • make compile command output optional
  • Adds a test for the compile command line output.
  • Only offer the compile command output feature on unix systems
  • CTest: Use the gcov --preserve-paths flag (#11717)
  • When cross compiling, don't double-root paths when using find_*.
  • CPackDeb: Fix #12006 broken package names
  • CPackDeb: Handle dirs for CONTROL_EXTRA correctly when packaging components
  • This commit fixes bug #0010316
  • Add a new function SWIG_GET_WRAPPER_DEPENDENCIES to UseSWIG.cmake
  • Add support for Java on HP
  • Add support for java on fedora
  • UseSWIG.cmake does not expand $(OutDir)
  • Add support for new swig 2.0 application
  • UseSWIG.cmake did not support multiple modules and parallel builds
  • Add support for FindJava on HP-UX and alpha
  • Add module ProcessorCount.cmake (#11302)
  • Documentation: Fix a few typos (#11883)
  • Add GNUInstallDirs module to define GNU layout (#3976)
  • VS7/8/9: Map whole program optimization flags (#10263)
  • Add support for CFBundle targets on the Mac (#11295)
  • output of Apache Maven
  • FindZLIB: print library instead of include directory
  • Removed most usage of Carbon in favour of CoreFoundation
  • VS8/9: Add flag map entries for /Zc:wchar_t (#10397)
  • VS7/8/9: Add flag map for string pooling option (#10397)
  • Add a string(FIND) sub-command (#11795)
  • FindMPI: Handle multiple languages
  • Added backward compatibility for input as well as output vars.
  • Ensure executable files have executable permissions.
  • Implement ctest_upload command
  • Change 'Files' tag to 'Upload' in Upload.xml
  • Don't tar/gz ctest_upload() files
  • Add the FILES keyword to ctest_upload command
  • cmCTestUploadCommand::CheckArgumentKeyword should return false if not FILES

New in CMake 2.8.4 (Oct 13, 2011)

  • Fix crash in GraphVizWriter when GRAPHVIZ_TARGET_IGNORE_REGEX is used
  • FindPerlLibs: Add notice of copyright
  • libarchive: Define major/minor/makedev only where needed (#11648)
  • libarchive: Use OpenSSL only if CMAKE_USE_OPENSSL (#11815)
  • Fix documentation of MSVC_VERSION (#11833)
  • Silence the may be used uninitialized warnings: initialize stuff.
  • CPack Tests the different ways of packaging components
  • Avoid foreach IN LISTS syntax which is not supported by CMake 2.6