Help: Organize and revise 3.3 release notes

Add section headers similar to the 3.2 release notes and move each
individual bullet into an appropriate section.  Revise and consolidate
some bullets covering related areas.
This commit is contained in:
Brad King 2015-06-02 09:30:57 -04:00
parent 8ce87ac6ef
commit c952d790de
1 changed files with 182 additions and 152 deletions

View File

@ -7,14 +7,20 @@ CMake 3.3 Release Notes
Changes made since CMake 3.2 include the following. Changes made since CMake 3.2 include the following.
* The :module:`CheckFortranCompilerFlag` module was introduced New Features
to check ``Fortran`` compiler flags, much like the ============
:module:`CheckCCompilerFlag` module already does for ``C``.
* The :command:`add_dependencies` command learned to allow dependencies Generators
to be added to :ref:`interface libraries <Interface Libraries>`. ----------
Dependencies added to an interface library are followed transitively
in its place since the target itself does not build. * The :ref:`Makefile Generators` now add ``.DELETE_ON_ERROR`` to the
makefiles that contain the actual build rules for files on disk.
This tells GNU make to remove rule outputs when their recipe
modifies an output but fails.
* The :ref:`Visual Studio Generators` learned to support ``.xaml``
source files and automatically associate them with corresponding
``.h`` and ``.cpp`` sources.
* A new experimental :generator:`Green Hills MULTI` generator was * A new experimental :generator:`Green Hills MULTI` generator was
added on Windows. `Green Hills MULTI`_ is an IDE for embedded added on Windows. `Green Hills MULTI`_ is an IDE for embedded
@ -22,65 +28,76 @@ Changes made since CMake 3.2 include the following.
.. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html .. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html
* On OS X the :manual:`cmake-gui(1)` no longer has the Commands
``Install For Command Line Use`` menu item. Instead there --------
is a ``How to Install For Command Line Use`` menu item
that shows an informational dialog box explaining how to
make the command line tools available. For example::
/Applications/CMake.app/Contents/bin/cmake-gui --install * The :command:`add_dependencies` command learned to allow dependencies
to be added to :ref:`interface libraries <Interface Libraries>`.
Dependencies added to an interface library are followed transitively
in its place since the target itself does not build.
* The :command:`execute_process` command learned to support specifying
the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``.
* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands
learned a new ``LIST_DIRECTORIES <bool>`` option to specify whether
the glob result should include directories.
* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
commands now search in installation prefixes derived from the ``PATH``
environment variable.
* The :command:`if` command learned a new ``IN_LIST`` operator that
evaluates to true if a given element is contained in a named list.
* The :command:`install(EXPORT)` and :command:`export()` commands
learned to export targets that populate the :prop_tgt:`INTERFACE_SOURCES`
target property.
* The :command:`install(TARGETS)` command learned to support
generator expressions in the ``DESTINATION`` value.
Variables
---------
* The version of some Fortran compilers is now detected and stored in the * The version of some Fortran compilers is now detected and stored in the
:variable:`CMAKE_Fortran_COMPILER_VERSION <CMAKE_<LANG>_COMPILER_VERSION>` :variable:`CMAKE_Fortran_COMPILER_VERSION <CMAKE_<LANG>_COMPILER_VERSION>`
variable. variable.
* The :module:`CPackDeb` module learned a new * The :ref:`Visual Studio Generators` learned a new
:variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS` :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option
variable to specify per-component use of ``dpkg-shlibdeps``. to put the ``INSTALL`` target in the default build of a
solution (``.sln``) file.
* The :module:`CPackDeb` module learned a new Properties
:variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS` ----------
option to specify per-component dependencies.
* The :manual:`cpack(1)` ``IFW`` generator and the :module:`CPackIFW`
module learned to support Qt Framework Installer 2.0 tools.
* The :module:`CPackRPM` module learned to package symbolic links
more cleanly and now supports directory symlinks with recent
``rpmbuild`` versions.
* The :module:`CPackRPM` module learned a new
:variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify
directories containing man pages for the brp-compress RPM macro.
* The :command:`ctest_build` and :command:`build_command` commands
no longer tell ``make`` tools to ignore errors with the ``-i`` option.
Previously this was done for :ref:`Makefile Generators` but not others.
See policy :policy:`CMP0061`.
* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail <n>``
option to help find sporadic test failures.
* Using the output of :command:`export()` with the :command:`install(FILES)`
command is no longer allowed. See policy :policy:`CMP0062` for details.
* A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting * A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting
:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced
to allow target platform binaries to run on the host during cross to allow target platform binaries to run on the host during cross
compiling. compiling.
* The :command:`execute_process` command learned to support specifying * A :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property and supporting
the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``. :variable:`CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable were introduced
to tell the :ref:`Makefile Generators` and the :generator:`Ninja` generator
* It is now possible to export targets which populate the to run ``include-what-you-use`` along with the compiler for ``C`` and
:prop_tgt:`INTERFACE_SOURCES` target property using the ``CXX`` languages.
:command:`install(EXPORT)` and :command:`export()` commands.
* The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and * The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and
:prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now
affect compilation in sources of all target types. See affect compilation in sources of all target types. See
policy :policy:`CMP0063`. policy :policy:`CMP0063`.
* The :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property learned
to support generator expressions.
Modules
-------
* The :module:`CheckFortranCompilerFlag` module was introduced
to check ``Fortran`` compiler flags, much like the
:module:`CheckCCompilerFlag` module already does for ``C``.
* The :module:`ExternalData` module learned a new * The :module:`ExternalData` module learned a new
:variable:`ExternalData_NO_SYMLINKS` option to disable use of :variable:`ExternalData_NO_SYMLINKS` option to disable use of
symbolic links to populate the real data files and use copies symbolic links to populate the real data files and use copies
@ -104,17 +121,9 @@ Changes made since CMake 3.2 include the following.
:manual:`generator expressions <cmake-generator-expressions(7)>` :manual:`generator expressions <cmake-generator-expressions(7)>`
when using ``LOG_*`` options and in CMake initial cache options. when using ``LOG_*`` options and in CMake initial cache options.
* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands
learned a new ``LIST_DIRECTORIES <bool>`` option to specify whether
the glob result should include directories.
* The :module:`FindBoost` module now tracks the directories containing * The :module:`FindBoost` module now tracks the directories containing
libraries separately for RELEASE and DEBUG configurations. libraries separately for RELEASE and DEBUG configurations.
* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
commands now search in installation prefixes derived from the ``PATH``
environment variable.
* The :module:`FindCUDA` module now defaults to using the static * The :module:`FindCUDA` module now defaults to using the static
CUDA runtime library if it is available. A new CUDA runtime library if it is available. A new
``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control ``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control
@ -125,80 +134,20 @@ Changes made since CMake 3.2 include the following.
multiplatform way. The module now offers APIs to create mex extensions, multiplatform way. The module now offers APIs to create mex extensions,
documentation, and unit tests. documentation, and unit tests.
* The :command:`find_package` command no longer considers project
build trees recently configured in a :manual:`cmake-gui(1)`.
This was previously done only on Windows and is now never done.
The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given
and effectively always on.
Projects may populate the :ref:`User Package Registry` to aid
users building multiple dependent projects one after another.
* The :module:`FindPackageHandleStandardArgs` module * The :module:`FindPackageHandleStandardArgs` module
``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now ``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now
always populates the both ``<PackageName>_FOUND`` always populates both the ``<PackageName>_FOUND``
and ``<UPPERCASE_NAME>_FOUND`` variables (the latter and ``<UPPERCASE_NAME>_FOUND`` variables (the latter
for backwards compatibility). The ``FOUND_VAR`` for backwards compatibility). The ``FOUND_VAR``
option is now ignored except to enforce its allowed option is now ignored except to enforce its allowed
values. values.
* The :module:`CTestCoverageCollectGCOV` module learned to support
the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the
:command:`ctest_coverage` command.
* Add a new IN_LIST operator to if() that evaluates true
if a given element is contained in a named list.
* The :command:`install(TARGETS)` command learned to support
generator expressions in the ``DESTINATION`` value.
* The :module:`InstallRequiredSystemLibraries` module learned a new * The :module:`InstallRequiredSystemLibraries` module learned a new
``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the ``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the
installation component. installation component.
* Linking to library files by a full path in an implicit linker search Generator Expressions
directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to ---------------------
search for the library (e.g. ``-lfoo``). See policy :policy:`CMP0060`.
* The Makefile generators now add ``.DELETE_ON_ERROR`` to the
makefiles that contain the actual build rules for files on disk.
This tells GNU make to remove rule outputs when their recipe
modifies an output but fails.
* With Makefile generators, the build-time progress output has been improved.
It no longer mixes progress and build rule messages during parallel builds.
The link rule messages now have progress and are displayed as bold green
instead of bold red (since red is often associated with an error message).
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
is now aware of features supported by GNU compilers on Windows, versions
4.4 through 5.0.
* When building with GNU tools on Windows (MinGW tools), the
:command:`find_library` command will no longer consider
``.dll`` files to be linkable libraries. All dynamic link
libraries are expected to provide separate ``.dll.a`` or
``.lib`` import libraries.
* The :generator:`Ninja` generator now requires that calls to the
:command:`add_custom_command` and :command:`add_custom_target`
commands use the ``BYPRODUCTS`` option to explicitly specify any
files generated by the custom commands that are not listed as
outputs (perhaps because their timestamps are allowed to be older
than the inputs). See policy :policy:`CMP0058`.
* The :command:`add_definitions()` command no longer causes a
:prop_dir:`DEFINITIONS` directory property to be populated. See policy
:policy:`CMP0059`.
* The :module:`CPackRPM` module learned a new
:variable:`CPACK_RPM_<component>_PACKAGE_ARCHITECTURE` variable
to specify a component-specific package architecture.
* The :ref:`Makefile Generators` and the :generator:`Ninja` generator
learned to optionally run ``include-what-you-use`` along with the
compiler for ``C`` and ``CXX`` languages. See the
:variable:`CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable and
:prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property for details.
* A new ``COMPILE_LANGUAGE`` generator expression was introduced to * A new ``COMPILE_LANGUAGE`` generator expression was introduced to
allow specification of compile options for target files based on the allow specification of compile options for target files based on the
@ -207,46 +156,41 @@ Changes made since CMake 3.2 include the following.
generators. See the :manual:`cmake-generator-expressions(7)` manual generators. See the :manual:`cmake-generator-expressions(7)` manual
for details. for details.
* The :manual:`cmake(1)` ``-E tar`` command learned a new CTest
``--format<format>`` option to specify the archive format to -----
be written.
* The :module:`UseSWIG` module ``SWIG_ADD_MODULE`` macro no * The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail <n>``
longer attaches the swig invocation custom command to the option to help find sporadic test failures.
``.i`` source file in IDE projects. This is because only
one custom command can be safely attached to a given source
file, and adding multiple modules with the same ``.i`` file
for different languages requires more than one such command.
* The :generator:`Visual Studio 10 2010` generator no longer checks * The :module:`CTestCoverageCollectGCOV` module learned to support
for running VS IDEs with the project open or asks them to reload. the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the
This was originally done for VS 10 because it had been done for :command:`ctest_coverage` command.
VS 7 through 9 to avoid prompting for every project in a solution.
Since VS >= 10 allow the whole solution to reload at once they
do not need CMake to help them.
* The :generator:`Visual Studio 6` generator is now deprecated CPack
and will be removed in a future version of CMake. -----
* The :generator:`Visual Studio 7` generator (.NET 2002) is now * The :manual:`cpack(1)` ``IFW`` generator and the :module:`CPackIFW`
deprecated and will be removed in a future version of CMake. module learned to support Qt Framework Installer 2.0 tools.
* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio * The :module:`CPackDeb` module learned a new
7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``. :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`
This should have no effect on the intended use cases of the variable. variable to specify per-component use of ``dpkg-shlibdeps``.
* With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)`` * The :module:`CPackDeb` module learned a new
placeholder no longer evaluates to the configuration name. Projects :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS`
should use ``$(ConfigurationName)`` for that instead. option to specify per-component dependencies.
* The :ref:`Visual Studio Generators` learned a new * The :module:`CPackRPM` module learned to package symbolic links
:variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option more cleanly and now supports directory symlinks with recent
to put the ``INSTALL`` target in the default build of a ``rpmbuild`` versions.
solution (``.sln``) file.
* The :ref:`Visual Studio Generators` learned to support ``.xaml`` * The :module:`CPackRPM` module learned a new
source files and automatically associate them with corresponding :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify
``.h`` and ``.cpp`` sources. directories containing man pages for the brp-compress RPM macro.
* The :module:`CPackRPM` module learned a new
:variable:`CPACK_RPM_<component>_PACKAGE_ARCHITECTURE` variable
to specify a component-specific package architecture.
* The CPack WIX generator learned the new * The CPack WIX generator learned the new
:prop_inst:`CPACK_START_MENU_SHORTCUTS`, :prop_inst:`CPACK_START_MENU_SHORTCUTS`,
@ -255,9 +199,95 @@ Changes made since CMake 3.2 include the following.
be used to install shorcuts in the Start Menu, on the Desktop and be used to install shorcuts in the Start Menu, on the Desktop and
in the Startup Folder respectively. in the Startup Folder respectively.
* The :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property learned Other
to support generator expressions. -----
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
is now aware of features supported by GNU compilers on Windows, versions
4.4 through 5.0.
* The :manual:`cmake(1)` ``-E tar`` command learned a new
``--format<format>`` option to specify the archive format to
be written.
* On OS X, CMake learned to create XCTest bundles to test Frameworks * On OS X, CMake learned to create XCTest bundles to test Frameworks
and App Bundles within Xcode. The :module:`FindXCTest` module and App Bundles within Xcode. The :module:`FindXCTest` module
provides convenience functions to handle :prop_tgt:`XCTEST` bundles. provides convenience functions to handle :prop_tgt:`XCTEST` bundles.
Deprecated and Removed Features
===============================
* On OS X the :manual:`cmake-gui(1)` no longer has the
``Install For Command Line Use`` menu item. Instead there
is a ``How to Install For Command Line Use`` menu item
that shows an informational dialog box explaining how to
make the command line tools available. For example::
/Applications/CMake.app/Contents/bin/cmake-gui --install
* The :command:`ctest_build` and :command:`build_command` commands
no longer tell ``make`` tools to ignore errors with the ``-i`` option.
Previously this was done for :ref:`Makefile Generators` but not others.
See policy :policy:`CMP0061`.
* The :generator:`Visual Studio 10 2010` generator no longer checks
for running VS IDEs with the project open or asks them to reload.
This was originally done for VS 10 because it had been done for
VS 7 through 9 to avoid prompting for every project in a solution.
Since VS >= 10 allow the whole solution to reload at once they
do not need CMake to help them.
* The :generator:`Visual Studio 7` generator (.NET 2002) is now
deprecated and will be removed in a future version of CMake.
* The :generator:`Visual Studio 6` generator is now deprecated
and will be removed in a future version of CMake.
* The :command:`find_package` command no longer considers project
build trees recently configured in a :manual:`cmake-gui(1)`.
This was previously done only on Windows and is now never done.
The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given
and effectively always on.
Projects may populate the :ref:`User Package Registry` to aid
users building multiple dependent projects one after another.
* When building with GNU tools on Windows (MinGW tools), the
:command:`find_library` command will no longer consider
``.dll`` files to be linkable libraries. All dynamic link
libraries are expected to provide separate ``.dll.a`` or
``.lib`` import libraries.
* The :command:`add_definitions()` command no longer causes a
:prop_dir:`DEFINITIONS` directory property to be populated. See policy
:policy:`CMP0059`.
* With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)``
placeholder no longer evaluates to the configuration name. Projects
should use ``$(ConfigurationName)`` for that instead.
* Using the output of :command:`export()` with the :command:`install(FILES)`
command is no longer allowed. See policy :policy:`CMP0062` for details.
Other Changes
=============
* The :generator:`Ninja` generator now requires that calls to the
:command:`add_custom_command` and :command:`add_custom_target`
commands use the ``BYPRODUCTS`` option to explicitly specify any
files generated by the custom commands that are not listed as
outputs (perhaps because their timestamps are allowed to be older
than the inputs). See policy :policy:`CMP0058`.
* Build-time progress output of :ref:`Makefile Generators` has been improved.
It no longer mixes progress and build rule messages during parallel builds.
The link rule messages now have progress and are displayed as bold green
instead of bold red (since red is often associated with an error message).
* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio
7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``.
This should have no effect on the intended use cases of the variable.
* Linking to library files by a full path in an implicit linker search
directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to
search for the library (e.g. ``-lfoo``) and now links by full path.
See policy :policy:`CMP0060`.