From 22ac06edb84fe73751c21ea4a3d9810434a85753 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 5 Feb 2018 09:32:26 -0500 Subject: Help: Consolidate 3.11 release notes Run the `Utilities/Release/consolidate-relnotes.bash` script to move notes from `Help/release/dev/*` into `Help/release/3.11.rst`. --- Help/release/3.11.rst | 240 +++++++++++++++++++++ .../release/dev/CheckIncludeFile-required-libs.rst | 11 - .../release/dev/CheckIncludeFiles-language-CXX.rst | 6 - Help/release/dev/CodeBlocks-custom-compiler-id.rst | 6 - Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst | 5 - Help/release/dev/FetchContent.rst | 11 - Help/release/dev/FindIconv.rst | 4 - Help/release/dev/FindOpenGL-glvnd-policy.rst | 5 - .../dev/GenerateExportHeader-include-guard.rst | 8 - Help/release/dev/RemoveKDevelop3.rst | 4 - .../release/dev/UseJava-add_jar-native-headers.rst | 9 - ...riteBasicConfigVersionFile_SameMinorVersion.rst | 5 - Help/release/dev/autogen-parallel.rst | 10 - Help/release/dev/blas-lapack-flame.rst | 5 - Help/release/dev/cache-newline.rst | 7 - .../dev/cmake-default-dir-install-permissions.rst | 12 -- Help/release/dev/cmake-job-pool.rst | 7 - Help/release/dev/cmake-open.rst | 6 - .../dev/cpack-rpm-check-executable-flags.rst | 6 - Help/release/dev/cpack_trace.rst | 4 - .../dev/cpackifw-package-remove-target-dir.rst | 6 - Help/release/dev/ctest_start_function_scope.rst | 8 - Help/release/dev/cuda-sep-comp-var.rst | 6 - Help/release/dev/curl_netrc_options.rst | 14 -- Help/release/dev/defer-target-source-check.rst | 6 - Help/release/dev/deprecate-policy-old.rst | 8 - Help/release/dev/doxygen-verbatim-vars.rst | 8 - Help/release/dev/extend-compile-language-genex.rst | 14 -- Help/release/dev/fortran-compiler-launcher.rst | 8 - .../dev/generalize-importedtargets-behavior.rst | 25 --- Help/release/dev/generator-instance.rst | 8 - Help/release/dev/imported-promotion.rst | 15 -- Help/release/dev/iphone-deployment-target.rst | 11 - Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst | 5 - ...ies-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst | 10 - Help/release/dev/ti-compiler-depfile-support.rst | 4 - Help/release/dev/vs-hlsl-opt-dbg.rst | 6 - .../dev/whitelist-more-interface-properties.rst | 7 - Help/release/dev/write-single-xcodeproj.rst | 8 - Help/release/index.rst | 1 + 40 files changed, 241 insertions(+), 308 deletions(-) create mode 100644 Help/release/3.11.rst delete mode 100644 Help/release/dev/CheckIncludeFile-required-libs.rst delete mode 100644 Help/release/dev/CheckIncludeFiles-language-CXX.rst delete mode 100644 Help/release/dev/CodeBlocks-custom-compiler-id.rst delete mode 100644 Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst delete mode 100644 Help/release/dev/FetchContent.rst delete mode 100644 Help/release/dev/FindIconv.rst delete mode 100644 Help/release/dev/FindOpenGL-glvnd-policy.rst delete mode 100644 Help/release/dev/GenerateExportHeader-include-guard.rst delete mode 100644 Help/release/dev/RemoveKDevelop3.rst delete mode 100644 Help/release/dev/UseJava-add_jar-native-headers.rst delete mode 100644 Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst delete mode 100644 Help/release/dev/autogen-parallel.rst delete mode 100644 Help/release/dev/blas-lapack-flame.rst delete mode 100644 Help/release/dev/cache-newline.rst delete mode 100644 Help/release/dev/cmake-default-dir-install-permissions.rst delete mode 100644 Help/release/dev/cmake-job-pool.rst delete mode 100644 Help/release/dev/cmake-open.rst delete mode 100644 Help/release/dev/cpack-rpm-check-executable-flags.rst delete mode 100644 Help/release/dev/cpack_trace.rst delete mode 100644 Help/release/dev/cpackifw-package-remove-target-dir.rst delete mode 100644 Help/release/dev/ctest_start_function_scope.rst delete mode 100644 Help/release/dev/cuda-sep-comp-var.rst delete mode 100644 Help/release/dev/curl_netrc_options.rst delete mode 100644 Help/release/dev/defer-target-source-check.rst delete mode 100644 Help/release/dev/deprecate-policy-old.rst delete mode 100644 Help/release/dev/doxygen-verbatim-vars.rst delete mode 100644 Help/release/dev/extend-compile-language-genex.rst delete mode 100644 Help/release/dev/fortran-compiler-launcher.rst delete mode 100644 Help/release/dev/generalize-importedtargets-behavior.rst delete mode 100644 Help/release/dev/generator-instance.rst delete mode 100644 Help/release/dev/imported-promotion.rst delete mode 100644 Help/release/dev/iphone-deployment-target.rst delete mode 100644 Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst delete mode 100644 Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst delete mode 100644 Help/release/dev/ti-compiler-depfile-support.rst delete mode 100644 Help/release/dev/vs-hlsl-opt-dbg.rst delete mode 100644 Help/release/dev/whitelist-more-interface-properties.rst delete mode 100644 Help/release/dev/write-single-xcodeproj.rst diff --git a/Help/release/3.11.rst b/Help/release/3.11.rst new file mode 100644 index 0000000..d611650 --- /dev/null +++ b/Help/release/3.11.rst @@ -0,0 +1,240 @@ +CMake 3.11 Release Notes +************************ + +.. only:: html + + .. contents:: + +Changes made since CMake 3.10 include the following. + +* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake starts multiple + parallel ``moc`` or ``uic`` processes to reduce the build time. + The new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and + :prop_tgt:`AUTOGEN_PARALLEL` target property allow to modify the number of + parallel ``moc`` or ``uic`` processes to start. + By default CMake starts a single ``moc`` or ``uic`` process for each physical + CPU on the host system. + +* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support + `FLAME `__ ``blis`` and ``libflame``. + +* Variables containing newlines in their values now get truncated before the + newline when they are written to the cache file. In addition, a warning + comment is written to the cache file, and a warning message is displayed to + the user on the console. + +* The :module:`CheckIncludeFile` module ``check_include_file`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module ``check_include_files`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` + command gained a ``LANGUAGE`` option to specify whether to check using the + ``C`` or ``CXX`` compiler. + +* The :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + to enable setting of default permissions for directories created implicitly + during installation of files by :command:`install` and + :command:`file(INSTALL)`. + +* The :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + which serves the same purpose during packaging as the + :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during + installation (e.g. ``make install``). + +* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for + the :prop_gbl:`JOB_POOLS` property. This enables control over build + parallelism with command line configuration parameters when using the Ninja + generator. + +* The :manual:`cmake(1)` ``--open `` command line option can now + be used to open generated IDE projects like Visual Studio solutions + or Xcode projects. + +* The :generator:`CodeBlocks` extra generator learned to check a + :variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom + compiler identification value to place in the project file. + +* The :module:`CPackIFW` module gained new + :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control + if the target directory should not be deleted when uninstalling. + +* The :module:`CPackRPM` module learned to enable enforcing of execute + privileges on programs and shared libraries. + See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. + +* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. + +* The :command:`ctest_start` command no longer sets + :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is + called from inside a function. Instead, it sets an internal variable in + CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the + global scope still prevents the script from being re-run at the end. + +* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to + initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property + on targets when they are created. + +* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands + gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a + ``.netrc`` file. + +* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` + options to specify use of a ``.netrc`` file. + +* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables + were added to specify use of a ``.netrc`` file by the + :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and + the :module:`ExternalProject` module. + +* :command:`add_library` and :command:`add_executable` commands can now be + called without any sources and will not complain as long as sources will + be added later via :command:`target_sources`. + +* An explicit deprecation diagnostic was added for policies ``CMP0037`` + through ``CMP0054`` (``CMP0036`` 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. + +* The :command:`doxygen_add_docs` function of the :module:`FindDoxygen` module + now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any + ``DOXYGEN_...`` variable contained in that list will bypass the automatic + quoting logic, leaving its contents untouched when transferring them to the + output Doxyfile. + +* :ref:`Visual Studio Generators` learned to support the ``COMPILE_LANGUAGE`` + :manual:`generator expression ` in + target-wide :prop_tgt:`COMPILE_DEFINITIONS`, + :prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_OPTIONS`, and + :command:`file(GENERATE)`. + +* The :generator:`Xcode` generator learned to support the ``COMPILE_LANGUAGE`` + :manual:`generator expression ` in + target-wide :prop_tgt:`COMPILE_DEFINITIONS` and + :prop_tgt:`INCLUDE_DIRECTORIES`. It previously supported only + :prop_tgt:`COMPILE_OPTIONS` and :command:`file(GENERATE)`. + +* The :module:`ExternalProject` module learnt to substitute ```` + in comments, commands, working directory and byproducts. + +* A new :module:`FetchContent` module was added which supports populating + content at configure time using any of the download/update methods + supported by :command:`ExternalProject_Add`. This allows the content + to be used immediately during the configure stage, such as with + :command:`add_subdirectory`, etc. Hierarchical project structures are + well supported, allowing parent projects to override the content details + of child projects and ensuring content is not populated multiple times + throughout the whole project tree. + +* A :module:`FindIconv` module was added to locate iconv support. + +* The :module:`FindOpenGL` module now prefers GLVND libraries if available. + See policy :policy:`CMP0072`. + +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned + to add compiler launcher tools along with the compiler for the ``Fortran`` + language (``C``, ``CXX``, and ``CUDA`` were supported previously). + See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and + :prop_tgt:`_COMPILER_LAUNCHER` target property for details. + +* The :command:`target_compile_definitions` command learned to set the + :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property on + :ref:`Imported Targets`. + +* The :command:`target_compile_features` command learned to set the + :prop_tgt:`INTERFACE_COMPILE_FEATURES` property on :ref:`Imported Targets`. + +* The :command:`target_compile_options` command learned to set the + :prop_tgt:`INTERFACE_COMPILE_OPTIONS` property on :ref:`Imported Targets`. + +* The :command:`target_include_directories` command learned to set the + :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` property on + :ref:`Imported Targets`. + +* The :command:`target_sources` command learned to set the + :prop_tgt:`INTERFACE_SOURCES` property on :ref:`Imported Targets`. + +* The :command:`target_link_libraries` command learned to set the + :prop_tgt:`INTERFACE_LINK_LIBRARIES` property on :ref:`Imported Targets`. + +* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are + created with the ``GLOBAL`` option to :command:`add_library`. + +* The :module:`GenerateExportHeader` module learned an optional + ``INCLUDE_GUARD_NAME`` parameter to change the name of the include guard + symbol written to the generated export header. + Additionally, it now adds a comment after the closing ``#endif`` on the + generated export header's include guard. + +* A :variable:`CMAKE_GENERATOR_INSTANCE` variable was introduced + to hold the selected instance of the generator's corresponding + native tools if multiple are available. This is used by the + :generator:`Visual Studio 15 2017` generator to hold the + selected instance of Visual Studio persistently. + +* Added new target-property :prop_tgt:`IMPORTED_GLOBAL` which + indicates if an :ref:`IMPORTED target ` is + globally visible. + It will be set automatically if such an imported target is + created with the ``GLOBAL`` flag. + +* Additionally, it is now also possible to promote a local imported + target to become globally visible by setting its + :prop_tgt:`IMPORTED_GLOBAL` property to `TRUE`. (However, this + promotion can only succeed if it is done from within the same + directory where the imported target was created in the first + place.) Setting it to `FALSE` is not supported! + +* The minimum deployment target set in the + :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only + applied for macOS regardless of the selected SDK. It is now properly + set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. + + If for example the sysroot variable specifies an iOS SDK then the + value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum + iOS version. + +* The ``KDevelop3`` generator has been removed. + +* The :prop_sf:`COMPILE_DEFINITIONS` source file property learned to support + :manual:`generator expressions `. + +* Source file learns new properties: + + * A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list + of options to pass to the compiler. + + * An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify + list of preprocessor include file search directories. + +* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. + +* | The command add_jar from :module:`UseJava` module learns how to generate native + headers files using option -h of javac tool. + | This capability requires, at least, version 1.8 of Javac tool. + | Command create_javah will no longer be supported due to the + `suppression of javah tool `_ in the version 1.10 + of the JDK, so ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. + +* Source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS` and + :prop_sf:`VS_SHADER_ENABLE_DEBUG` have been added to specify more + details of ``.hlsl`` sources with :ref:`Visual Studio Generators`. + +* ``INTERFACE`` libraries may now have custom properties set on them if they + start with either an underscore (``_``) or a lowercase ASCII character. The + original intention was to only allow properties which made sense for + ``INTERFACE`` libraries, but it also blocked usage of custom properties. + +* The :command:`write_basic_package_version_file` understands a new + ``SameMinorVersion`` option for the ``COMPATIBILITY`` argument. + +* The :generator:`Xcode` generator behavior of generating one project + file per :command:`project()` command could now be controlled with the + :variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable. + This could be useful to speed up the CMake generation step for + large projects and to work-around a bug in the ``ZERO_CHECK`` logic. diff --git a/Help/release/dev/CheckIncludeFile-required-libs.rst b/Help/release/dev/CheckIncludeFile-required-libs.rst deleted file mode 100644 index 14c43d1..0000000 --- a/Help/release/dev/CheckIncludeFile-required-libs.rst +++ /dev/null @@ -1,11 +0,0 @@ -CheckIncludeFile-required-libs ------------------------------- - -* The :module:`CheckIncludeFile` module ``check_include_file`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFiles` module ``check_include_files`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. diff --git a/Help/release/dev/CheckIncludeFiles-language-CXX.rst b/Help/release/dev/CheckIncludeFiles-language-CXX.rst deleted file mode 100644 index 1631a5e..0000000 --- a/Help/release/dev/CheckIncludeFiles-language-CXX.rst +++ /dev/null @@ -1,6 +0,0 @@ -CheckIncludeFiles-language-CXX ------------------------------- - -* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` - command gained a ``LANGUAGE`` option to specify whether to check using the - ``C`` or ``CXX`` compiler. diff --git a/Help/release/dev/CodeBlocks-custom-compiler-id.rst b/Help/release/dev/CodeBlocks-custom-compiler-id.rst deleted file mode 100644 index 893bd5c..0000000 --- a/Help/release/dev/CodeBlocks-custom-compiler-id.rst +++ /dev/null @@ -1,6 +0,0 @@ -CodeBlocks-custom-compiler-id ------------------------------ - -* The :generator:`CodeBlocks` extra generator learned to check a - :variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom - compiler identification value to place in the project file. diff --git a/Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst b/Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst deleted file mode 100644 index 823a14b..0000000 --- a/Help/release/dev/ExternalProject-DOWNLOAD_DIR.rst +++ /dev/null @@ -1,5 +0,0 @@ -ExternalProject ---------------- - -* The :module:`ExternalProject` module learnt to substitute ```` - in comments, commands, working directory and byproducts. diff --git a/Help/release/dev/FetchContent.rst b/Help/release/dev/FetchContent.rst deleted file mode 100644 index 3b12977..0000000 --- a/Help/release/dev/FetchContent.rst +++ /dev/null @@ -1,11 +0,0 @@ -FetchContent ------------- - -* A new :module:`FetchContent` module was added which supports populating - content at configure time using any of the download/update methods - supported by :command:`ExternalProject_Add`. This allows the content - to be used immediately during the configure stage, such as with - :command:`add_subdirectory`, etc. Hierarchical project structures are - well supported, allowing parent projects to override the content details - of child projects and ensuring content is not populated multiple times - throughout the whole project tree. diff --git a/Help/release/dev/FindIconv.rst b/Help/release/dev/FindIconv.rst deleted file mode 100644 index 98f2591..0000000 --- a/Help/release/dev/FindIconv.rst +++ /dev/null @@ -1,4 +0,0 @@ -FindIconv ---------- - -* A :module:`FindIconv` module was added to locate iconv support. diff --git a/Help/release/dev/FindOpenGL-glvnd-policy.rst b/Help/release/dev/FindOpenGL-glvnd-policy.rst deleted file mode 100644 index 3348acf..0000000 --- a/Help/release/dev/FindOpenGL-glvnd-policy.rst +++ /dev/null @@ -1,5 +0,0 @@ -FindOpenGL-glvnd-policy ------------------------ - -* The :module:`FindOpenGL` module now prefers GLVND libraries if available. - See policy :policy:`CMP0072`. diff --git a/Help/release/dev/GenerateExportHeader-include-guard.rst b/Help/release/dev/GenerateExportHeader-include-guard.rst deleted file mode 100644 index fa2be42..0000000 --- a/Help/release/dev/GenerateExportHeader-include-guard.rst +++ /dev/null @@ -1,8 +0,0 @@ -GenerateExportHeader-include-guard ----------------------------------- - -* The :module:`GenerateExportHeader` module learned an optional - ``INCLUDE_GUARD_NAME`` parameter to change the name of the include guard - symbol written to the generated export header. - Additionally, it now adds a comment after the closing ``#endif`` on the - generated export header's include guard. diff --git a/Help/release/dev/RemoveKDevelop3.rst b/Help/release/dev/RemoveKDevelop3.rst deleted file mode 100644 index 805ad26..0000000 --- a/Help/release/dev/RemoveKDevelop3.rst +++ /dev/null @@ -1,4 +0,0 @@ -RemoveKDevelop3 ---------------- - -* The ``KDevelop3`` generator has been removed. diff --git a/Help/release/dev/UseJava-add_jar-native-headers.rst b/Help/release/dev/UseJava-add_jar-native-headers.rst deleted file mode 100644 index 0370a672..0000000 --- a/Help/release/dev/UseJava-add_jar-native-headers.rst +++ /dev/null @@ -1,9 +0,0 @@ -UseJava-add_jar-native-headers ------------------------------- - -* | The command add_jar from :module:`UseJava` module learns how to generate native - headers files using option -h of javac tool. - | This capability requires, at least, version 1.8 of Javac tool. - | Command create_javah will no longer be supported due to the - `suppression of javah tool `_ in the version 1.10 - of the JDK, so ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. diff --git a/Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst b/Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst deleted file mode 100644 index 7f1c4d0..0000000 --- a/Help/release/dev/WriteBasicConfigVersionFile_SameMinorVersion.rst +++ /dev/null @@ -1,5 +0,0 @@ -WriteBasicConfigFile_SameMinorVersion -------------------------------------- - -* The :command:`write_basic_package_version_file` understands a new - ``SameMinorVersion`` option for the ``COMPATIBILITY`` argument. diff --git a/Help/release/dev/autogen-parallel.rst b/Help/release/dev/autogen-parallel.rst deleted file mode 100644 index 50ae9a6..0000000 --- a/Help/release/dev/autogen-parallel.rst +++ /dev/null @@ -1,10 +0,0 @@ -autogen-parallel ----------------- - -* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake starts multiple - parallel ``moc`` or ``uic`` processes to reduce the build time. - The new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and - :prop_tgt:`AUTOGEN_PARALLEL` target property allow to modify the number of - parallel ``moc`` or ``uic`` processes to start. - By default CMake starts a single ``moc`` or ``uic`` process for each physical - CPU on the host system. diff --git a/Help/release/dev/blas-lapack-flame.rst b/Help/release/dev/blas-lapack-flame.rst deleted file mode 100644 index fdc3a69..0000000 --- a/Help/release/dev/blas-lapack-flame.rst +++ /dev/null @@ -1,5 +0,0 @@ -blas-lapack-flame ------------------ - -* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support - `FLAME `__ ``blis`` and ``libflame``. diff --git a/Help/release/dev/cache-newline.rst b/Help/release/dev/cache-newline.rst deleted file mode 100644 index 96900bb..0000000 --- a/Help/release/dev/cache-newline.rst +++ /dev/null @@ -1,7 +0,0 @@ -cache-newline -------------- - -* Variables containing newlines in their values now get truncated before the - newline when they are written to the cache file. In addition, a warning - comment is written to the cache file, and a warning message is displayed to - the user on the console. diff --git a/Help/release/dev/cmake-default-dir-install-permissions.rst b/Help/release/dev/cmake-default-dir-install-permissions.rst deleted file mode 100644 index 8325fda..0000000 --- a/Help/release/dev/cmake-default-dir-install-permissions.rst +++ /dev/null @@ -1,12 +0,0 @@ -cmake-default-dir-install-permissions -------------------------------------- - -* The :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - to enable setting of default permissions for directories created implicitly - during installation of files by :command:`install` and - :command:`file(INSTALL)`. - -* The :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - which serves the same purpose during packaging as the - :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during - installation (e.g. ``make install``). diff --git a/Help/release/dev/cmake-job-pool.rst b/Help/release/dev/cmake-job-pool.rst deleted file mode 100644 index 836d9c1..0000000 --- a/Help/release/dev/cmake-job-pool.rst +++ /dev/null @@ -1,7 +0,0 @@ -cmake-job-pool --------------- - -* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for - the :prop_gbl:`JOB_POOLS` property. This enables control over build - parallelism with command line configuration parameters when using the Ninja - generator. diff --git a/Help/release/dev/cmake-open.rst b/Help/release/dev/cmake-open.rst deleted file mode 100644 index a8f77ae..0000000 --- a/Help/release/dev/cmake-open.rst +++ /dev/null @@ -1,6 +0,0 @@ -cmake-open ----------- - -* The :manual:`cmake(1)` ``--open `` command line option can now - be used to open generated IDE projects like Visual Studio solutions - or Xcode projects. diff --git a/Help/release/dev/cpack-rpm-check-executable-flags.rst b/Help/release/dev/cpack-rpm-check-executable-flags.rst deleted file mode 100644 index 5221417..0000000 --- a/Help/release/dev/cpack-rpm-check-executable-flags.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpack-rpm-check-executable-flags --------------------------------- - -* The :module:`CPackRPM` module learned to enable enforcing of execute - privileges on programs and shared libraries. - See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. diff --git a/Help/release/dev/cpack_trace.rst b/Help/release/dev/cpack_trace.rst deleted file mode 100644 index 1152385..0000000 --- a/Help/release/dev/cpack_trace.rst +++ /dev/null @@ -1,4 +0,0 @@ -cpack_trace ------------ - -* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. diff --git a/Help/release/dev/cpackifw-package-remove-target-dir.rst b/Help/release/dev/cpackifw-package-remove-target-dir.rst deleted file mode 100644 index 52dfc04..0000000 --- a/Help/release/dev/cpackifw-package-remove-target-dir.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpackifw-package-remove-target-dir ----------------------------------- - -* The :module:`CPackIFW` module gained new - :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control - if the target directory should not be deleted when uninstalling. diff --git a/Help/release/dev/ctest_start_function_scope.rst b/Help/release/dev/ctest_start_function_scope.rst deleted file mode 100644 index f949c2b..0000000 --- a/Help/release/dev/ctest_start_function_scope.rst +++ /dev/null @@ -1,8 +0,0 @@ -ctest_start_function_scope --------------------------- - -* The :command:`ctest_start` command no longer sets - :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is - called from inside a function. Instead, it sets an internal variable in - CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the - global scope still prevents the script from being re-run at the end. diff --git a/Help/release/dev/cuda-sep-comp-var.rst b/Help/release/dev/cuda-sep-comp-var.rst deleted file mode 100644 index 23536ef..0000000 --- a/Help/release/dev/cuda-sep-comp-var.rst +++ /dev/null @@ -1,6 +0,0 @@ -cuda-sep-comp-var ------------------ - -* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to - initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property - on targets when they are created. diff --git a/Help/release/dev/curl_netrc_options.rst b/Help/release/dev/curl_netrc_options.rst deleted file mode 100644 index 850c9ce..0000000 --- a/Help/release/dev/curl_netrc_options.rst +++ /dev/null @@ -1,14 +0,0 @@ -curl_netrc_options ------------------- - -* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands - gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a - ``.netrc`` file. - -* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` - options to specify use of a ``.netrc`` file. - -* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables - were added to specify use of a ``.netrc`` file by the - :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and - the :module:`ExternalProject` module. diff --git a/Help/release/dev/defer-target-source-check.rst b/Help/release/dev/defer-target-source-check.rst deleted file mode 100644 index 65f5488..0000000 --- a/Help/release/dev/defer-target-source-check.rst +++ /dev/null @@ -1,6 +0,0 @@ -defer-target-source-check -------------------------- - -* :command:`add_library` and :command:`add_executable` commands can now be - called without any sources and will not complain as long as sources will - be added later via :command:`target_sources`. diff --git a/Help/release/dev/deprecate-policy-old.rst b/Help/release/dev/deprecate-policy-old.rst deleted file mode 100644 index bcfa70a..0000000 --- a/Help/release/dev/deprecate-policy-old.rst +++ /dev/null @@ -1,8 +0,0 @@ -deprecate-policy-old --------------------- - -* An explicit deprecation diagnostic was added for policies ``CMP0037`` - through ``CMP0054`` (``CMP0036`` 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. diff --git a/Help/release/dev/doxygen-verbatim-vars.rst b/Help/release/dev/doxygen-verbatim-vars.rst deleted file mode 100644 index 761290e..0000000 --- a/Help/release/dev/doxygen-verbatim-vars.rst +++ /dev/null @@ -1,8 +0,0 @@ -FindDoxygen ------------ - -* The :command:`doxygen_add_docs` function of the :module:`FindDoxygen` module - now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any - ``DOXYGEN_...`` variable contained in that list will bypass the automatic - quoting logic, leaving its contents untouched when transferring them to the - output Doxyfile. diff --git a/Help/release/dev/extend-compile-language-genex.rst b/Help/release/dev/extend-compile-language-genex.rst deleted file mode 100644 index 7c09376..0000000 --- a/Help/release/dev/extend-compile-language-genex.rst +++ /dev/null @@ -1,14 +0,0 @@ -extend-compile-language-genex ------------------------------ - -* :ref:`Visual Studio Generators` learned to support the ``COMPILE_LANGUAGE`` - :manual:`generator expression ` in - target-wide :prop_tgt:`COMPILE_DEFINITIONS`, - :prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_OPTIONS`, and - :command:`file(GENERATE)`. - -* The :generator:`Xcode` generator learned to support the ``COMPILE_LANGUAGE`` - :manual:`generator expression ` in - target-wide :prop_tgt:`COMPILE_DEFINITIONS` and - :prop_tgt:`INCLUDE_DIRECTORIES`. It previously supported only - :prop_tgt:`COMPILE_OPTIONS` and :command:`file(GENERATE)`. diff --git a/Help/release/dev/fortran-compiler-launcher.rst b/Help/release/dev/fortran-compiler-launcher.rst deleted file mode 100644 index ce254f1..0000000 --- a/Help/release/dev/fortran-compiler-launcher.rst +++ /dev/null @@ -1,8 +0,0 @@ -fortran-compiler-launcher -------------------------- - -* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned - to add compiler launcher tools along with the compiler for the ``Fortran`` - language (``C``, ``CXX``, and ``CUDA`` were supported previously). - See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and - :prop_tgt:`_COMPILER_LAUNCHER` target property for details. diff --git a/Help/release/dev/generalize-importedtargets-behavior.rst b/Help/release/dev/generalize-importedtargets-behavior.rst deleted file mode 100644 index c6f4523..0000000 --- a/Help/release/dev/generalize-importedtargets-behavior.rst +++ /dev/null @@ -1,25 +0,0 @@ -generalize-importedtargets-behavior ------------------------------------ - -* The :command:`target_compile_definitions` command learned to set the - :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property on - :ref:`Imported Targets`. - -* The :command:`target_compile_features` command learned to set the - :prop_tgt:`INTERFACE_COMPILE_FEATURES` property on :ref:`Imported Targets`. - -* The :command:`target_compile_options` command learned to set the - :prop_tgt:`INTERFACE_COMPILE_OPTIONS` property on :ref:`Imported Targets`. - -* The :command:`target_include_directories` command learned to set the - :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` property on - :ref:`Imported Targets`. - -* The :command:`target_sources` command learned to set the - :prop_tgt:`INTERFACE_SOURCES` property on :ref:`Imported Targets`. - -* The :command:`target_link_libraries` command learned to set the - :prop_tgt:`INTERFACE_LINK_LIBRARIES` property on :ref:`Imported Targets`. - -* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are - created with the ``GLOBAL`` option to :command:`add_library`. diff --git a/Help/release/dev/generator-instance.rst b/Help/release/dev/generator-instance.rst deleted file mode 100644 index a3ff658..0000000 --- a/Help/release/dev/generator-instance.rst +++ /dev/null @@ -1,8 +0,0 @@ -generator-instance ------------------- - -* A :variable:`CMAKE_GENERATOR_INSTANCE` variable was introduced - to hold the selected instance of the generator's corresponding - native tools if multiple are available. This is used by the - :generator:`Visual Studio 15 2017` generator to hold the - selected instance of Visual Studio persistently. diff --git a/Help/release/dev/imported-promotion.rst b/Help/release/dev/imported-promotion.rst deleted file mode 100644 index d184178..0000000 --- a/Help/release/dev/imported-promotion.rst +++ /dev/null @@ -1,15 +0,0 @@ -imported-promotion ------------------- - -* Added new target-property :prop_tgt:`IMPORTED_GLOBAL` which - indicates if an :ref:`IMPORTED target ` is - globally visible. - It will be set automatically if such an imported target is - created with the ``GLOBAL`` flag. - -* Additionally, it is now also possible to promote a local imported - target to become globally visible by setting its - :prop_tgt:`IMPORTED_GLOBAL` property to `TRUE`. (However, this - promotion can only succeed if it is done from within the same - directory where the imported target was created in the first - place.) Setting it to `FALSE` is not supported! diff --git a/Help/release/dev/iphone-deployment-target.rst b/Help/release/dev/iphone-deployment-target.rst deleted file mode 100644 index 7a20a6d..0000000 --- a/Help/release/dev/iphone-deployment-target.rst +++ /dev/null @@ -1,11 +0,0 @@ -iphone-deployment-target ------------------------- - -* The minimum deployment target set in the - :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only - applied for macOS regardless of the selected SDK. It is now properly - set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. - - If for example the sysroot variable specifies an iOS SDK then the - value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum - iOS version. diff --git a/Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst b/Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst deleted file mode 100644 index 892344f..0000000 --- a/Help/release/dev/src-COMPILE_DEFINITIONS-genex.rst +++ /dev/null @@ -1,5 +0,0 @@ -src-COMPILE_DEFINITIONS-genex ------------------------------ - -* The :prop_sf:`COMPILE_DEFINITIONS` source file property learned to support - :manual:`generator expressions `. diff --git a/Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst b/Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst deleted file mode 100644 index d06c109..0000000 --- a/Help/release/dev/src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES.rst +++ /dev/null @@ -1,10 +0,0 @@ -src-new-properties-COMPILE_OPTIONS-and-INCLUDE_DIRECTORIES ----------------------------------------------------------- - -* Source file learns new properties: - - * A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list - of options to pass to the compiler. - - * An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify - list of preprocessor include file search directories. diff --git a/Help/release/dev/ti-compiler-depfile-support.rst b/Help/release/dev/ti-compiler-depfile-support.rst deleted file mode 100644 index f870afd..0000000 --- a/Help/release/dev/ti-compiler-depfile-support.rst +++ /dev/null @@ -1,4 +0,0 @@ -ti-compiler-depfile-support ---------------------------- - -* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. diff --git a/Help/release/dev/vs-hlsl-opt-dbg.rst b/Help/release/dev/vs-hlsl-opt-dbg.rst deleted file mode 100644 index 8f398ae..0000000 --- a/Help/release/dev/vs-hlsl-opt-dbg.rst +++ /dev/null @@ -1,6 +0,0 @@ -vs-hlsl-opt-dbg ---------------- - -* Source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS` and - :prop_sf:`VS_SHADER_ENABLE_DEBUG` have been added to specify more - details of ``.hlsl`` sources with :ref:`Visual Studio Generators`. diff --git a/Help/release/dev/whitelist-more-interface-properties.rst b/Help/release/dev/whitelist-more-interface-properties.rst deleted file mode 100644 index 793361c..0000000 --- a/Help/release/dev/whitelist-more-interface-properties.rst +++ /dev/null @@ -1,7 +0,0 @@ -whitelist-more-interface-properties ------------------------------------ - -* ``INTERFACE`` libraries may now have custom properties set on them if they - start with either an underscore (``_``) or a lowercase ASCII character. The - original intention was to only allow properties which made sense for - ``INTERFACE`` libraries, but it also blocked usage of custom properties. diff --git a/Help/release/dev/write-single-xcodeproj.rst b/Help/release/dev/write-single-xcodeproj.rst deleted file mode 100644 index d5e9fef..0000000 --- a/Help/release/dev/write-single-xcodeproj.rst +++ /dev/null @@ -1,8 +0,0 @@ -write-single-xcodeproj ----------------------- - -* The :generator:`Xcode` generator behavior of generating one project - file per :command:`project()` command could now be controlled with the - :variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable. - This could be useful to speed up the CMake generation step for - large projects and to work-around a bug in the ``ZERO_CHECK`` logic. diff --git a/Help/release/index.rst b/Help/release/index.rst index 6472b51..552922e 100644 --- a/Help/release/index.rst +++ b/Help/release/index.rst @@ -15,6 +15,7 @@ Releases .. toctree:: :maxdepth: 1 + 3.11 <3.11> 3.10 <3.10> 3.9 <3.9> 3.8 <3.8> -- cgit v0.12 From acbbccf70458adaf5cb215a1845a115ded520f20 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 5 Feb 2018 10:17:44 -0500 Subject: Help: Organize and revise 3.11 release notes Add section headers similar to the 3.10 release notes and move each individual bullet into an appropriate section. Revise a few bullets. --- Help/release/3.11.rst | 356 ++++++++++++++++++++++++++++---------------------- 1 file changed, 197 insertions(+), 159 deletions(-) diff --git a/Help/release/3.11.rst b/Help/release/3.11.rst index d611650..b57ac29 100644 --- a/Help/release/3.11.rst +++ b/Help/release/3.11.rst @@ -7,140 +7,51 @@ CMake 3.11 Release Notes Changes made since CMake 3.10 include the following. -* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake starts multiple - parallel ``moc`` or ``uic`` processes to reduce the build time. - The new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and - :prop_tgt:`AUTOGEN_PARALLEL` target property allow to modify the number of - parallel ``moc`` or ``uic`` processes to start. - By default CMake starts a single ``moc`` or ``uic`` process for each physical - CPU on the host system. +New Features +============ -* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support - `FLAME `__ ``blis`` and ``libflame``. - -* Variables containing newlines in their values now get truncated before the - newline when they are written to the cache file. In addition, a warning - comment is written to the cache file, and a warning message is displayed to - the user on the console. - -* The :module:`CheckIncludeFile` module ``check_include_file`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. - -* The :module:`CheckIncludeFiles` module ``check_include_files`` macro - learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. +Platforms +--------- -* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` - command gained a ``LANGUAGE`` option to specify whether to check using the - ``C`` or ``CXX`` compiler. - -* The :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - to enable setting of default permissions for directories created implicitly - during installation of files by :command:`install` and - :command:`file(INSTALL)`. - -* The :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added - which serves the same purpose during packaging as the - :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during - installation (e.g. ``make install``). - -* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for - the :prop_gbl:`JOB_POOLS` property. This enables control over build - parallelism with command line configuration parameters when using the Ninja - generator. +* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. -* The :manual:`cmake(1)` ``--open `` command line option can now - be used to open generated IDE projects like Visual Studio solutions - or Xcode projects. +Generators +---------- * The :generator:`CodeBlocks` extra generator learned to check a :variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom compiler identification value to place in the project file. -* The :module:`CPackIFW` module gained new - :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control - if the target directory should not be deleted when uninstalling. - -* The :module:`CPackRPM` module learned to enable enforcing of execute - privileges on programs and shared libraries. - See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. - -* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. - -* The :command:`ctest_start` command no longer sets - :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is - called from inside a function. Instead, it sets an internal variable in - CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the - global scope still prevents the script from being re-run at the end. - -* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to - initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property - on targets when they are created. - -* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands - gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a - ``.netrc`` file. - -* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` - options to specify use of a ``.netrc`` file. - -* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables - were added to specify use of a ``.netrc`` file by the - :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and - the :module:`ExternalProject` module. - -* :command:`add_library` and :command:`add_executable` commands can now be - called without any sources and will not complain as long as sources will - be added later via :command:`target_sources`. - -* An explicit deprecation diagnostic was added for policies ``CMP0037`` - through ``CMP0054`` (``CMP0036`` 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. - -* The :command:`doxygen_add_docs` function of the :module:`FindDoxygen` module - now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any - ``DOXYGEN_...`` variable contained in that list will bypass the automatic - quoting logic, leaving its contents untouched when transferring them to the - output Doxyfile. +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned + to add compiler launcher tools along with the compiler for the ``Fortran`` + language (``C``, ``CXX``, and ``CUDA`` were supported previously). + See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and + :prop_tgt:`_COMPILER_LAUNCHER` target property for details. * :ref:`Visual Studio Generators` learned to support the ``COMPILE_LANGUAGE`` :manual:`generator expression ` in target-wide :prop_tgt:`COMPILE_DEFINITIONS`, :prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_OPTIONS`, and - :command:`file(GENERATE)`. + :command:`file(GENERATE)`. See generator expression documentation + for caveats. * The :generator:`Xcode` generator learned to support the ``COMPILE_LANGUAGE`` :manual:`generator expression ` in target-wide :prop_tgt:`COMPILE_DEFINITIONS` and :prop_tgt:`INCLUDE_DIRECTORIES`. It previously supported only :prop_tgt:`COMPILE_OPTIONS` and :command:`file(GENERATE)`. + See generator expression documentation for caveats. -* The :module:`ExternalProject` module learnt to substitute ```` - in comments, commands, working directory and byproducts. +Commands +-------- -* A new :module:`FetchContent` module was added which supports populating - content at configure time using any of the download/update methods - supported by :command:`ExternalProject_Add`. This allows the content - to be used immediately during the configure stage, such as with - :command:`add_subdirectory`, etc. Hierarchical project structures are - well supported, allowing parent projects to override the content details - of child projects and ensuring content is not populated multiple times - throughout the whole project tree. - -* A :module:`FindIconv` module was added to locate iconv support. - -* The :module:`FindOpenGL` module now prefers GLVND libraries if available. - See policy :policy:`CMP0072`. +* :command:`add_library` and :command:`add_executable` commands can now be + called without any sources and will not complain as long as sources are + added later via the :command:`target_sources` command. -* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned - to add compiler launcher tools along with the compiler for the ``Fortran`` - language (``C``, ``CXX``, and ``CUDA`` were supported previously). - See the :variable:`CMAKE__COMPILER_LAUNCHER` variable and - :prop_tgt:`_COMPILER_LAUNCHER` target property for details. +* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands + gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a + ``.netrc`` file. * The :command:`target_compile_definitions` command learned to set the :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property on @@ -162,14 +73,8 @@ Changes made since CMake 3.10 include the following. * The :command:`target_link_libraries` command learned to set the :prop_tgt:`INTERFACE_LINK_LIBRARIES` property on :ref:`Imported Targets`. -* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are - created with the ``GLOBAL`` option to :command:`add_library`. - -* The :module:`GenerateExportHeader` module learned an optional - ``INCLUDE_GUARD_NAME`` parameter to change the name of the include guard - symbol written to the generated export header. - Additionally, it now adds a comment after the closing ``#endif`` on the - generated export header's include guard. +Variables +--------- * A :variable:`CMAKE_GENERATOR_INSTANCE` variable was introduced to hold the selected instance of the generator's corresponding @@ -177,64 +82,197 @@ Changes made since CMake 3.10 include the following. :generator:`Visual Studio 15 2017` generator to hold the selected instance of Visual Studio persistently. -* Added new target-property :prop_tgt:`IMPORTED_GLOBAL` which - indicates if an :ref:`IMPORTED target ` is - globally visible. - It will be set automatically if such an imported target is - created with the ``GLOBAL`` flag. +* A :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + to enable setting of default permissions for directories created implicitly + during installation of files by :command:`install` and + :command:`file(INSTALL)`, e.g. during ``make install``. -* Additionally, it is now also possible to promote a local imported - target to become globally visible by setting its - :prop_tgt:`IMPORTED_GLOBAL` property to `TRUE`. (However, this - promotion can only succeed if it is done from within the same - directory where the imported target was created in the first - place.) Setting it to `FALSE` is not supported! +* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for + the :prop_gbl:`JOB_POOLS` property. This enables control over build + parallelism with command line configuration parameters when using the Ninja + generator. -* The minimum deployment target set in the - :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only - applied for macOS regardless of the selected SDK. It is now properly - set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. +* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables + were added to specify use of a ``.netrc`` file by the + :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and + the :module:`ExternalProject` module. - If for example the sysroot variable specifies an iOS SDK then the - value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum - iOS version. +* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to + initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property + on targets when they are created. -* The ``KDevelop3`` generator has been removed. +Properties +---------- * The :prop_sf:`COMPILE_DEFINITIONS` source file property learned to support :manual:`generator expressions `. -* Source file learns new properties: +* A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list + of options to pass to the compiler. - * A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list - of options to pass to the compiler. +* An :prop_tgt:`IMPORTED_GLOBAL` target property was added to indicate + whether an :ref:`IMPORTED target ` is globally visible. + It is automatically set to a true value for targets created with the + ``GLOBAL`` option to :command:`add_library` or :command:`add_executable`. + Additionally, project code may now *promote* a local imported target + to be globally visible by setting this property to ``TRUE``. - * An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify - list of preprocessor include file search directories. - -* TI C/C++ compilers are now supported by the :generator:`Ninja` generator. - -* | The command add_jar from :module:`UseJava` module learns how to generate native - headers files using option -h of javac tool. - | This capability requires, at least, version 1.8 of Javac tool. - | Command create_javah will no longer be supported due to the - `suppression of javah tool `_ in the version 1.10 - of the JDK, so ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead. +* An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify + list of preprocessor include file search directories. * Source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS` and :prop_sf:`VS_SHADER_ENABLE_DEBUG` have been added to specify more details of ``.hlsl`` sources with :ref:`Visual Studio Generators`. -* ``INTERFACE`` libraries may now have custom properties set on them if they - start with either an underscore (``_``) or a lowercase ASCII character. The - original intention was to only allow properties which made sense for +Modules +------- + +* The :module:`CheckIncludeFile` module ``check_include_file`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module ``check_include_files`` macro + learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable. + +* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES` + command gained a ``LANGUAGE`` option to specify whether to check using the + ``C`` or ``CXX`` compiler. + +* The :module:`CMakePackageConfigHelpers` module + :command:`write_basic_package_version_file` command learned a new + ``SameMinorVersion`` mode for the ``COMPATIBILITY`` argument. + +* The :module:`ExternalProject` module learned to substitute ```` + in comments, commands, working directory and byproducts. + +* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE`` + options to specify use of a ``.netrc`` file. + +* A new :module:`FetchContent` module was added which supports populating + content at configure time using any of the download/update methods + supported by :command:`ExternalProject_Add`. This allows the content + to be used immediately during the configure stage, such as with + :command:`add_subdirectory`, etc. Hierarchical project structures are + well supported, allowing parent projects to override the content details + of child projects and ensuring content is not populated multiple times + throughout the whole project tree. + +* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support + `FLAME`_ ``blis`` and ``libflame``. + +* The :module:`FindDoxygen` module :command:`doxygen_add_docs` function + now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any + ``DOXYGEN_...`` variable contained in that list will bypass the automatic + quoting logic, leaving its contents untouched when transferring them to the + output ``Doxyfile``. + +* A :module:`FindIconv` module was added to locate iconv support. + +* The :module:`GenerateExportHeader` module ``GENERATE_EXPORT_HEADER`` command + gained an ``INCLUDE_GUARD_NAME`` option to change the name of the include + guard symbol written to the generated export header. + Additionally, it now adds a comment after the closing ``#endif`` on the + generated export header's include guard. + +* The :module:`UseJava` module ``add_jar`` command gained a + ``GENERATE_NATIVE_HEADERS`` option to generate native header files + using ``javac -h`` for ``javac`` 1.8 or above. This supersedes + ``create_javah``, which no longer works with JDK 1.10 and above due + to removal of the ``javah`` tool by `JEP 313`_. + +.. _`FLAME`: https://github.com/flame +.. _`JEP 313`: http://openjdk.java.net/jeps/313 + +Autogen +------- + +* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake now starts + multiple parallel ``moc`` or ``uic`` processes to reduce the build time. + A new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and + :prop_tgt:`AUTOGEN_PARALLEL` target property may be set to specify the + number of parallel ``moc`` or ``uic`` processes to start. The default + is derived from the number of CPUs on the host. + +CTest +----- + +* The :command:`ctest_start` command no longer sets + :variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is + called from inside a function. Instead, it sets an internal variable in + CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the + global scope still prevents the script from being re-run at the end. + +CPack +----- + +* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options. + +* The :module:`CPackIFW` module gained new + :variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control + if the target directory should not be deleted when uninstalling. + +* The :module:`CPackRPM` module learned to enable enforcing of execute + privileges on programs and shared libraries. + See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable. + +* A :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added + which serves the same purpose during packaging (e.g. ``make package``) as the + :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during + installation (e.g. ``make install``). + +Other +----- + +* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are + created with the ``GLOBAL`` option to :command:`add_library`. + +* :ref:`Interface Libraries` may now have custom properties set on them if + they start with either an underscore (``_``) or a lowercase ASCII character. + The original intention was to only allow properties which made sense for ``INTERFACE`` libraries, but it also blocked usage of custom properties. -* The :command:`write_basic_package_version_file` understands a new - ``SameMinorVersion`` option for the ``COMPATIBILITY`` argument. +* The :manual:`cmake(1)` ``--open `` command-line option was added + to open generated IDE projects like Visual Studio solutions or Xcode + projects. + +Deprecated and Removed Features +=============================== + +* An explicit deprecation diagnostic was added for policies ``CMP0037`` + through ``CMP0054`` (``CMP0036`` 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. + +* The ``KDevelop3`` generator has been removed. + +Other Changes +============= + +* Policy :policy:`CMP0037` no longer reserves target names associated + with optional features, such as ``test`` and ``package``, unless + the corresponding feature is enabled. + +* The :module:`FindOpenGL` module now prefers GLVND libraries if available. + See policy :policy:`CMP0072`. + +* The minimum deployment target set in the + :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only + applied for macOS regardless of the selected SDK. It is now properly + set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`. + For example, if the sysroot variable specifies an iOS SDK then the + value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum + iOS version. * The :generator:`Xcode` generator behavior of generating one project - file per :command:`project()` command could now be controlled with the + file per :command:`project()` command may now be controlled with the :variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable. This could be useful to speed up the CMake generation step for large projects and to work-around a bug in the ``ZERO_CHECK`` logic. + +* Since the ``CMakeCache.txt`` format does not support newlines in values, + values containing newlines are now truncated before writing to the file. + In addition, a warning comment is written to the cache file, and a warning + message is displayed to the user on the console. -- cgit v0.12