diff options
author | Brad King <brad.king@kitware.com> | 2020-10-07 07:53:12 -0400 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-10-08 09:30:25 -0400 |
commit | b81cb27f20b4163e6f2f6945242434c5b20121c5 (patch) | |
tree | 2260488fbb7b4774400ae0f26ed8a2cf98ac0102 /Help/release/3.19.rst | |
parent | 8f2ba9a3fcfc87b2d919badf0d02d507bfb75ab1 (diff) | |
download | cmake-b81cb27f20b4163e6f2f6945242434c5b20121c5.tar.gz |
Help: Consolidate 3.19 release notes
Run the `Utilities/Release/consolidate-relnotes.bash` script to move
notes from `Help/release/dev/*` into `Help/release/3.19.rst`.
Diffstat (limited to 'Help/release/3.19.rst')
-rw-r--r-- | Help/release/3.19.rst | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/Help/release/3.19.rst b/Help/release/3.19.rst new file mode 100644 index 0000000000..38c3e63059 --- /dev/null +++ b/Help/release/3.19.rst @@ -0,0 +1,287 @@ +CMake 3.19 Release Notes +************************ + +.. only:: html + + .. contents:: + +Changes made since CMake 3.18 include the following. + +* The :command:`add_test` command now (officially) supports whitespace and + other special characters in the name for the test it creates. + See policy :policy:`CMP0110`. + +* The :prop_tgt:`OSX_ARCHITECTURES` target property is now respected for the + ``ASM`` language. + +* The :command:`set_property`, :command:`get_property`, + and :command:`get_directory_property` commands' ``DIRECTORY`` + options now accept references to binary directory paths, + such as the value of :variable:`CMAKE_CURRENT_BINARY_DIR`. + +* :ref:`Interface Libraries` may now have source files added via + :command:`add_library` or :command:`target_sources`. Those + with sources will be generated as part of the build system. + +* The :module:`CheckSourceCompiles` module has been added to + generalize :module:`CheckCSourceCompiles` and + :module:`CheckCXXSourceCompiles` to more languages. + +* The :module:`CheckSourceRuns` module has been added to + generalize :module:`CheckCSourceRuns` and + :module:`CheckCXXSourceRuns` to more languages. + +* The :module:`CheckCompilerFlag` module has been added to + generalize :module:`CheckCCompilerFlag` and + :module:`CheckCXXCompilerFlag` to more languages. + +* A :variable:`CMAKE_CLANG_VFS_OVERLAY` variable was added to tell + Clang to use a VFS overlay to support the Windows SDK when + cross-compiling from hosts with case-sensitive filesystems. + +* The ``Clang`` compiler gained support for handling system include directories + when running on Windows. + +* The :manual:`cmake(1)` gained a ``-E create_hardlink`` command-line tool + that can be used to create hardlinks between files. + +* The :manual:`CMake GUI <cmake-gui(1)>` now has an environment variable editor. + +* The :command:`cmake_language` command gained a ``DEFER`` mode to + schedule command calls to occur at the end of processing a directory. + +* :module:`CMakePackageConfigHelpers` module learned to manage version range. + +* The :command:`cmake_path` command was added for operations on + filesystem paths. + +* :manual:`cmake(1)` and :manual:`cmake-gui(1)` now recognize + ``CMakePresets.json`` and ``CMakeUserPresets.json`` files. + +* The :variable:`CMAKE_<LANG>_COMPILER` variable may now be used to + store "mandatory" compiler flags like the :envvar:`CC` and other environment variables. + +* The :variable:`CMAKE_<LANG>_FLAGS_INIT` variable will now be considered during + the compiler indentification check if other sources like :variable:`CMAKE_<LANG>_FLAGS` + or :envvar:`CFLAGS` are not set. + +* The :command:`configure_file` command gained a ``NO_SOURCE_PERMISSIONS`` + option to suppress copying the input file's permissions to the output file. + +* :cpack_gen:`CPack External Generator` learned the :variable:`CPACK_EXTERNAL_BUILT_PACKAGES` variable. + +* CPack learned the :variable:`CPACK_PRE_BUILD_SCRIPTS`, :variable:`CPACK_POST_BUILD_SCRIPTS`, + and :variable:`CPACK_PACKAGE_FILES` variables. + +* The :cpack_gen:`CPack WIX Generator` gained a + :variable:`CPACK_WIX_CUSTOM_XMLNS` option to specify custom XML namespaces. + +* :manual:`ctest(1)` gained support for cuda-memcheck as ``CTEST_MEMORYCHECK_COMMAND``. + The different tools (memcheck, racecheck, synccheck, initcheck) supplied by + cuda-memcheck can be selected by setting the appropriate flags using the + ``CTEST_MEMORYCHECK_COMMAND_OPTIONS`` variable. + The default flags are `--tool memcheck --leak-check full`. + +* The :module:`CheckCompilerFlag` module was extended to + support 'CUDA'. + +* The :module:`CheckSourceCompiles` module was extended to + support 'CUDA'. + +* The :module:`CheckSourceRuns` module was extended to + support 'CUDA'. + +* The :module:`CheckLinkerFlag` module has been extended to + support the validity of CUDA link flags. + +* :prop_tgt:`CUDA_SEPARABLE_COMPILATION` is now supported when using Clang. + +* If ``CUDA`` compiler detection fails with user-specified + :variable:`CMAKE_CUDA_ARCHITECTURES` or :variable:`CMAKE_CUDA_HOST_COMPILER` + an error is raised. + +* Compiler ABI detection now handles NVCC-style ``-Werror`` flags. + +* Scattered toolkit installations are now recognized when crosscompiling + ``CUDA`` using Clang. +* :module:`FindCUDAToolkit` now finds scattered toolkit installations when + crosscompiling. + +* :ref:`Makefile Generators` no longer repeat custom commands from target + dependencies. See policy :policy:`CMP0113`. + +* An explicit deprecation diagnostic was added for policy ``CMP0071`` + (``CMP0071`` and below were already deprecated). + The :manual:`cmake-policies(7)` manual explains that the OLD behaviors + of all policies are deprecated and that projects should port to the + NEW behaviors. + +* Compatibility with versions of CMake older than 2.8.12 is now deprecated + and will be removed from a future version. Calls to + :command:`cmake_minimum_required` or :command:`cmake_policy` that set + the policy version to an older value now issue a deprecation diagnostic. + +* The :prop_tgt:`EXCLUDE_FROM_ALL` target property gained support for + :manual:`generator expressions <cmake-generator-expressions(7)>`. + +* The :command:`execute_process` command gained a ``COMMAND_ERROR_IS_FATAL`` + option to specify a fatal error. + +* The :module:`ExternalProject` module handling of step target dependencies + has been revised. See policy :policy:`CMP0114`. + +* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has + been updated to 2.2. +* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained + a new ``languageStandard`` field in the ``compileGroups`` objects. + +* The :command:`file(ARCHIVE_CREATE)` command gained a ``COMPRESSION_LEVEL`` + option to specify the compression level. + +* Add :command:`file(CHMOD)` and :command:`file(CHMOD_RECURSE)` to + set permissions of files and directories. + +* The ``<file>`` argument is now optional for :command:`file(DOWNLOAD)`. If it + is not specified, the file is not saved. + +* The :command:`file(GENERATE)` command gained a new ``TARGET`` keyword to + support resolving target-dependent generator expressions. + +* The :command:`file` gained sub-command `REAL_PATH` to compute a path with + symlinks resolved. + +* The :module:`FindCUDAToolkit` module gained support for finding CUDA toolkits + that do not contain ``nvcc``. + +* The :command:`find_package` command learned to handle a version range. + +* The :command:`find_program` command now requires permission to execute + but not to read the file found. See policy :policy:`CMP0109`. + +* The :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` + modules gained the capability to manage a version range. + +* The :module:`FindSDL` module now provides: + + * imported target ``SDL::SDL``, + + * result variables ``SDL_LIBRARIES`` and ``SDL_INCLUDE_DIRS``, + + * version variables ``SDL_VERSION``, ``SDL_VERSION_MAJOR`` + ``SDL_VERSION_MINOR``, and ``SDL_VERSION_PATCH``. + +* :module:`FindSWIG` module gains the capability to manage a version range. + +* The :module:`FindTIFF` module gained a ``CXX`` component to + find the ``tiffxx`` library containing C++ bindings. + +* The :module:`FindVulkan` module gained a new output variable + ``Vulkan_GLSLC_EXECUTABLE`` which contains the path to the + GLSL SPIR-V compiler. + +* The :module:`FindVulkan` module gained a new target + ``Vulkan::glslc`` which contains the path to the + GLSL SPIR-V compiler. + +* The :module:`FindPackageHandleStandardArgs` module learned to handle + version range. It also gained the ``find_package_check_version()`` command to + check the validity of a version against version-related arguments of + :command:`find_package` command. + +* The :variable:`CMAKE_MFC_FLAG` variable now supports generator expressions. + +* A new guide on :guide:`IDE integration <IDE Integration Guide>` has been added. + +* An imported target with a missing location now fails during generation if the + location is used. See policy :policy:`CMP0111`. + +* The ``--install`` argument of the :manual:`cmake(1)` command line tool gained a + ``--default-directory-permissions`` argument. + +* The :module:`CheckCompilerFlag` module was extended to + support 'ISPC'. + +* The :module:`CheckSourceCompiles` module was extended to + support 'ISPC'. + + +* CMake learned to support ``ISPC`` as a first-class language that can be + enabled via the :command:`project` and :command:`enable_language` commands. + +* ``ISPC`` is currently supported by the :ref:`Makefile Generators` + and the :generator:`Ninja` generator on Linux, macOS, and Windows. + +* The Intel ISPC compiler (``ispc``) is supported. + +* Building for macOS will now use the latest SDK available on the system, + unless the user has explicitly chosen a SDK using :variable:`CMAKE_OSX_SYSROOT`. + + The deployment target or system macOS version will not affect + the choice of SDK. + +* macOS SDKs older than 10.5 are no longer supported. + +* A new target property, :prop_tgt:`OPTIMIZE_DEPENDENCIES`, was added to + avoid unnecessarily building dependencies for a static library. +* A new variable, :variable:`CMAKE_OPTIMIZE_DEPENDENCIES`, was added to + initialize the :prop_tgt:`OPTIMIZE_DEPENDENCIES` target property. + +* The :prop_tgt:`PCH_INSTANTIATE_TEMPLATES` target property was added to enable + template instantiation in the precompiled header. This is enabled by default + and offers a roughly 20% compile time improvement. Currently only supported + by Clang 11. + +* The following target-based generator expressions that query for directory or + file name components no longer add a dependency on the evaluated target. + See policy :policy:`CMP0112`. + + - ``TARGET_FILE_DIR`` + - ``TARGET_LINKER_FILE_BASE_NAME`` + - ``TARGET_LINKER_FILE_NAME`` + - ``TARGET_LINKER_FILE_DIR`` + - ``TARGET_SONAME_FILE_NAME`` + - ``TARGET_SONAME_FILE_DIR`` + - ``TARGET_PDB_FILE_NAME`` + - ``TARGET_PDB_FILE_DIR`` + - ``TARGET_BUNDLE_DIR`` + - ``TARGET_BUNDLE_CONTENT_DIR`` + +* :manual:`cmake-gui(1)` now requires Qt5. Support for compiling with Qt4 has + been removed. + +* The :manual:`cmake(1)` command-line option ``--warn-unused-vars`` has + been removed and is now silently ignored. The option has not worked + correctly since CMake 3.3. + +* The :command:`separate_arguments` command gained new ``PROGRAM`` option to + search program. + +* The :command:`string` command gained set of new ``JSON`` sub commands to provide JSON + parsing capabilities. + +* :module:`UseSWIG` module gains new source file properties ``OUTPUT_DIR`` and + ``OUTFILE_DIR`` to manage output directories on per source basis. + +* The :ref:`Visual Studio Generators` for Visual Studio 2015 and above gained + support for the Visual Studio Tools for Android. This allows you to set + :variable:`CMAKE_SYSTEM_NAME` to `Android` to generate `.vcxproj` files for + the Android tools. + +* A :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` variable + was added to tell the :ref:`Visual Studio Generators` what maximumm + version of the Windows SDK to choose. + +* The :prop_tgt:`WIN32_EXECUTABLE` target property now supports + :manual:`generator expressions <cmake-generator-expressions(7)>`. + +* The :generator:`Xcode` generator now uses the Xcode "new build system" + when generating for Xcode 12.0 or higher. + See the :variable:`CMAKE_XCODE_BUILD_SYSTEM` variable. + One may use ``-T buildsystem=1`` to switch to the legacy build system. + +* The Xcode generator gained support for linking libraries and frameworks + via the *Link Binaries With Libraries* build phase instead of always by + embedding linker flags directly. This behavior is controlled by a new + :prop_tgt:`XCODE_LINK_BUILD_PHASE_MODE` target property, which is + initialized by a new :variable:`CMAKE_XCODE_LINK_BUILD_PHASE_MODE` + variable. |