CMake Portable Changelog

What's new in CMake Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.27.9 (Nov 30, 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.27.6 (Sep 20, 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.27.0 RC 1 (Jun 8, 2023)

  • PGP sig by 2D2CEF1034921684

New in CMake Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.24.2 (Sep 14, 2022)

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

New in CMake Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.24.0 RC 2 (Jun 23, 2022)

  • The release was packaged with CPack which is included as part of the release. The .sh files are self extracting gziped tar files. To install a .sh file, run it with /bin/sh and follow the directions. The OS-machine.tar.gz files are gziped tar files of the install tree. The OS-machine.tar.Z files are compressed tar files of the install tree. The tar file distributions can be untared in any directory. They are prefixed by the version of CMake.

New in CMake Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.14.0 (Mar 15, 2019)

  • The release was packaged with CPack which is included as part of the release. The .sh files are self extracting gziped tar files. To install a .sh file, run it with /bin/sh and follow the directions. The OS-machine.tar.gz files are gziped tar files of the install tree. The OS-machine.tar.Z files are compressed tar files of the install tree. The tar file distributions can be untared in any directory. They are prefixed by the version of CMake. For example, the Linux-x86_64 tar file is all under the directory cmake–Linux-x86_64. This prefix can be removed as long as the share, bin, man and doc directories are moved relative to each other. To build the source distributions, unpack them with zip or tar and follow the instructions in Readme.txt at the top of the source tree. See also the CMake 3.14 Release Notes. Source distributions:

New in CMake Portable 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 Portable 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 Portable 3.13.3 (Jan 17, 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.9.6 (Nov 10, 2017)

  • Restore exclusion of "gcc_eh" from implicit link libraries

New in CMake Portable 3.9.5 (Nov 4, 2017)

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

New in CMake Portable 3.9.4 (Oct 6, 2017)

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

New in CMake Portable 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 Portable 3.9.2 (Sep 8, 2017)

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

New in CMake Portable 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 Portable 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 Portable 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 Portable 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 Portable 3.2.2 (Jun 2, 2015)

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

New in CMake Portable 3.2.1 (Jun 2, 2015)

  • [CMake] cmake add_custom_command issue with multiple output files

New in CMake Portable 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 Portable 3.1.3 (Feb 28, 2015)

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

New in CMake Portable 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 Portable 3.1.1 (Feb 28, 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 Portable 3.1.0 (Feb 28, 2015)

  • [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 Portable 3.1.0 RC 3 (Feb 28, 2015)

  • 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 Portable 3.0.2 (Feb 28, 2015)

  • [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 Portable 3.0.1 (Feb 28, 2015)

  • [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 Portable 3.0 (Feb 28, 2015)

  • 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 Portable 2.8.12.2 (Feb 28, 2015)

  • 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 Portable 2.8.12.1 (Feb 28, 2015)

  • 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 Portable 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 Portable 2.8.10 RC3 (Nov 6, 2012)

  • SelectLibraryConfigurations: add testcase
  • SelectLibraryConfigurations: fix for release and debug libs being the same
  • BasicConfigVersion: Make docs refer to the macro, not the module name
  • Document LOCATION undefined behavior with use of LINKER_LANGUAGE.
  • GenEx: Add an accessor for imported targets in a makefile.
  • GenEx: Create cmGeneratorTargets for imported targets.
  • GexEx: Validate Target names and property names differently.
  • SelectLibraryConfigurations: Fix foreach(x IN LISTS ...) syntax

New in CMake Portable 2.8.10 RC2 (Nov 6, 2012)

  • Document CMAKE_FIND_PACKAGE_NAME
  • Automoc: fix #13572: issue with symbolic links
  • cmCTestSVN: Fix compilation with Sun CC 5.1
  • if: Document that plain 'NOTFOUND' is a false constant
  • string: Clarify regex documentation of '-' behavior
  • FortranCInterface: Pass all flags to VERIFY project (#13579)
  • Fix incorrect uninstall registry key name (#13578)
  • Ninja: also set OBJECT_DIR when compiling
  • Ninja: don't pollute current dir when using gui (#13495)
  • Ninja: implicit dependency for custom command files
  • Fix regression: write compile definitions if any
  • CTest: fix usage of memory checker with spaces in path
  • CTest: fix pre and post test commands with spaces
  • CTest: add tests that simulate memcheck runs
  • CTest: improve memory checker type detection
  • CTest: add a test for CTEST_CUSTOM_MEMCHECK_IGNORE
  • CTest: add a check with a quoted memory checker
  • GenEx: It is not an error to specify an empty parameter
  • GenEx: Return after error reported.
  • GenEx: Report actual target name not found, not "0" each time.
  • GenEx: Parse comma after colon tokens specially
  • GenEx: Validate target and property names.
  • GenEx: Ensure that the empty CONFIGURATION can be used conditionally.
  • GenEx: Add test for $ with empty parameter.
  • GenEx: Add tests for "0" and "1" expressions with literal commas.
  • GenEx: Don't use std::vector::at(int).
  • Attempt to fix the compile of cmake on Sun CC.
  • GenEx: Parse colon after arguments separator colon specially.
  • GenEx: Test the use of generator expressions to generate lists.
  • GenEx: Fix termination bugs in generator expression parser.
  • GenEx: Break if there are no more commas in the container
  • GenEx: Add some more asserts to verify code-sanity.
  • GenEx: Replace some failing tests with Borland and NMake makefiles.
  • GenEx: Fix reporting about not-found include directories and libraries.
  • Fix config-specific INCLUDE_DIRECTORIES in multi-config generators

New in CMake Portable 2.8.10 RC1 (Nov 6, 2012)

  • Remove trailing whitespace from most CMake and C/C++ code
  • Convert CMake-language commands to lower case
  • Remove CMake-language block-end command arguments
  • Eclipse: add support for the 4.2 Juno release (#13367)
  • Eclipse: fix #13358: don't create bad linked resources
  • Eclipse: fix #13358: don't create bad linked resources
  • Remove non-working KDE4 test
  • fix #13474: also rescan dependencies if the depender does not exist
  • fix line length
  • fix Java dependency scanning, broken in previous commit
  • error out if CTEST_USE_LAUNCHERS is TRUE but RULE_LAUNCH_* are not set
  • fix #13494: rerun automoc also if include dirs or moc options change
  • CMakeDetermineFortranCompiler: add support for cross-compiling (#13379)
  • Automoc: fix #13493, use target properties for include dirs
  • Automoc: do not use DEFINITIONS, but only COMPILE_DEFINITIONS
  • Automoc: also the makefile-COMPILE_DEFINITIONS
  • cmGlobalGenerator.h: some minor coding style fixes
  • Modules/readme.txt: fix typo
  • find_package: add support for a _NOT_FOUND_MESSAGE variable
  • exports: store pointers to all installations of each export set
  • exports: accept a missing target if it is exported exactly once
  • exports: first try at error handling if a target is missing
  • exports: fix build with MSVC6
  • exports: move the handling of missing targets into subclasses
  • exports: define a CMAKE_FIND_PACKAGE_NAME var set by find_package()
  • exports: add a test for exporting dependent targets
  • FindCURL: Find older MSVC prebuilts
  • FindSDL: Add version support for FindSDL_net
  • FindSDL: Use prefix SDL_NET, because it matches the file name.
  • FindSDL: Use SDL_IMAGE prefix for varibales
  • FindSDL: Add "cmake_minimum_required" to "try_compile" project
  • FindSDL: Format the documentation
  • FindSDL: Version support for FindSDL_sound
  • FindSDL: Use same capitalization for FPHSA as file name
  • FindSDL: Pass SDL_SOUND_LIBRARY to FIND_PACKAGE_HANDLE_STANDARD_ARGS
  • FindSDL: Use SDL_MIXER prefix for variables
  • FindSDL: Add version support for FindSDL_mixer
  • FindSDL: Update documentation
  • FindSDL: Use SDL_TTF prefix for variables
  • FindSDL: Add version support for FindSDL_ttf
  • FindSDL: Update documentation
  • FindSDL: Format documentation
  • FindSDL: Add version support
  • FindSDL: Add my copyright tag to all FindSDL_* modules
  • FindSDL: Remove from find_... calls PATHS that are set by default
  • FindSDL: Stay compatible with old input variables
  • Use OUTPUT_NORMAL instead of OUTPUT_MERGE for cmake -E chdir.
  • curl: Use find_package(OpenSSL)
  • file(DOWNLOAD): Generalize EXPECTED_MD5 to EXPECTED_HASH
  • file(DOWNLOAD): Add options for SSL
  • Utilities/Release: Enable CMAKE_USE_OPENSSL in nightly binaries
  • Add SSL_VERIFYPEER and CAINFO file options to ExternalProject_Add.
  • Revert "Ninja: don't expand any rsp files"
  • find_library: Add test covering lib->lib64 cases
  • find_library: Refactor lib->lib64 conversion
  • find_library: Simplify lib->lib expansion
  • find_library: Fix mixed lib->lib64 (non-)conversion cases (#13419)
  • CMakeDetermine(C|CXX)Compiler: Consider Clang compilers
  • Factor common code out of CMakeDetermine(ASM|C|CXX|Fortran)Compiler
  • Prefer generic system compilers by default for C, C++, and Fortran
  • Xcode: Fix object library references in multi-project trees (#13452)
  • Xcode: Run xcode-select to find Xcode version file (#13463)
  • Watcom: Simplify compiler version detection (#11866)
  • Remove trailing TAB from NSIS.template.in
  • Fix WarnUnusedUnusedViaUnset test pass/fail regex
  • CMakeVersion.bash: Update sed expression for lower-case 'set'
  • GetPrerequisites: Mark file_cmd as advanced cache entry
  • Add boolean generator expressions
  • Add $ boolean query generator expression
  • Recognize Clang ASM support (#13473)
  • Xcode: Set ASM source language in project file (#13472)
  • Tests/Assembler: Do not use assembler in universal binaries
  • Add FindHg module to find Mercurial
  • ExternalProject: Add Mercurial (hg) repository support
  • Qt4Macros: Fix recently broken resource file parsing
  • Tests/ObjectLibrary: Do not enable CXX in subdirectories
  • VS11: Rename 'Immersive' to 'WindowsAppContainer' (#12930)
  • VS: Disable precompiled headers unless enabled by project (#12930)
  • VS11: Generate flag tables from MSBuild V110 tool files
  • Detect Compaq compiler version with its id
  • Detect PathScale compiler version with its id
  • Detect TI compiler version with its id
  • Detect Comeau compiler version with its id
  • Detect SDCC compiler version with its id
  • Detect Cray compiler version with its id
  • Detect Analog VisualDSP++ compiler version with its id
  • Re-order C/C++/Fortran compiler determination logic
  • CMakeDetermineCompilerId: Prepare to detect IDE compiler id
  • Xcode: Detect the compiler id and tool location
  • VS10: Define CMAKE_VS_PLATFORM_TOOLSET variable
  • VS: Detect the compiler id and tool location
  • Cleanly enable a language in multiple subdirectories
  • Test variables CMAKE_(C|CXX|Fortran)_COMPILER(|_ID|_VERSION)
  • Document CMAKE__COMPILER_(ID|VERSION) values
  • Make platform information files specific to the CMake version
  • Move CMAKE__COMPILER_WORKS to compiler information files
  • Store ABI detection results in compiler information files
  • VS: Remove support for "free" version 2003 tools
  • VS: Simplify MSVC version reporting
  • Modernize MSVC compiler information files
  • VS: Fix MSVC_IDE definition recently broken by refactoring
  • add_library: Document POSITION_INDEPENDENT_CODE default (#13479)
  • magrathea: Tell cmELF about DT_RUNPATH (#13497)
  • Utilities/Release: Link AIX binary with large maxdata
  • Utilities/xml: Add .gitattributes to disable whitespace checks
  • Utilities/xml: Add docbook-4.5 DTD (#13508)
  • docbook: Fix formatter naming convention to avoid shadow
  • docbook: Fix Sun CC warning on ptr_fun(isalnum)
  • curl: Honor OPENSSL_NO_SSL2
  • if: Compare up to 8 components in VERSION tests
  • ExternalProject: Generalize URL_MD5 option to URL_HASH
  • Rename SSL terminology to TLS

New in CMake Portable 2.8.9 RC3 (Nov 6, 2012)

  • Fixed: FindLAPACK does not find MKL 10.3 when using gcc 4.x
  • pre-commit: Reject C++ code with lines too long
  • Tests/X11: Add missing include for 'rand'
  • Tests/ObjC++: Use standard header
  • CPack: Use bin subdir when looking for dpkg and rpmbuild
  • Do not run cpack at CMake time it is not available.
  • Find dpkg and rpmbuild in usual Fink and MacPort paths
  • Ninja: Cannot pass a reference to an anonymous object.
  • Ninja: Add support for OS X app bundles.
  • Ninja: Add support for OX X library framework.
  • Ensure 3rd party libraries are writable.
  • Remove trailing white-spaces.
  • Re-factor OS X bundle and framework generation.
  • Ninja: Copy resource files in the bundle.
  • Ninja: Add support for CFBundle.
  • Enable BundleTest with CLang too.
  • Re-factor CFBundle generation.
  • Ninja: Use same echo message as makefiles.
  • Re-factor bundle content copying rules generation.
  • Add missing this->.
  • Ninja: windres is also used for cross-compiling
  • Ninja: search for windres with prefix
  • Ninja: there could be null pointers
  • Ninja: more searching for windres
  • Ninja: path is already declared
  • Ninja: fix GCC 4.7 warning -Wconversion
  • Ninja: fix sytle
  • Ninja: also stop when .rc's .d file couldn't be generated
  • Ninja: readd quotes to src file path before patching it
  • Ninja: cmcldeps needs absolute paths for RCs
  • Ninja: on Mac no multiple -arch because of -M
  • Ninja: fix mis-matching endif() argument
  • Ninja: also mingw needs TARGET_PDB
  • Ninja: line length
  • Ninja: make TARGET_PDB a real .gdb file name
  • Ninja: make debug symbol suffix configurable by CMAKE_DEBUG_SYMBOL_SUFFIX
  • Ninja: remove 'friend' in ninja code
  • Ninja: remove warnings
  • Ninja: remove 'this' from member initializer list
  • Ninja: fixes for bcc
  • Ninja: void function can't return a value
  • Ninja: enable ninja support everywhere
  • Ninja: also bootstrap ninja files