From 98eafa9b5f346f3695befcc0b52f5206904c8309 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 1 Jun 2016 10:21:30 -0400 Subject: [PATCH] Help: Organize and revise 3.6 release notes Add section headers similar to the 3.5 release notes and move each individual bullet into an appropriate section. Revise a few bullets. --- Help/release/3.6.rst | 367 ++++++++++++++++++++++++------------------- 1 file changed, 203 insertions(+), 164 deletions(-) diff --git a/Help/release/3.6.rst b/Help/release/3.6.rst index 7c3764a60..5c08b39f5 100644 --- a/Help/release/3.6.rst +++ b/Help/release/3.6.rst @@ -7,31 +7,170 @@ CMake 3.6 Release Notes Changes made since CMake 3.5 include the following. -* Support was added for the Bruce C Compiler with compiler id ``Bruce``. +New Features +============ -* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST - library. +Generators +---------- -* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source - files in different directories use ``#include `` with the - same name (because the generated ``moc_foo.cpp`` files would collide). +* The :generator:`Ninja` generator learned to produce phony targets + of the form ``sub/dir/all`` to drive the build of a subdirectory. + This is equivalent to ``cd sub/dir; make all`` with + :ref:`Makefile Generators`. + +* The :generator:`Ninja` generator now includes system header files in build + dependencies to ensure correct re-builds when system packages are updated. + +* The :generator:`Visual Studio 14 2015` generator learned to support the + Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option. + This feature is experimental. + +Commands +-------- + +* The :command:`add_custom_command` and :command:`add_custom_target` commands + learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable + target property. + +* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option + to leave installation rules out of the default installation. + +* The :command:`list` command gained a ``FILTER`` sub-command to filter + list elements by regular expression. + +* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)` + commands gained support for the ``%s`` placeholder. This is + the number of seconds since the UNIX Epoch. + +* The :command:`try_compile` command source file signature now honors + configuration-specific flags (e.g. :variable:`CMAKE__FLAGS_DEBUG`) + in the generated test project. Previously only the default such flags + for the current toolchain were used. + +Variables +--------- + +* A :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable was introduced + to tell :ref:`Makefile Generators` to limit dependency scanning only + to files in the project source and build trees. + +* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to + indicate when CMake is running on an Oracle Solaris host. + +* A :variable:`CMAKE__STANDARD_INCLUDE_DIRECTORIES` variable was + added for use by toolchain files to specify system include directories + to be appended to all compiler command lines. + +* The :variable:`CMAKE__STANDARD_LIBRARIES` variable is now documented. + It is intended for use by toolchain files to specify system libraries to be + added to all linker command lines. + +* A :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable was introduced + to tell the :generator:`Ninja` generator to configure the generated + ``build.ninja`` file for use as a ``subninja``. + +* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was + added for use by toolchain files to specify platform-specific + variables that must be propagated by the :command:`try_compile` + command into test projects. + +* A :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable was added + to optionally tell the :command:`try_compile` command to build + a static library instead of an executable. This is useful for + cross-compiling toolchains that cannot link binaries without + custom flags or scripts. + +Properties +---------- + +* A :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property was introduced + to tell the :generator:`Visual Studio 9 2008` and + :generator:`Visual Studio 8 2005` generators to generate the "remote + directory" for WinCE project deployment and debugger settings. * A :prop_tgt:`_CLANG_TIDY` target property and supporting :variable:`CMAKE__CLANG_TIDY` variable were introduced to tell the :ref:`Makefile Generators` and the :generator:`Ninja` generator to run ``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages. -* The :ref:`Makefile Generators` learned to optionally limit dependency - scanning only to files in the project source and build trees. - See the :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable. +* A :prop_test:`TIMEOUT_AFTER_MATCH` test property was introduced to + optionally tell CTest to enforce a secondary timeout after matching + certain output from a test. -* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to - indicate when CMake is running on an Oracle Solaris host. +* A :prop_tgt:`VS_CONFIGURATION_TYPE` target property was introduced + to specify a custom project file type for :ref:`Visual Studio Generators` + supporting VS 2010 and above. + +* A :prop_dir:`VS_STARTUP_PROJECT` directory property was introduced + to specify for :ref:`Visual Studio Generators` the default startup + project for generated solutions (``.sln`` files). + +Modules +------- * The :module:`CMakePushCheckState` module now pushes/pops/resets the variable ``CMAKE_EXTRA_INCLUDE_FILE`` used in :module:`CheckTypeSize`. -* The "CPackDeb" module learned how to handle ``$ORIGIN`` +* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1`` + option to perform a shallow clone of a Git repository. + +* The :module:`ExternalProject` module learned to initialize Git submodules + recursively and also to initialize new submodules on updates. Use the + ``GIT_SUBMODULES`` option to restrict which submodules are initalized and + updated. + +* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1`` + argument to skip extracting the file that is downloaded (e.g., for + self-extracting shell installers or ``.msi`` files). + +* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching + from git repositories. + +* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to + support `OpenBLAS `__. + +* The :module:`FindCUDA` module learned to find the ``cublas_device`` library. + +* The :module:`FindGTest` module ``gtest_add_tests`` function now causes + CMake to automatically re-run when test sources change so that they + can be re-scanned. + +* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST + library. + +* The :module:`FindPkgConfig` module learned to optionally create imported + targets for the libraries it has found. + +* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION`` + variable and check the version number requested in a :command:`find_package` + call. + +* The :module:`InstallRequiredSystemLibraries` module learned a new + ``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment + of the Windows Universal CRT libraries with Visual Studio 2015. + +Platforms +--------- + +* The Clang compiler is now supported on CYGWIN. + +* Support was added for the Bruce C Compiler with compiler id ``Bruce``. + +CTest +----- + +* The :command:`ctest_update` command now looks at the + :variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether + submodules should be updated or not before updating. + +* The :command:`ctest_update` command will now synchronize submodules on an + update. Updates which add submodules or change a submodule's URL will now be + pulled properly. + +CPack +----- + +* The :module:`CPackDeb` module learned how to handle ``$ORIGIN`` in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` is used for dependency auto detection. @@ -45,8 +184,8 @@ Changes made since CMake 3.5 include the following. * The :module:`CPackDeb` module learned how to generate dependencies between Debian packages if multi-component setup is used and :variable:`CPACK_COMPONENT__DEPENDS` variables are set. - For backward compatibility this feature is disabled by default. See - :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`. + For backward compatibility this feature is disabled by default. + See :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`. * The :module:`CPackDeb` module learned how to set custom package file names including how to generate properly-named Debian packages:: @@ -78,8 +217,8 @@ Changes made since CMake 3.5 include the following. e.g. on Fedora). See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`. -* The "CPackRPM" module learned how to set default values for owning user/group - and file/directory permissions of package content. +* The :module:`CPackRPM` module learned how to set default values for owning + user/group and file/directory permissions of package content. See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`, :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`, :variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component @@ -92,70 +231,22 @@ Changes made since CMake 3.5 include the following. See :variable:`CPACK_RPM_PACKAGE_NAME` and :variable:`CPACK_RPM__PACKAGE_NAME`. -* The "CPackRPM" module learned how to correctly handle symlinks +* The :module:`CPackRPM` module learned how to correctly handle symlinks that are pointing outside generated packages. -* The "CPackRPM" module now supports upper cased component name - in per component CPackRPM specific variables. - E.g. component named ``foo`` now expects component specific - variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before - it expected ``CPACK_RPM_foo_PACKAGE_NAME``. - Upper cased component name part in variables is compatible - with convention used for other CPack variables. - For back compatibility old format of variables is still valid - and preferred if both versions of variable are set, but the - preferred future use is upper cased component names in variables. - New variables that will be added to CPackRPM in later versions - will only support upper cased component variable format. +Other +----- -* The :command:`ctest_update` command now looks at the - :variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether - submodules should be updated or not before updating. -* The :command:`ctest_update` command will now synchronize submodules on an - update. Updates which add submodules or change a submodule's URL will now be - pulled properly. +* The :manual:`Compile Features ` functionality + is now aware of features supported by Intel C++ compilers versions 12.1 + through 16.0 on UNIX platforms. -* The :command:`add_custom_command` and :command:`add_custom_target` commands - learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable - target property. - -* The Clang compiler is now supported on CYGWIN. +Deprecated and Removed Features +=============================== * The :module:`CMakeForceCompiler` module and its macros are now deprecated. See module documentation for an explanation. -* The :variable:`CMAKE__STANDARD_LIBRARIES` variable is now documented. - It is intended for use by toolchain files to specify system libraries to be - added to all linker command lines. - -* On Linux and FreeBSD platforms, when building CMake itself from source and - not using a system-provided libcurl, OpenSSL is now used by default if it is - found on the system. This enables SSL/TLS support for commands supporting - network communication via ``https``, such as :command:`file(DOWNLOAD)`, - :command:`file(UPLOAD)`, and :command:`ctest_submit`. - -* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching - from git repositories. - -* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple - ``--target`` options with an error instead of silently ignoring all but the - last one. - -* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1`` - option to perform a shallow clone of a Git repository. - -* The :module:`ExternalProject` module learned to initialize Git submodules - recursively and also to initialize new submodules on updates. Use the - ``GIT_SUBMODULES`` option to restrict which submodules are initalized and - updated. - -* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1`` - argument to skip extracting the file that is downloaded (e.g., for - self-extracting shell installers or ``.msi`` files). - -* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to - support `OpenBLAS `__. - * The :command:`find_library`, :command:`find_path`, and :command:`find_file` commands no longer search in installation prefixes derived from the ``PATH`` environment variable on non-Windows platforms. This behavior was added in @@ -166,23 +257,34 @@ Changes made since CMake 3.5 include the following. variable with a :ref:`;-list ` of prefixes that are to be searched. -* The :module:`FindCUDA` module learned to find the ``cublas_device`` library. +* The :generator:`Visual Studio 7 .NET 2003` generator is now + deprecated and will be removed in a future version of CMake. -* The :module:`FindGTest` module ``gtest_add_tests`` function now causes - CMake to automatically re-run when test sources change so that they - can be re-scanned. +* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been + removed. It had been deprecated since CMake 3.3. -* The :module:`FindPkgConfig` module learned to optionally create imported - targets for the libraries it has found. +* The :generator:`Visual Studio 6` generator has been removed. + It had been deprecated since CMake 3.3. -* The :module:`FindProtobuf` module input and output variables were all renamed - from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules. - Input variables of the old case will be honored if provided, and output - variables of the old case are always provided. +Other Changes +============= -* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION`` - variable and check the version number requested in a :command:`find_package` - call. +* The precompiled OS X binary provided on ``cmake.org`` now requires + OS X 10.7 or newer. + +* On Linux and FreeBSD platforms, when building CMake itself from source and + not using a system-provided libcurl, OpenSSL is now used by default if it is + found on the system. This enables SSL/TLS support for commands supporting + network communication via ``https``, such as :command:`file(DOWNLOAD)`, + :command:`file(UPLOAD)`, and :command:`ctest_submit`. + +* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple + ``--target`` options with an error instead of silently ignoring all but the + last one. + +* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source + files in different directories use ``#include `` with the + same name (because the generated ``moc_foo.cpp`` files would collide). * The :module:`FindBISON` module ``BISON_TARGET`` macro now supports special characters by passing the ``VERBATIM`` option to internal @@ -194,83 +296,20 @@ Changes made since CMake 3.5 include the following. :command:`add_custom_command` calls. This may break clients that added escaping manually to work around the bug. -* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option - to leave installation rules out of the default installation. +* The :module:`FindProtobuf` module input and output variables were all renamed + from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules. + Input variables of the old case will be honored if provided, and output + variables of the old case are always provided. -* The :module:`InstallRequiredSystemLibraries` module learned a new - ``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment - of the Windows Universal CRT libraries with Visual Studio 2015. - -* The :manual:`Compile Features ` functionality - is now aware of features supported by Intel C++ compilers versions 12.1 - through 16.0 on UNIX platforms. - -* The :command:`list` command gained a ``FILTER`` sub-command to filter - list elements by regular expression. - -* The :generator:`Ninja` generator now includes system header files in build - dependencies to ensure correct re-builds when system packages are updated. - -* The :generator:`Ninja` generator learned to produce phony targets - of the form ``sub/dir/all`` to drive the build of a subdirectory. - This is equivalent to ``cd sub/dir; make all`` with - :ref:`Makefile Generators`. - -* The :generator:`Ninja` generator learned to read a new - :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable to configure - the generated ``build.ninja`` file for use as a ``subninja``. - -* The :generator:`Visual Studio 6` generator has been removed. - -* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been - removed. - -* A :variable:`CMAKE__STANDARD_INCLUDE_DIRECTORIES` variable was - added for use by toolchain files to specify system include directories - to be appended to all compiler command lines. - -* CTest learned to optionally enforce a secondary timeout after matching - certain output from a test. See the :prop_test:`TIMEOUT_AFTER_MATCH` test - property. - -* The :command:`try_compile` command source file signature now honors - configuration-specific flags (e.g. :variable:`CMAKE__FLAGS_DEBUG`) - in the generated test project. Previously only the default such flags - for the current toolchain were used. - -* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was - added for use by toolchain files to specify platform-specific - variables that must be propagated by the :command:`try_compile` - command into test projects. - -* The :command:`try_compile` command learned to check a new - :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to optionally - build a static library instead of an executable. This is useful - for cross-compiling toolchains that cannot link binaries without - custom flags or scripts. - -* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)` - commands gained support for the ``%s`` placeholder. This is - the number of seconds since the UNIX Epoch. - -* The precompiled OS X binary provided on ``cmake.org`` now requires - OS X 10.7 or newer. - -* The :generator:`Visual Studio 7 .NET 2003` generator is now - deprecated and will be removed in a future version of CMake. - -* The :generator:`Visual Studio 14 2015` generator learned to support the - Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option. - -* The :generator:`Visual Studio 9 2008` and :generator:`Visual Studio 8 2005` - generators learned to generate the remote directory for WinCE project - deployment and debugger settings. See the - :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property. - -* The :ref:`Visual Studio Generators` learned to honor a new - :prop_dir:`VS_STARTUP_PROJECT` directory property that specifies - the default startup project for generated solutions (``.sln`` files). - -* :ref:`Visual Studio Generators` for VS 2010 and above learned a new - :prop_tgt:`VS_CONFIGURATION_TYPE` target property to specify a custom - project file type. +* The :module:`CPackRPM` module now supports upper cased component + names in per component CPackRPM specific variables. + E.g. component named ``foo`` now expects component specific + variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before + it expected ``CPACK_RPM_foo_PACKAGE_NAME``. + Upper cased component name part in variables is compatible + with convention used for other CPack variables. + For back compatibility old format of variables is still valid + and preferred if both versions of variable are set, but the + preferred future use is upper cased component names in variables. + New variables that will be added to CPackRPM in later versions + will only support upper cased component variable format.