[ANNOUNCE] CMake 3.19.3 available for download
We are pleased to announce that CMake 3.19.3 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.19.2: 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
[ANNOUNCE] CMake 3.19.4 available for download
We are pleased to announce that CMake 3.19.4 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.19.3: Ben Boeckel (2): FindHDF5: avoid writing to the output when testing h5cc FindHDF5: silence STATUS messages when found with QUIET Bianca van Schaik (2): GetPrerequisites: Include weak macOS dependencies file(GET_RUNTIME_DEPENDENCIES): Fix weak macOS libraries not detected Brad King (5): ci: speed up cmake and ninja downloads on Windows ci: download WiX on Windows Intel: Replace deprecated Fortran flag -nofor_main with -nofor-main Help: Add Ninja Multi-Config to list in GENERATOR_IS_MULTI_CONFIG CMake 3.19.4 Kelly Walker (1): IRSL: Install msvcp${v}${d}_atomic_wait.dll if available with CRT Marc Chevrier (1): Restore support for cross-compiling CMake itself jonathan molinatto (1): VS: Generalize Win10 max SDK version to all VS generators
[ANNOUNCE] CMake 3.18.6 available for download
We are pleased to announce that CMake 3.18.6 is now available for download. You can find the 3.18.6 release at: https://github.com/Kitware/CMake/releases/tag/v3.18.6 Thanks for your support! Changes made since CMake 3.18.5: Ben Boeckel (1): FindPython2: avoid doubling the extension in CPython2 SOABI Brad King (5): Ninja: Remove cleandead on regeneration ci: speed up cmake and ninja downloads on Windows ci: download WiX on Windows LexerParser: Do not override existing _POSIX_C_SOURCE definition CMake 3.18.6 Raul Tambre (1): CUDA: Fix user-set architectures during detection with Visual Studio
[ANNOUNCE] CMake 3.19.5 available for download
We are pleased to announce that CMake 3.19.5 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.19.4: Brad King (7): Apple: Fix linking to frameworks that do not exist until build time FindBoost: Add support for Boost 1.75 Help: Restore docs that find_library considers LIB, not INCLUDE LexerParser: Do not override existing _POSIX_C_SOURCE definition CTest: Restore running dashboard client Test step with modified files Clang: Use -imsvc for system include only with MSVC-like front-end CMake 3.19.5 Craig Scott (4): cmComputeLinkInformation: Fix misspelt private variable name Xcode: Don't hard-code SDK-provided implicit framework search paths IOS_INSTALL_COMBINED: Support Xcode 12 (command line only) Help: Add 3.19.5 release notes for Xcode iOS-related changes Robert Maynard (1): FindCUDAToolkit: Restore use of CUDA_PATH environment variable Yauheni Khnykin (1): FindXCTest: Fix output directory for test bundle with new build system
[ANNOUNCE] CMake 3.20.0-rc1 is ready for testing
I am proud to announce the first CMake 3.20 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.20 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.20/release/3.20.html Some of the more significant changes in CMake 3.20 are: * "cmake-presets(7)" gained support for build and test presets. * 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. * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * CMake’s support for Cross Compiling for Android is now merged with the Android NDK’s toolchain file. They now have similar behavior, though some variable names differ. User-facing changes include: * "find_*" functions will search NDK ABI / API specific paths by default. * The default "CMAKE_BUILD_TYPE" for Android is now "RelWithDebInfo". * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control cross-config handling when using the "Ninja Multi-Config" generator. * The "cmake_path()" command was added for operations on filesystem paths. * The "target_sources()" command now supports targets created by the "add_custom_target()" command. * 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. * "ctest(1)" gained a "--test-dir" option to specify the directory in which to look for tests. * 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 "AddFileDependencies" module is deprecated. Port projects to use "set_property()" directly. CMake 3.20 Release Notes Changes made since CMake 3.19 include the following. 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
[ANNOUNCE] CMake 3.19.6 available for download
We are pleased to announce that CMake 3.19.6 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.19.5: 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
[ANNOUNCE] CMake 3.20.0-rc2 is ready for testing
I am proud to announce the second CMake 3.20 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.20 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.20/release/3.20.html Some of the more significant changes in CMake 3.20 are: * "cmake-presets(7)" gained support for build and test presets. * 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. * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * CMake’s support for Cross Compiling for Android is now merged with the Android NDK’s toolchain file. They now have similar behavior, though some variable names differ. User-facing changes include: * "find_*" functions will search NDK ABI / API specific paths by default. * The default "CMAKE_BUILD_TYPE" for Android is now "RelWithDebInfo". * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control cross-config handling when using the "Ninja Multi-Config" generator. * The "cmake_path()" command was added for operations on filesystem paths. * The "target_sources()" command now supports targets created by the "add_custom_target()" command. * 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. * "ctest(1)" gained a "--test-dir" option to specify the directory in which to look for tests. * 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 "AddFileDependencies" module is deprecated. Port projects to use "set_property()" directly. CMake 3.20 Release Notes Changes made since CMake 3.19 include the following. 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
[ANNOUNCE] CMake 3.20.0-rc3 is ready for testing
I am proud to announce the third CMake 3.20 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.20 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.20/release/3.20.html Some of the more significant changes in CMake 3.20 are: * "cmake-presets(7)" gained support for build and test presets. * 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. * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * 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. * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control cross-config handling when using the "Ninja Multi-Config" generator. * The "cmake_path()" command was added for operations on filesystem paths. * The "target_sources()" command now supports targets created by the "add_custom_target()" command. * 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. * "ctest(1)" gained a "--test-dir" option to specify the directory in which to look for tests. * 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 "AddFileDependencies" module is deprecated. Port projects to use "set_property()" directly. CMake 3.20 Release Notes Changes made since CMake 3.19 include the following. New Features Presets --- * "cmake-presets(7)" gained support for build and test presets. Generators -- * Makefile Generators, for some toolchains, now use the compiler to extract implicit dependencies while compiling source files. Languages - * C++23 compiler modes may now be specified via the "CXX_STANDARD", "CUDA_STANDARD", or "OBJCXX_STANDARD" target properties, or via the "Compile Features" functionality’s "cxx_std_23" meta-feature. * "CUDA" language support now works when "nvcc" is a symbolic link, for example due to a "ccache" or "colornvcc" wrapper script. * The "CUDAARCHS" environment variable was added for initializing "CMAKE_CUDA_ARCHITECTURES". Useful in cases where the compiler default is unsuitable for the machine’s GPU. Compilers - * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * The Intel oneAPI NextGen LLVM compilers are now supported with compiler id "IntelLLVM": * The "icx"/"icpx" C/C++ compilers on Linux, and the "icx" C/C++ compiler on Windows, are fully supported as of oneAPI 2021.1. * The "ifx" Fortran compiler on Linux is partially supported. As of oneAPI 2021.1, "ifx" does not define several identification macros, so CMake identifies it as the classic "Intel" compiler. This works in many cases because "ifx" accepts the same command line parameters as "ifort". A future version of oneAPI may fix this. * The "ifx" Fortran compiler on Windows is not yet supported. The Intel oneAPI Classic compilers ("icc", "icpc", and "ifort") continue to be supported with compiler id "Intel". * Support was added for the IAR STM8 compiler. Platforms - * CMake’s support for Cross Compiling for Android is now merged with the Android NDK’s toolchain file. They now have similar behavior, though some variable names differ. User-facing changes include: * "find_*" functions will search NDK ABI / API specific paths by default. * The default "CMAKE_BUILD_TYPE" for Android is now "RelWithDebInfo". * The "CMAKE_ANDROID_NDK_VERSION" variable was added to report the version of the NDK. File-Based API -- * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. Commands * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control
[ANNOUNCE] CMake 3.20.0-rc4 is ready for testing
I am proud to announce the fourth CMake 3.20 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.20 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.20/release/3.20.html Some of the more significant changes in CMake 3.20 are: * "cmake-presets(7)" gained support for build and test presets. * 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. * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * 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. * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control cross-config handling when using the "Ninja Multi-Config" generator. * The "cmake_path()" command was added for operations on filesystem paths. * The "target_sources()" command now supports targets created by the "add_custom_target()" command. * 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. * "ctest(1)" gained a "--test-dir" option to specify the directory in which to look for tests. * 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 "AddFileDependencies" module is deprecated. Port projects to use "set_property()" directly. CMake 3.20 Release Notes Changes made since CMake 3.19 include the following. New Features Presets --- * "cmake-presets(7)" gained support for build and test presets. Generators -- * Makefile Generators, for some toolchains, now use the compiler to extract implicit dependencies while compiling source files. Languages - * C++23 compiler modes may now be specified via the "CXX_STANDARD", "CUDA_STANDARD", or "OBJCXX_STANDARD" target properties, or via the "Compile Features" functionality’s "cxx_std_23" meta-feature. * "CUDA" language support now works when "nvcc" is a symbolic link, for example due to a "ccache" or "colornvcc" wrapper script. * The "CUDAARCHS" environment variable was added for initializing "CMAKE_CUDA_ARCHITECTURES". Useful in cases where the compiler default is unsuitable for the machine’s GPU. Compilers - * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * The Intel oneAPI NextGen LLVM compilers are now supported with compiler id "IntelLLVM": * The "icx"/"icpx" C/C++ compilers on Linux, and the "icx" C/C++ compiler on Windows, are fully supported as of oneAPI 2021.1. * The "ifx" Fortran compiler on Linux is partially supported. As of oneAPI 2021.1, "ifx" does not define several identification macros, so CMake identifies it as the classic "Intel" compiler. This works in many cases because "ifx" accepts the same command line parameters as "ifort". A future version of oneAPI may fix this. * The "ifx" Fortran compiler on Windows is not yet supported. The Intel oneAPI Classic compilers ("icc", "icpc", and "ifort") continue to be supported with compiler id "Intel". * Support was added for the IAR STM8 compiler. Platforms - * CMake’s support for Cross Compiling for Android is now merged with the Android NDK’s toolchain file. They now have similar behavior, though some variable names differ. User-facing changes include: * "find_*" functions will search NDK ABI / API specific paths by default. * The default "CMAKE_BUILD_TYPE" for Android is now "RelWithDebInfo". * The "CMAKE_ANDROID_NDK_VERSION" variable was added to report the version of the NDK. File-Based API -- * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. Commands * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control
[ANNOUNCE] CMake 3.19.7 available for download
We are pleased to announce that CMake 3.19.7 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.19.6: 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
[ANNOUNCE] CMake 3.20.0-rc5 is ready for testing
I am proud to announce the fifth CMake 3.20 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.20 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.20/release/3.20.html Some of the more significant changes in CMake 3.20 are: * "cmake-presets(7)" gained support for build and test presets. * 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. * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * 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. * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control cross-config handling when using the "Ninja Multi-Config" generator. * The "cmake_path()" command was added for operations on filesystem paths. * The "target_sources()" command now supports targets created by the "add_custom_target()" command. * 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. * "ctest(1)" gained a "--test-dir" option to specify the directory in which to look for tests. * 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 "AddFileDependencies" module is deprecated. Port projects to use "set_property()" directly. CMake 3.20 Release Notes Changes made since CMake 3.19 include the following. New Features Presets --- * "cmake-presets(7)" gained support for build and test presets. Generators -- * Makefile Generators, for some toolchains, now use the compiler to extract implicit dependencies while compiling source files. Languages - * C++23 compiler modes may now be specified via the "CXX_STANDARD", "CUDA_STANDARD", or "OBJCXX_STANDARD" target properties, or via the "Compile Features" functionality’s "cxx_std_23" meta-feature. * "CUDA" language support now works when "nvcc" is a symbolic link, for example due to a "ccache" or "colornvcc" wrapper script. * The "CUDAARCHS" environment variable was added for initializing "CMAKE_CUDA_ARCHITECTURES". Useful in cases where the compiler default is unsuitable for the machine’s GPU. Compilers - * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * The Intel oneAPI NextGen LLVM compilers are now supported with compiler id "IntelLLVM": * The "icx"/"icpx" C/C++ compilers on Linux, and the "icx" C/C++ compiler on Windows, are fully supported as of oneAPI 2021.1. * The "ifx" Fortran compiler on Linux is partially supported. As of oneAPI 2021.1, "ifx" does not define several identification macros, so CMake identifies it as the classic "Intel" compiler. This works in many cases because "ifx" accepts the same command line parameters as "ifort". A future version of oneAPI may fix this. * The "ifx" Fortran compiler on Windows is not yet supported. The Intel oneAPI Classic compilers ("icc", "icpc", and "ifort") continue to be supported with compiler id "Intel". * Support was added for the IAR STM8 compiler. Platforms - * CMake’s support for Cross Compiling for Android is now merged with the Android NDK’s toolchain file. They now have similar behavior, though some variable names differ. User-facing changes include: * "find_*" functions will search NDK ABI / API specific paths by default. * The default "CMAKE_BUILD_TYPE" for Android is now "RelWithDebInfo". * The "CMAKE_ANDROID_NDK_VERSION" variable was added to report the version of the NDK. File-Based API -- * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. Commands * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control
[ANNOUNCE] CMake 3.20.0 available for download
I am happy to announce that CMake 3.20.0 is now available for download at: https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.20 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.20/release/3.20.html Some of the more significant changes in CMake 3.20 are: * "cmake-presets(7)" gained support for build and test presets. * 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. * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * 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. * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" that control cross-config handling when using the "Ninja Multi-Config" generator. * The "cmake_path()" command was added for operations on filesystem paths. * The "target_sources()" command now supports targets created by the "add_custom_target()" command. * 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. * "ctest(1)" gained a "--test-dir" option to specify the directory in which to look for tests. * 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 "AddFileDependencies" module is deprecated. Port projects to use "set_property()" directly. CMake 3.20 Release Notes Changes made since CMake 3.19 include the following. New Features Presets --- * "cmake-presets(7)" gained support for build and test presets. Generators -- * Makefile Generators, for some toolchains, now use the compiler to extract implicit dependencies while compiling source files. Languages - * C++23 compiler modes may now be specified via the "CXX_STANDARD", "CUDA_STANDARD", or "OBJCXX_STANDARD" target properties, or via the "Compile Features" functionality’s "cxx_std_23" meta-feature. * "CUDA" language support now works when "nvcc" is a symbolic link, for example due to a "ccache" or "colornvcc" wrapper script. * The "CUDAARCHS" environment variable was added for initializing "CMAKE_CUDA_ARCHITECTURES". Useful in cases where the compiler default is unsuitable for the machine’s GPU. Compilers - * The NVIDIA HPC SDK compilers are now supported with compiler id "NVHPC". * The Intel oneAPI NextGen LLVM compilers are now supported with compiler id "IntelLLVM": * The "icx"/"icpx" C/C++ compilers on Linux, and the "icx" C/C++ compiler on Windows, are fully supported as of oneAPI 2021.1. * The "ifx" Fortran compiler on Linux is partially supported. As of oneAPI 2021.1, "ifx" does not define several identification macros, so CMake identifies it as the classic "Intel" compiler. This works in many cases because "ifx" accepts the same command line parameters as "ifort". A future version of oneAPI may fix this. * The "ifx" Fortran compiler on Windows is not yet supported. The Intel oneAPI Classic compilers ("icc", "icpc", and "ifort") continue to be supported with compiler id "Intel". * Support was added for the IAR STM8 compiler. Platforms - * CMake’s support for Cross Compiling for Android is now merged with the Android NDK’s toolchain file. They now have similar behavior, though some variable names differ. User-facing changes include: * "find_*" functions will search NDK ABI / API specific paths by default. * The default "CMAKE_BUILD_TYPE" for Android is now "RelWithDebInfo". * The "CMAKE_ANDROID_NDK_VERSION" variable was added to report the version of the NDK. File-Based API -- * The "cmake-file-api(7)" gained a new “toolchains” object kind that describes the compiler used for each enabled language. Commands * "add_custom_command()" and "add_custom_target()" now support "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options. Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained support for new generator expressions "$" and "$" t
[ANNOUNCE] CMake 3.19.8 available for download
We are pleased to announce that CMake 3.19.8 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.19.7: Brad King (7): FindPkgConfig: Restore preference for first pkg-config in PATH Ninja: Do not recompact deps log in regeneration during a build Tests: Add RunCMake helper to run a plain script Help: CMAKE_APPLE_SILICON_PROCESSOR cannot be set in a toolchain file libarchive: Use uint8_t instead of u_char Utilities/Release: Add script to generate a table of files CMake 3.19.8
[ANNOUNCE] CMake 3.20.1 available for download
We are pleased to announce that CMake 3.20.1 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.20.0: 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 19.28-16.9 toolset FindIntl: Fix detection of intl built in to C library GNUInstallDirs: Clarify that CMAKE_INSTALL_ 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 < 10.2 and host compiler FindBLAS: Fix detection of OpenMP as dependency of BLA_STATIC Restore support for backslashes in initial language-wide flags CMake 3.20.1 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: $ and $ 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
[ANNOUNCE] CMake 3.20.2 available for download
We are pleased to announce that CMake 3.20.2 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.20.1: 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
[ANNOUNCE] CMake 3.20.3 available for download
We are pleased to announce that CMake 3.20.3 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.20.2: 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
[ANNOUNCE] CMake 3.20.4 available for download
We are pleased to announce that CMake 3.20.4 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.20.3: 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
[ANNOUNCE] CMake 3.20.5 available for download
We are pleased to announce that CMake 3.20.5 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.20.4: 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
[ANNOUNCE] CMake 3.21.0-rc1 is ready for testing
I am proud to announce the first CMake 3.21 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.21 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.21/release/3.21.html Some of the more significant changes in CMake 3.21 are: * CMake learned to support "HIP" as a first-class language that can be enabled via the "project()" and "enable_language()" commands. * 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__LINKER_LAUNCHER" variable and "_LINKER_LAUNCHER" target property for details. * "C_STANDARD", "OBJC_STANDARD", and the "Compile Features" functionality gained support for C17 and C23. * "cmake(1)" gained the "--toolchain " command-line option to specify a toolchain file. * Messages printed to a terminal now may be colored by message type. * The Fujitsu compiler is now supported using compiler id "Fujitsu" in traditional ("Trad") mode, and compiler id "FujitsuClang" in "Clang" mode. * 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 "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)". * A new "TARGET_RUNTIME_DLLS" generator expression was added. * "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. * "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". * The "foreach()" command now isolates loop variables in the loop scope. See policy "CMP0124" for details. CMake 3.21 Release Notes Changes made since CMake 3.20 include the following. 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__LINKER_LAUNCHER" variable and "_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 " command-line option to specify the location of the install prefix. * "cmake(1)" gained the "--toolchain " 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_
[ANNOUNCE] CMake 3.21.0-rc2 is ready for testing
I am proud to announce the second CMake 3.21 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.21 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.21/release/3.21.html Some of the more significant changes in CMake 3.21 are: * CMake learned to support "HIP" as a first-class language that can be enabled via the "project()" and "enable_language()" commands. * The "Visual Studio 17 2022" generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released. * 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__LINKER_LAUNCHER" variable and "_LINKER_LAUNCHER" target property for details. * "C_STANDARD", "OBJC_STANDARD", and the "Compile Features" functionality gained support for C17 and C23. * "cmake(1)" gained the "--toolchain " command-line option to specify a toolchain file. * Messages printed to a terminal now may be colored by message type. * The Fujitsu compiler is now supported using compiler id "Fujitsu" in traditional ("Trad") mode, and compiler id "FujitsuClang" in "Clang" mode. * 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 "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)". * A new "TARGET_RUNTIME_DLLS" generator expression was added. * "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. * "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". * The "foreach()" command now isolates loop variables in the loop scope. See policy "CMP0124" for details. CMake 3.21 Release Notes Changes made since CMake 3.20 include the following. 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__LINKER_LAUNCHER" variable and "_LINKER_LAUNCHER" target property for details. * The "Visual Studio 17 2022" generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released. 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 " command-line option to specify the location of the install prefix. * "cmake(1)" gained the "--toolchain " command-line option to specify a toolchain file. * "cmake(1)" "-E capabilities" output, for some generators, may now contain 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 th
[ANNOUNCE] CMake 3.21.0-rc3 is ready for testing
I am proud to announce the third CMake 3.21 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.21 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.21/release/3.21.html Some of the more significant changes in CMake 3.21 are: * CMake learned to support "HIP" as a first-class language that can be enabled via the "project()" and "enable_language()" commands. * The "Visual Studio 17 2022" generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released. * 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__LINKER_LAUNCHER" variable and "_LINKER_LAUNCHER" target property for details. * "C_STANDARD", "OBJC_STANDARD", and the "Compile Features" functionality gained support for C17 and C23. * "cmake(1)" gained the "--toolchain " command-line option to specify a toolchain file. * Messages printed to a terminal now may be colored by message type. * The Fujitsu compiler is now supported using compiler id "Fujitsu" in traditional ("Trad") mode, and compiler id "FujitsuClang" in "Clang" mode. * 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 "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)". * A new "TARGET_RUNTIME_DLLS" generator expression was added. * "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. * "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". * The "foreach()" command now isolates loop variables in the loop scope. See policy "CMP0124" for details. CMake 3.21 Release Notes Changes made since CMake 3.20 include the following. 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__LINKER_LAUNCHER" variable and "_LINKER_LAUNCHER" target property for details. * The "Visual Studio 17 2022" generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released. 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 " command-line option to specify the location of the install prefix. * "cmake(1)" gained the "--toolchain " command-line option to specify a toolchain file. * "cmake(1)" "-E capabilities" output, for some generators, may now contain 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
[ANNOUNCE] CMake 3.21.0 available for download
I am happy to announce that CMake 3.21.0 is now available for download at: https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.21 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.21/release/3.21.html Some of the more significant changes in CMake 3.21 are: * CMake learned to support "HIP" as a first-class language that can be enabled via the "project()" and "enable_language()" commands. * The "Visual Studio 17 2022" generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released. * 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__LINKER_LAUNCHER" variable and "_LINKER_LAUNCHER" target property for details. * "C_STANDARD", "OBJC_STANDARD", and the "Compile Features" functionality gained support for C17 and C23. * "cmake(1)" gained the "--toolchain " command-line option to specify a toolchain file. * Messages printed to a terminal now may be colored by message type. * The Fujitsu compiler is now supported using compiler id "Fujitsu" in traditional ("Trad") mode, and compiler id "FujitsuClang" in "Clang" mode. * 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 "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)". * A new "TARGET_RUNTIME_DLLS" generator expression was added. * "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. * "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". * The "foreach()" command now isolates loop variables in the loop scope. See policy "CMP0124" for details. CMake 3.21 Release Notes Changes made since CMake 3.20 include the following. 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__LINKER_LAUNCHER" variable and "_LINKER_LAUNCHER" target property for details. * The "Visual Studio 17 2022" generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released. 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 " command-line option to specify the location of the install prefix. * "cmake(1)" gained the "--toolchain " command-line option to specify a toolchain file. * "cmake(1)" "-E capabilities" output, for some generators, may now contain 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 supp
[ANNOUNCE] CMake 3.21.1 available for download
We are pleased to announce that CMake 3.21.1 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.21.0: Alexey Edelev (2): AUTOUIC: Fix cyclic dependency between generated UI headers and timestamp AUTOUIC: Fix generating of dependency rules for UI header files Ben Boeckel (5): ci: use CMake 3.21.0 Help/ctest_memcheck: mention `ctest_test` arguments TestDriver: suppress deprecated header lints for time.h TestDriver: use `CM_NULL` to avoid lints about `nullptr` usage Help/ctest_test: add a comment to also update `ctest_memcheck` Brad King (29): enable_language: Fix test for working compiler with CMP0126 NEW behavior VS: Recognize CSharp VS 2019 compiler version v142 VS: Improve v142 CL flag table LanguageStandard ordering VS: Add CSharp VS 2022 compiler version and flag table v143 VS: Add v143 flag tables for VS 17.0 Preview 2 VS: Fix `/MANIFESTUAC:` link flag mapping for v143 VS: Map the link `/debug` flag for v143 VS: Remove the /MERGE flag from v143 link flag table VS: Fix `/analyze:log` flag mapping for v143 VS: Add `-Zc:inline[-]` flag table entry for v143 VS: Populate `/Y-` flag table entry for v143 VS: Populate `-Qspectre-` flag table entry for v143 VS: Populate `/JMC-` flag table entry for v143 VS: Remove empty ConformanceMode entry from flag table for v143 VS: Remove empty LanguageStandard entries from flag table for v143 VS: Remove empty ExternalWarningLevel entry from flag table for v143 VS: Remove broken EnableASAN entry from flag table for v143 VS: Fix `/sourceDependencies` flag table entries for v143 VS: Update Visual Studio 17 2022 generator for Preview 2 CMakeDetermineCompilerId: Fix CMAKE_EXECUTABLE_FORMAT in CMP0126 NEW behavior try_compile: Propagate CMP0126 to the generated test project CMakeDependentOption: Revert "Allow parentheses in the depends string" cmMessenger: Revert to non-color messages on Windows cmGeneratorExpressionNode: Factor out local variable for global generator Swift: Update test case to try CMP0126 NEW behavior Ninja Multi-Config: Restore TARGET_OBJECTS support in cross-configs VS: Remove cl /FS entry from flag table for v142 and v143 VS: Remove C++ module CompileAs flag table entries for v142 and v143 CMake 3.21.1 Craig Scott (10): Help: Clarify wording of CMP0124 Help: Explain policy CMP0125 in more detail Help: Make policy CMP0126 wording more accurate Help: Fix trivial typo Help: Clarify which project() call PROJECT_IS_TOP_LEVEL is for Help: Re-order file() sub-commands in Filesystem section Help: Expand details for file(COPY_FILE) Help: Clarify and correct wording around DEPFILE option Help: Improve wording and cross-referencing for ctest JUnit output Help: Add cross-references between test output size ctest variables Jean-Marc Hengen (1): IAR: Moved search logic to BinUtils. Joerg Bornemann (1): AutoGen: Fix needless compilation of mocs_compilation.cpp KWSys Upstream (1): KWSys 2021-07-26 (d5fd6ca2) Kyle Edwards (2): CMakePresets.json: Fix expansion issue with empty binaryDir Tests: Clean up Ninja Multi-Config test from cb777dd Lorenzo Cappelletti (3): Compiler/IAR: search for both IAR's binaries * and *.exe Compiler/IAR: Avoid clobbering CMAKE_EXECUTABLE_SUFFIX Help: Document CMAKE_EXECUTABLE_SUFFIX_ explicitly Martin Storsjö (1): libuv: Fix building with mingw toolchains for ARM/AArch64 Raul Tambre (1): GNU: Correct C23 flags Yauheni Khnykin (1): FindXCTest: Fix output directory for test bundle with Xcode 12.5 Đoàn Trần Công Danh (2): Tests/CompileOptions: allow CMAKE_BUILD_TYPE=None Add option to explicitly avoid using execinfo for backtraces
[ANNOUNCE] CMake 3.21.2 available for download
We are pleased to announce that CMake 3.21.2 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.21.1: 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
[ANNOUNCE] CMake 3.20.6 available for download
We are pleased to announce that CMake 3.20.6 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.20.5: Ben Boeckel (1): GNUInstallDirs: avoid unwanted variable dereference Brad King (4): IntelLLVM: Fix C/C++ standard level flags on Windows FindJPEG: Revert "Search for 'turbojpeg' and 'turbojpeg-static' too" Tests: Fix RunCMake.try_compile C/CXX standards with IntelLLVM MSVC mode CMake 3.20.6 Evan Miller (1): macOS: Restore support for Mac OS X 10.4 (Tiger) Haibo Huang (1): Android: Restore searching PATH for executables Marc Chevrier (1): Makefiles: Normalize compiler-generated depfile paths Raul Tambre (1): CMakeCCompilerId: Fix C standard detection in Clang and IntelLLVM MSVC mode Robert Maynard (1): Check*CompilerFlag: Do not set result as a normal variable too
[ANNOUNCE] CMake 3.21.3 available for download
We are pleased to announce that CMake 3.21.3 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.21.2: 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
[ANNOUNCE] CMake 3.22.0-rc1 is ready for testing
I am proud to announce the first CMake 3.22 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.22 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.22/release/3.22.html Some of the more significant changes in CMake 3.22 are: * 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. See "CMP0128". * The "cmake_host_system_information()" command can now query OS identification variables from the "/etc/os-release" file. * The "CMAKE_BUILD_TYPE" environment variable was added to provide a default value for the "CMAKE_BUILD_TYPE" variable. * The "CMAKE_REQUIRE_FIND_PACKAGE_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. * 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 "Visual Studio 10 2010" generator is now deprecated and will be removed in a future version of CMake. CMake 3.22 Release Notes Changes made since CMake 3.21 include the following. 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__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_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. Properties -- * The "_EXTENSIONS" target property is now initialized to "CMAKE__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 =
[ANNOUNCE] CMake 3.21.4 available for download
We are pleased to announce that CMake 3.21.4 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.21.3: 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
[ANNOUNCE] CMake 3.22.0-rc2 is ready for testing
I am proud to announce the second CMake 3.22 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.22 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.22/release/3.22.html Some of the more significant changes in CMake 3.22 are: * 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. See "CMP0128". * The "cmake_host_system_information()" command can now query OS identification variables from the "/etc/os-release" file. * The "CMAKE_BUILD_TYPE" environment variable was added to provide a default value for the "CMAKE_BUILD_TYPE" variable. * The "CMAKE_REQUIRE_FIND_PACKAGE_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. * 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 "Visual Studio 10 2010" generator is now deprecated and will be removed in a future version of CMake. CMake 3.22 Release Notes Changes made since CMake 3.21 include the following. 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__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_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. Properties -- * The "_EXTENSIONS" target property is now initialized to "CMAKE__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
[ANNOUNCE] CMake 3.22.0-rc3 is ready for testing
I am proud to announce the third CMake 3.22 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.22 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.22/release/3.22.html Some of the more significant changes in CMake 3.22 are: * 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. See "CMP0128". * The "cmake_host_system_information()" command can now query OS identification variables from the "/etc/os-release" file. * The "CMAKE_BUILD_TYPE" environment variable was added to provide a default value for the "CMAKE_BUILD_TYPE" variable. * The "CMAKE_REQUIRE_FIND_PACKAGE_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. * 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 "Visual Studio 10 2010" generator is now deprecated and will be removed in a future version of CMake. CMake 3.22 Release Notes Changes made since CMake 3.21 include the following. 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__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_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. Properties -- * The "_EXTENSIONS" target property is now initialized to "CMAKE__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 =
[ANNOUNCE] CMake 3.22.0 available for download
I am happy to announce that CMake 3.22.0 is now available for download at: https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.22 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.22/release/3.22.html Some of the more significant changes in CMake 3.22 are: * 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. See "CMP0128". * The "cmake_host_system_information()" command can now query OS identification variables from the "/etc/os-release" file. * The "CMAKE_BUILD_TYPE" environment variable was added to provide a default value for the "CMAKE_BUILD_TYPE" variable. * The "CMAKE_REQUIRE_FIND_PACKAGE_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. * 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 "Visual Studio 10 2010" generator is now deprecated and will be removed in a future version of CMake. CMake 3.22 Release Notes Changes made since CMake 3.21 include the following. 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__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_" variable was added to turn a non-REQUIRED "find_package()" call into a REQUIRED one. Properties -- * The "_EXTENSIONS" target property is now initialized to "CMAKE__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 =
[ANNOUNCE] CMake 3.22.1 available for download
We are pleased to announce that CMake 3.22.1 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.22.0: 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_CMP Help: Suggest CMAKE_POLICY_DEFAULT_CMP0077 in CMP0077 docs Help: Suggest CMAKE_POLICY_DEFAULT_CMP0126 in CMP0126 docs gitlab-ci: update macOS jobs to use Xcode 13.1 CompilerId: Restore support for classic C by avoiding C++ style comments cmSystemTools: Remove unnecessary mark-as-used casts to void file(RPATH): Restore tolerance of unknown formats if new RPATH is empty FindPkgConfig: Restore finding pkg-config before pkgconf VS: Revert "Add missing label in C# project-build events" ci: Enable more VS tests that use managed code Utilities/Release: Add script to sign/notarize macOS application bundle HIP: Enable CMAKE_EXPORT_COMPILE_COMMANDS for HIP CMake 3.22.1 Christoph Reiter (1): mingw: fix calling convention for strftime() Craig Scott (4): Help: ENVIRONMENT_MODIFICATION path_list_... separator is based on host Help: Use definition list for allowed values of CMAKE_INSTALL_MODE Help: Explicitly state that if(ENV{some_var}) is always false Help: Be more explicit about the behavior of if() Felix Lelchuk (1): Help: Clarify CMAKE_INSTALL_MODE documentation Marc Chevrier (2): UseSWIG: ensure directory for depfile exists FindPython: clarify static libraries hint usage Raphael Gozzo (1): CMakeParseLibraryArchitecture: Fix parsing /lib/ implicit object path Robert Maynard (1): GNUInstallDirs: Prefer system lib64 over conda lib when ambiguous
[ANNOUNCE] CMake 3.22.2 available for download
We are pleased to announce that CMake 3.22.2 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.22.1: 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
[ANNOUNCE] CMake 3.21.5 available for download
We are pleased to announce that CMake 3.21.5 is now available for download. Please use the latest release from our download page: https://cmake.org/download/ Thanks for your support! Changes made since CMake 3.21.4: Benjamin Sluis (1): VS: Remove the '/guard:cf' flag from v143 link flag table Brad King (9): GNUtoMS: Add search path for VS 2022 environment scripts cmScanDepFormat: Accept P1689r4 files with version 1 Help: Clarify TARGET_RUNTIME_DLLS behavior on imported targets IntelLLVM: Enable Fortran module rebuild avoidance in Makefile generators gitlab-ci: update macOS jobs to use Xcode 13.2 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 CMake 3.21.5 Marc Chevrier (1): UseSWIG: ensure directory for depfile exists Mattias Ellert (1): FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG when pthread is found in libc William R. Dieter (3): IntelLLVM: Use MSVC linker with MSVC frontend variant Fortran: Save frontend variant persistently for IntelLLVM VS: Fix detecting icx.exe with Intel Compiler toolsets newer than 2021 friendlyanon (1): Help: Drop incorrect versionadded for try_compile result variable
[ANNOUNCE] CMake 3.23.0-rc1 is ready for testing
I am proud to announce the first CMake 3.23 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.23 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.23/release/3.23.html 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+. CMake 3.23 Release Notes Changes made since CMake 3.22 include the following. New Features Presets --- * "cmake-presets(7)" files now support schema version "4". * "cmake-presets(7)" files now have an optional "include" field, which allows the files to include other files. * "cmake-presets(7)" gained support for specifying the "resolvePackageReferences" command line option in a build preset. Generators -- * 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 Visual Studio Generators for VS 2017 and above learned to use portable instances of Visual Studio not known to the VS installer. See the "CMAKE_GENERATOR_INSTANCE" variable. Command-Line * The "cmake(1)" "--build" command, when used with Visual Studio Generators on projects that set the "VS_PACKAGE_REFERENCES" target property, now automatically restores package references from NuGet. The cache variable "CMAKE_VS_NUGET_PACKAGE_RESTORE" may be set to toggle this behavior in a build tree. Use the "--resolve-package- references=" command-line option to control the behavior on one invocation. * The "cmake(1)" command line tool gained a "--debug-find-pkg=" option to enable debug messages under specific "find_package()" calls. * The "cmake(1)" command line tool gained a "--debug-find-var=" option to enable debug messages for "find_*" calls that use specific result variables. Compilers - * 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". File-Based API -- * The "cmake-file-api(7)" "codemodel" version 2 "version" field has been updated to "2.4". * The "cmake-file-api(7)" "codemodel" version 2 "directory" object "installers" field gained a new "fileSet" installer type. Commands * The "define_property()" command gained a new "INITIALIZE_FROM_VARIABLE" option to cause a target property to be initialized from a variable when a target is created. * The "install(TARGETS)" command gained a new "FILE_SET" argument, which can be used to install header file sets associated with a target. * The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands now support the "%f" specifier for microseconds. * 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. Variables - * The "CMAKE_CUDA_ARCHITECTURES" variable and associated "CUDA_ARCHITECTURES" target property now support the "all", and "all-major" values for CUDA toolkit 7.0+. * The "CMAKE_IGNORE_PREFIX_PATH" and "CMAKE_SYSTEM_IGNORE_PREFIX_PATH" variables were added to tell the "find_package()", "find_program()", "find_library()", "find_path()", and "find_file()" commands to ignore specified prefixes. * The "CMAKE_LINK_LIBRARIES_ONLY_TARGETS" variable and corresponding "LINK_LIBRARIES_ONLY_TARGETS" target property were added to optionally require that all link items that can be target names are actually names of existing targets. Properties -- * The "HEADER_SETS" and "INTERFACE_HEADER_SETS" target properties were added to list header sets associated with a target. * The "HEADER_SET" and "HEADER_SET_" target properti
[ANNOUNCE] CMake 3.23.0-rc5 is ready for testing
I am proud to announce the fifth CMake 3.23 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.23 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.23/release/3.23.html 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+. CMake 3.23 Release Notes Changes made since CMake 3.22 include the following. New Features Presets --- * "cmake-presets(7)" files now support schema version "4". * "cmake-presets(7)" files now have an optional "include" field, which allows the files to include other files. * "cmake-presets(7)" files now support a "${fileDir}" macro, which contains the directory containing the preset file. * "cmake-presets(7)" gained support for specifying the "resolvePackageReferences" command line option in a build preset to control restoration behavior of package references from external package managers. Currently this is only supported by the Visual Studio generator to support restoring packages from NuGet. Other generators ignore this option. Generators -- * 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 Visual Studio Generators for VS 2017 and above learned to use portable instances of Visual Studio not known to the VS installer. See the "CMAKE_GENERATOR_INSTANCE" variable. Command-Line * The "cmake(1)" "--build" command, when used with Visual Studio Generators on projects that set the "VS_PACKAGE_REFERENCES" target property, now automatically restores package references from NuGet. The cache variable "CMAKE_VS_NUGET_PACKAGE_RESTORE" may be set to toggle this behavior in a build tree. Use the "--resolve-package- references=" command-line option to control the behavior on one invocation. * The "cmake(1)" command line tool gained a "--debug-find-pkg=" option to enable debug messages under specific "find_package()" calls. * The "cmake(1)" command line tool gained a "--debug-find-var=" option to enable debug messages for "find_*" calls that use specific result variables. Compilers - * 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". File-Based API -- * The "cmake-file-api(7)" "codemodel" version 2 "version" field has been updated to "2.4". * The "cmake-file-api(7)" "codemodel" version 2 "directory" object "installers" field gained a new "fileSet" installer type. Commands * The "define_property()" command gained a new "INITIALIZE_FROM_VARIABLE" option to cause a target property to be initialized from a variable when a target is created. * The "install(TARGETS)" command gained a new "FILE_SET" argument, which can be used to install header file sets associated with a target. * The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands now support the "%f" specifier for microseconds. * 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. Variables - * The "CMAKE_CUDA_ARCHITECTURES" variable and associated "CUDA_ARCHITECTURES" target property now support the "all", and "all-major" values for CUDA toolkit 7.0+. * The "CMAKE_IGNORE_PREFIX_PATH" and "CMAKE_SYSTEM_IGNORE_PREFIX_PATH" variables were added to tell the "find_package()", "find_program()", "find_library()", "find_path()", and "find_file()" commands to ignore specified prefixes. * The "CMAKE_LINK_LIBRARIES_ONLY_TARGETS" variable and corresponding "LINK_LIBRARIE
[ANNOUNCE] CMake 3.26.0-rc4 is ready for testing
I am proud to announce the fourth CMake 3.26 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.26 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.26/release/3.26.html Some of the more significant changes in CMake 3.26 are: * The "ASM_MARMASM" language was added to support the Microsoft ARM assembler language. * CMake now writes a YAML log of configure-time checks to "CMakeFiles/CMakeConfigureLog.yaml" under the top of the build tree. See the "cmake-configure-log(7)" manual. * The "cmake-file-api(7)" "codemodel" version 2 "target" object gained a new "fileSets" field and associated "fileSetIndex" field to "sources" objects. * The "$" generator expression was added to prevent usage requirements from being exported to dependent projects. * Language Standard Flags, such as "-std=c++11", when generated due to "target_compile_features()" or "CMAKE__STANDARD", are now placed before flags added by "target_compile_options()", rather than after them. * The top-level "project()" call will now emit an author warning if the documented command order in relation to "cmake_minimum_required()" is not respected. CMake 3.26 Release Notes Changes made since CMake 3.25 include the following. 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__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 "_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__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 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 "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 the support for the "perl5" language. Generator Expressions - * The "$" 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=" command line argument of "ctest(1)". Deprecated and Removed Features === * The "CMakeFiles/CMakeOutput.log
[ANNOUNCE] CMake 3.26.0-rc5 is ready for testing
I am proud to announce the fifth CMake 3.26 release candidate. https://cmake.org/download/ Documentation is available at: https://cmake.org/cmake/help/v3.26 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.26/release/3.26.html Some of the more significant changes in CMake 3.26 are: * The "ASM_MARMASM" language was added to support the Microsoft ARM assembler language. * CMake now writes a YAML log of configure-time checks to "CMakeFiles/CMakeConfigureLog.yaml" under the top of the build tree. See the "cmake-configure-log(7)" manual. * The "cmake-file-api(7)" "codemodel" version 2 "target" object gained a new "fileSets" field and associated "fileSetIndex" field to "sources" objects. * The "$" generator expression was added to prevent usage requirements from being exported to dependent projects. * Language Standard Flags, such as "-std=c++11", when generated due to "target_compile_features()" or "CMAKE__STANDARD", are now placed before flags added by "target_compile_options()", rather than after them. * The top-level "project()" call will now emit an author warning if the documented command order in relation to "cmake_minimum_required()" is not respected. CMake 3.26 Release Notes Changes made since CMake 3.25 include the following. 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__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 "_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__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 "$" 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=" command line argument of "ctest(1)". Deprecated and Removed Features === * The "CMakeFiles/CMakeOutput.