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

Documentation is available at:=C2=A0=C2=A0https://cmake.org/cmake/help/v3.29

Release notes appear below= and are also published at
=C2=A0=C2=A0https://cmake.org/cmake/h= elp/v3.29/release/3.29.html

Release milestone is available at:=C2=A0=C2=A0https://gitlab.kitware.com/cmake/cmake/-/milestone= s/136

Some of the more significant changes in CMake 3.29 are:
* The LLVM/Clang GNU-like frontend on Windows ("clang++") ma= y now be
=C2=A0 used to compile "CUDA" language sources.
* TI Clang-based compilers are now supported with compiler id
=C2=A0 &= quot;TIClang".

* The "cmake_language(EXIT)" sub-comma= nd was added to terminate "cmake
=C2=A0 -P" scripts with a spe= cified exit code.

* The "export(SETUP)" sub-command was ad= ded to configure export sets.
=C2=A0 Its "PACKAGE_DEPENDENCY" = option configures how "find_dependency()"
=C2=A0 calls are exp= orted.=C2=A0 Its "TARGET" option's "XCFRAMEWORK_LOCATION= "
=C2=A0 setting specifies the location of a ".xcframework&quo= t; that can be
=C2=A0 substituted for an installed target.

* &quo= t;install(EXPORT)" and "export(EXPORT)" learned a new
=C2= =A0 "EXPORT_PACKAGE_DEPENDENCIES" argument, which can be used to<= br>=C2=A0 generate "find_dependency()" calls based on what target= s the
=C2=A0 exported targets depend on.

* The "CMAKE_LINKER= _TYPE" variable and corresponding "LINKER_TYPE"
=C2=A0 ta= rget property were added to specify what linker to use with some
=C2=A0 = toolchains.

* A "CMAKE_TEST_LAUNCHER" variable and corresp= onding "TEST_LAUNCHER"
=C2=A0 target property were added to sp= ecify a launcher to be used by
=C2=A0 executable targets when invoked by= tests added by the "add_test()"
=C2=A0 command.


CMake 3.29 Release Notes
************************

Changes made = since CMake 3.28 include the following.


New Features
=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


Command-Line
------------
<= br>* "cmake(1)" "-E cat" can now print the standard inp= ut by passing the
=C2=A0 "-" argument.


Generators----------

* Visual Studio Generators now support selecting betwee= n the Intel
=C2=A0 oneAPI Fortran compiler ("ifx") and the Int= el classic Fortran
=C2=A0 compiler ("ifort") using a "for= tran=3D" field in
=C2=A0 "CMAKE_GENERATOR_TOOLSET".

File-Based API
--------------

* The "cmake-file-api(7)= " "codemodel" version 2 "version" field has
=C2= =A0 been updated to 2.7.

* The "cmake-file-api(7)" "c= odemodel" version 2 "target" object gained
=C2=A0 a new &= quot;launchers" field.


Compilers
---------

* The = LLVM/Clang GNU-like frontend on Windows ("clang++") may now be=C2=A0 used to compile "CUDA" language sources.

* Compile= rs targeting the GNU ABI on Windows (MinGW) may now be used
=C2=A0 to co= mpile Objective C ("OBJC") and Objective C++ ("OBJCXX")= .=C2=A0 These
=C2=A0 include GNU compilers ("gcc" and "g+= +") and the LLVM/Clang GNU-like
=C2=A0 frontends ("clang"= and "clang++").

* TI Clang-based compilers are now suppor= ted with compiler id
=C2=A0 "TIClang".


Commands
= --------

* The add_custom_command(TARGET) signature now supports add= ing build
=C2=A0 events through Alias Targets.

* The "cmake_= language(EXIT)" sub-command was added to terminate "cmake
=C2= =A0 -P" scripts with a specified exit code.

* The "export(= SETUP)" sub-command was added to configure export sets.
=C2=A0 Its = "PACKAGE_DEPENDENCY" option configures how "find_dependency(= )"
=C2=A0 calls are exported.=C2=A0 Its "TARGET" option&#= 39;s "XCFRAMEWORK_LOCATION"
=C2=A0 setting specifies the locat= ion of a ".xcframework" that can be
=C2=A0 substituted for an = installed target.

* The "if()" command gained new tests &q= uot;IS_READABLE", "IS_WRITABLE" and
=C2=A0 "IS_EXECU= TABLE" to check file or directory permissions.

* "install(= EXPORT)" and "export(EXPORT)" learned a new
=C2=A0 "= EXPORT_PACKAGE_DEPENDENCIES" argument, which can be used to
=C2=A0 = generate "find_dependency()" calls based on what targets the
= =C2=A0 exported targets depend on.


Variables
---------
* The "CMAKE_INSTALL_PREFIX" environment variable was added to p= rovide
=C2=A0 a default value for the "CMAKE_INSTALL_PREFIX" v= ariable.

* The "CMAKE_LINKER_TYPE" variable and correspond= ing "LINKER_TYPE"
=C2=A0 target property were added to specify= what linker to use with some
=C2=A0 toolchains.

* The "CMAK= E_<LANG>_COMPILER_LINKER",
=C2=A0 "CMAKE_<LANG>_CO= MPILER_LINKER_ID",
=C2=A0 "CMAKE_<LANG>_COMPILER_LINKER_= VERSION" and
=C2=A0 "CMAKE_<LANG>_COMPILER_LINKER_FRONTE= ND_VARIANT" variables were added
=C2=A0 to describe the linker used= by the language's link step.

* The "CMAKE_PROJECT_INCLUDE&= quot;, "CMAKE_PROJECT_INCLUDE_BEFORE",
=C2=A0 "CMAKE_PROJ= ECT_<PROJECT-NAME>_INCLUDE", and "CMAKE_PROJECT_<PROJECT= -
=C2=A0 NAME>_INCLUDE_BEFORE" variables learned to support a se= micolon-
=C2=A0 separated list of CMake language files to be included se= quentially.
=C2=A0 These variables can also reference module names to be= found in
=C2=A0 "CMAKE_MODULE_PATH" or builtin to CMake.
<= br>* The "CMAKE_SKIP_TEST_ALL_DEPENDENCY" variable was added to c= ontrol
=C2=A0 whether the "test" (or "RUN_TESTS") bu= ildsystem target depends on
=C2=A0 the "all" (or "ALL_BUI= LD") target.

* A "CMAKE_TEST_LAUNCHER" variable and c= orresponding "TEST_LAUNCHER"
=C2=A0 target property were added= to specify a launcher to be used by
=C2=A0 executable targets when invo= ked by tests added by the "add_test()"
=C2=A0 command.

=
Properties
----------

* The "CROSSCOMPILING_EMULATOR&quo= t; target property now supports
=C2=A0 "generator expressions"= .

* The "EXPORT_FIND_PACKAGE_NAME" target property was add= ed to allow
=C2=A0 targets to specify what package name to pass when exp= orting
=C2=A0 "find_dependency()" calls. This property is init= ialized with a new
=C2=A0 "CMAKE_EXPORT_FIND_PACKAGE_NAME" var= iable.

* The "UNITY_BUILD" target property now supports th= e Objective C
=C2=A0 ("OBJC") and Objective C++ ("OBJCXX&= quot;) languages.

* The "XCODE_EMBED_XPC_SERVICES" target = property was added to tell the
=C2=A0 "Xcode" generator what t= argets to put in the "Embed XPC Resources"
=C2=A0 build phase.=


Modules
-------

* The "CMakePackageConfigHelpers= " module gained new
=C2=A0 "generate_apple_platform_selection_= file()" and
=C2=A0 "generate_apple_architecture_selection_file= ()" functions, which can
=C2=A0 be used to generate a file that inc= ludes another Apple-platform-
=C2=A0 specific file or the includes an ar= chitecture-specific
=C2=A0 implementation of a package for an Apple plat= form, respectively.

* The "FindOpenGL" module learned to f= ind a GLU include directory
=C2=A0 different than the GL include directo= ry.=C2=A0 A new
=C2=A0 "OPENGL_INCLUDE_DIRS" result variable p= rovides all include
=C2=A0 directories.


CTest
-----
* "ctest(1)" gained a "--http-header" option to add cu= stom headers on
=C2=A0 submission to CDash.

* "ctest(1)"= ; gained the "--tests-from-file" and "--exclude-from-file&qu= ot;
=C2=A0 options to run or exclude tests named in a file.

* &qu= ot;ctest(1)" now supports job server integration on POSIX systems.
=
* The "ctest_test()" command gained options "INCLUDE_FRO= M_FILE" and
=C2=A0 "EXCLUDE_FROM_FILE" to run or exclude = tests named in a file.


CPack
-----

* The "CPack D= EB Generator" "CPACK_DEBIAN_FILE_NAME" variable may now
= =C2=A0 be set without any suffix, and the ".deb" suffix will be a= dded
=C2=A0 automatically.

* The "CPack RPM Generator" = "CPACK_RPM_FILE_NAME" variable may now be
=C2=A0 set without a= ny suffix, and the ".rpm" suffix will be added
=C2=A0 automati= cally.

* The "CPack WIX Generator" gained a new variable,<= br>=C2=A0 "CPACK_WIX_INSTALL_SCOPE", to control the "Install= Scope" property of
=C2=A0 WiX MSI installers.


Other Chan= ges
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

* CMake learned to de= -duplicate libraries on link lines based on
=C2=A0 linker capabilities.= =C2=A0 See policy "CMP0156".

* The "add_test()" = command now honors "CMAKE_CROSSCOMPILING_EMULATOR"
=C2=A0 only= when cross-compiling. See policy "CMP0158".

* "Fetch= Content_MakeAvailable()" now sets the
=C2=A0 "CMAKE_EXPORT_FIN= D_PACKAGE_NAME" variable for CMake projects.

* On Windows, when= targeting the MSVC ABI, the "find_library()"
=C2=A0 command n= ow accepts ".a" file names after first considering ".lib&quo= t;.
=C2=A0 This is symmetric with existing behavior when targeting the G= NU ABI,
=C2=A0 in which the command accepts ".lib" file names = after first
=C2=A0 considering ".a".

* On Windows, when= targeting the MSVC ABI, the "find_library()"
=C2=A0 command n= ow considers ".dll.lib" file names before ".lib".=C2=A0= This is
=C2=A0 the default suffix for DLL import libraries created by R= ust
=C2=A0 toolchains for the MSVC ABI.

* The "Ninja" a= nd "NMake Makefiles" generators now use the
=C2=A0 "-exte= rnal:I" flag for system includes when using IntelLLVM as of
=C2=A0 = version 2021.4. The "-external:W0" flag is also used as of versio= n
=C2=A0 2022.2.

* The "create_test_sourcelist()" comma= nd now provides a full path to
=C2=A0 the generated driver source file.<= br>
* The "CPACK_PRODUCTBUILD_DOMAINS" variable now defaults t= o true. See
=C2=A0 policy "CMP0161".

* The "CPack = WIX Generator" now produces WiX MSI installers that
=C2=A0 create s= tart menu and uninstall entries for all users by default, as
=C2=A0 docu= mented by the "CPACK_WIX_INSTALL_SCOPE" variable "perMachine= "
=C2=A0 value.=C2=A0 Previously, without a custom WiX template, it= produced
=C2=A0 installers that would only create start menu and uninst= all entries
=C2=A0 for the current user, even though they install for al= l users.
--000000000000bc6b0c06114aef86--