summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-09-29 08:46:35 -0400
committerBrad King <brad.king@kitware.com>2016-10-01 08:25:17 -0400
commit64e63da0d17e000343b324f2d7ebadbd484f0860 (patch)
tree60da1440c726ae016a64f1c4c796af7f9c28d97d
parente82c33b88c566cd5388f4ce26a1d82b3ecafcc12 (diff)
downloadcmake-64e63da0d17e000343b324f2d7ebadbd484f0860.tar.gz
Help: Organize and revise 3.7 release notes
Add section headers similar to the 3.6 release notes and move each individual bullet into an appropriate section. Revise a few bullets.
-rw-r--r--Help/release/3.7.rst363
1 files changed, 199 insertions, 164 deletions
diff --git a/Help/release/3.7.rst b/Help/release/3.7.rst
index 1152188f8d..97c6f7c988 100644
--- a/Help/release/3.7.rst
+++ b/Help/release/3.7.rst
@@ -7,78 +7,118 @@ CMake 3.7 Release Notes
Changes made since CMake 3.6 include the following.
-* The :command:`install` command gained an ``EXPORT_ANDROID_MK``
- subcommand to install ``Android.mk`` files referencing installed
- libraries as prebuilts for the Android NDK build system.
-
-* The :command:`export` command gained an ``ANDROID_MK`` option
- to generate ``Android.mk`` files referencing CMake-built
- libraries as prebuilts for the Android NDK build system.
-
-* A :module:`AndroidTestUtilities` module was added to manage transfer of
- test data to an Android device.
-
-* The :command:`if` command gained new boolean comparison operations
- ``LESS_EQUAL``, ``GREATER_EQUAL``, ``STRLESS_EQUAL``, ``STRGREATER_EQUAL``,
- ``VERSION_LESS_EQUAL``, and ``VERSION_GREATER_EQUAL``.
+New Features
+============
-* The Clang compiler is now supported on AIX.
+Platforms
+---------
* CMake now supports :ref:`Cross Compiling for Android` with simple
toolchain files.
-* On Apple platforms the :prop_tgt:`BUNDLE_EXTENSION` now also applies to
- Frameworks and App Bundles.
-
-* The :module:`FindBZip2` module now provides imported targets.
+* The Clang compiler is now supported on AIX.
-* :manual:`ccmake(1)` learned to support vim-like navigation bindings.
+Generators
+----------
-* The :module:`CheckFortranSourceCompiles` module macro
- ``CHECK_Fortran_SOURCE_COMPILES`` gained a ``SRC_EXT`` option
- to specify a custom test Fortran source file extension.
+* The :generator:`Ninja` generator learned to conditionally support
+ Fortran when using a ``ninja`` tool that has the necessary features.
+ See generator documentation for details.
-* :manual:`cmake(1)` gained a ``-E capabilities`` option to provide a
- machine-readable (JSON) description of the capabilities of the
- cmake tool (available generators, etc.).
+* The :generator:`Ninja` generator learned to produce phony targets
+ of the form ``sub/dir/{test,install,package}`` to drive the build
+ of a subdirectory installation, test or packaging target.
+ This is equivalent to ``cd sub/dir; make {test,install,package}``
+ with :ref:`Makefile Generators`.
-* :manual:`cmake-gui(1)` gained a button to open the generated project file
- for :ref:`Visual Studio Generators` and the :generator:`Xcode` generator.
+* The :generator:`Visual Studio 15` generator was added. This is
+ experimental and based on Preview 4 because this version of VS
+ has not been released.
-* A new :manual:`cmake-server(7)` mode was added to provide semantic
- information about a CMake-generated buildsystem to clients through
- a JSON protocol.
+* :ref:`Visual Studio Generators` for VS 2010 and above learned to
+ place ``.natvis`` source files into VS project files properly.
-* The :manual:`cmake(1)` command learned a ``--trace-source=<file>`` option.
+* The :generator:`Xcode` generator's rudimentary Swift language support
+ learned to honor a new :variable:`CMAKE_Swift_LANGUAGE_VERSION` variable
+ to tell Xcode what version of Swift is used by the source.
* The :generator:`CodeLite` generator gained a new
:variable:`CMAKE_CODELITE_USE_TARGETS` option
to change project creation from projects to targets.
-* The :module:`CPackDeb` module learned to support long file names
- when archive format is set to GNU tar.
- See :variable:`CPACK_DEBIAN_ARCHIVE_TYPE`
+Commands
+--------
-* CPack gained a new :variable:`CPACK_PACKAGE_CHECKSUM` variable to
- enable generation of a checksum file for each package file.
+* The :command:`add_custom_command` command gained a new ``DEPFILE``
+ option that works with the :generator:`Ninja` generator to provide
+ implicit dependency information to the build tool.
-* The :module:`CPackRPM` module learned to generate debuginfo
- packages on demand. See :variable:`CPACK_RPM_DEBUGINFO_PACKAGE`
- and its per component version.
+* The :command:`cmake_parse_arguments` command gained a new ``PARSE_ARGV``
+ mode to read arguments directly from ``ARGC`` and ``ARGV#``
+ variables inside a :command:`function` body.
-* The :module:`CPackRPM` module learned to generate source rpm
- (SRPM) packages on demand. See :variable:`CPACK_RPM_PACKAGE_SOURCES`,
- :variable:`CPACK_RPM_SOURCE_PKG_BUILD_PARAMS` and
- :variable:`CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX`.
+* The :command:`export` command gained an ``ANDROID_MK`` option
+ to generate ``Android.mk`` files referencing CMake-built
+ libraries as prebuilts for the Android NDK build system.
-* The :command:`ctest_configure`, :command:`ctest_build`,
- :command:`ctest_test`, :command:`ctest_coverage`, and :command:`ctest_upload`
- commands gained a new ``CAPTURE_CMAKE_ERROR`` option to capture any errors
- that occur as the commands run into a variable and avoid affecting the return
- code of the :manual:`ctest(1)` process.
+* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands gained
+ ``HTTPHEADER <HTTP-header>`` and ``USERPWD <username>:<password>`` options.
-* A :prop_dir:`SOURCE_DIR` directory property was added to get the
- absolute path to the source directory associated with a directory.
+* The :command:`find_library` and :command:`find_package` commands learned
+ to search in ``lib32/`` directories when the build targets a 32-bit
+ architecture. See the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global
+ property.
+
+* The :command:`find_package` command gained the possibility of
+ sorting compatible libraries by ``NAME`` or by ``NATURAL`` sorting by
+ setting the two new variables :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`
+ and :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION`.
+
+* The :command:`if` command gained new boolean comparison operations
+ ``LESS_EQUAL``, ``GREATER_EQUAL``, ``STRLESS_EQUAL``, ``STRGREATER_EQUAL``,
+ ``VERSION_LESS_EQUAL``, and ``VERSION_GREATER_EQUAL``.
+
+* The :command:`install` command gained an ``EXPORT_ANDROID_MK``
+ subcommand to install ``Android.mk`` files referencing installed
+ libraries as prebuilts for the Android NDK build system.
+
+* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
+ commands gained support for the ``%a`` and ``%b`` placeholders.
+ These are the abbreviated weekday and month names.
+
+* The :command:`try_compile` command source file signature now honors
+ configuration-specific flags (e.g. :variable:`CMAKE_<LANG>_FLAGS_DEBUG`)
+ in the generated test project. Previously only the default such flags
+ for the current toolchain were used. See policy :policy:`CMP0066`.
+
+Variables
+---------
+
+* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` was added to control
+ the sorting mode of the :command:`find_package` command.
+
+* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION` was added to control
+ the sorting direction the :command:`find_package` command.
+
+* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set a
+ :variable:`CMAKE_<LANG>_FLAGS_INIT` variable to initialize the
+ :variable:`CMAKE_<LANG>_FLAGS` cache entry the first time a language is
+ enabled in a build tree.
+
+* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set
+ :variable:`CMAKE_EXE_LINKER_FLAGS_INIT`,
+ :variable:`CMAKE_SHARED_LINKER_FLAGS_INIT`, and
+ :variable:`CMAKE_MODULE_LINKER_FLAGS_INIT` variables to initialize the
+ :variable:`CMAKE_EXE_LINKER_FLAGS`,
+ :variable:`CMAKE_SHARED_LINKER_FLAGS`, and
+ :variable:`CMAKE_MODULE_LINKER_FLAGS` cache entries the first time
+ a language is enabled in a build tree.
+
+Properties
+----------
+
+* On Apple platforms the :prop_tgt:`BUNDLE_EXTENSION` target property
+ now also applies to Frameworks and App Bundles.
* A :prop_dir:`BINARY_DIR` directory property was added to get the
absolute path to the binary directory corresponding to the source
@@ -88,19 +128,39 @@ Changes made since CMake 3.6 include the following.
get the list of logical buildsystem target names added by the
project in a directory.
+* A :prop_tgt:`LINK_WHAT_YOU_USE` target property and supporting
+ :variable:`CMAKE_LINK_WHAT_YOU_USE` variable were introduced
+ to detect (on UNIX) shared libraries that are linked but not
+ needed by running ``ldd -r -u``.
+
+* A :prop_dir:`SOURCE_DIR` directory property was added to get the
+ absolute path to the source directory associated with a directory.
+
* A :prop_dir:`SUBDIRECTORIES` directory property was added to
get the list of subdirectories added by a project in a directory.
-* Support for building CMake itself with some compilers was dropped:
+* A :prop_tgt:`VS_SDK_REFERENCES` target property was added to tell
+ :ref:`Visual Studio Generators` to reference the named SDKs.
- * Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above
- * MinGW.org mingw32 -- superseded by MSYS2 mingw32 and mingw64
+* A :prop_sf:`VS_TOOL_OVERRIDE` source file property was created to tell
+ :ref:`Visual Studio Generators` what tool to use for a source file.
- CMake still supports generating build systems for other projects using
- these compilers.
+* The :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property now applies
+ to executable targets with the :prop_tgt:`ENABLE_EXPORTS` property set.
-* We no longer provide Linux i386 binaries for download from ``cmake.org``
- for new versions of CMake.
+* A :prop_sf:`XCODE_FILE_ATTRIBUTES` source file property was
+ added to tell the :generator:`Xcode` generator to generate
+ custom content in the Xcode project attributes for the file.
+
+Modules
+-------
+
+* An :module:`AndroidTestUtilities` module was added to manage transfer
+ of test data to an Android device.
+
+* The :module:`CheckFortranSourceCompiles` module macro
+ ``CHECK_Fortran_SOURCE_COMPILES`` gained a ``SRC_EXT`` option
+ to specify a custom test Fortran source file extension.
* The :module:`ExternalProject` module gained ``HTTP_USERNAME`` and
``HTTP_PASSWORD`` options to set http download credentials.
@@ -108,23 +168,14 @@ Changes made since CMake 3.6 include the following.
* The :module:`ExternalProject` module gained a ``HTTP_HEADER``
option to add http download headers.
-* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands
- gained a ``HTTPHEADER <HTTP-header>`` option.
-
-* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands
- gained a ``USERPWD <username>:<password>`` option.
-
* The :module:`FindBISON` module ``BISON_TARGET`` macro learned a new
``REPORT_FILE`` option to specify the bison ``--report-file=`` option.
+* The :module:`FindBZip2` module now provides imported targets.
+
* A :module:`FindICU` module was introduced to find the International
Components for Unicode (ICU) libraries and programs.
-* The :command:`find_library` and :command:`find_package` commands learned
- to search in ``lib32/`` directories when the build targets a 32-bit
- architecture. See the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global
- property.
-
* The :module:`FindMatlab` module learned to find a SIMULINK component.
* The :module:`FindOpenCL` module now provides imported targets.
@@ -132,24 +183,8 @@ Changes made since CMake 3.6 include the following.
* The :module:`FindOpenMP` module learned to detect the OpenMP
version (specification date) from the compiler.
-* The :command:`find_package` command gained the possibility of
- sorting compatible libraries by ``NAME`` or by ``NATURAL`` sorting by
- setting the two new variables :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`
- and :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION`.
-
-* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` was added to control
- the sorting mode of the :command:`find_package` command.
-
-* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION` was added to control
- the sorting direction the :command:`find_package` command.
-
* A :module:`FindVulkan` module was added.
-* The Fortran dependency scanner learned to support the syntax of
- `Fortran Submodules`_.
-
-.. _`Fortran Submodules`: http://fortranwiki.org/fortran/show/Submodules
-
* The :module:`GenerateExportHeader` module learned a new
``CUSTOM_CONTENT_FROM_VARIABLE`` option to specify a variable
containing custom content for inclusion in the generated header.
@@ -157,44 +192,12 @@ Changes made since CMake 3.6 include the following.
* The :module:`GNUInstallDirs` module gained a new
:command:`GNUInstallDirs_get_absolute_install_dir` command.
-* The :module:`CPackIFW` module gained a new
- :command:`cpack_ifw_add_package_resources` command to include additional
- resources in the installer binary.
-
-* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
- :command:`cpack_ifw_configure_component_group` commands gained a new
- ``USER_INTERFACES`` option to add a list of additonal pages to the IFW
- installer.
-
* The :module:`UseJava` module gained APIs to "export" jar targets
for use by external CMake projects. See the ``install_jar_exports``
and ``export_jars`` functions.
-* A :prop_tgt:`LINK_WHAT_YOU_USE` target property and supporting
- :variable:`CMAKE_LINK_WHAT_YOU_USE` variable were introduced
- to detect (on UNIX) shared libraries that are linked but not
- needed by running ``ldd -r -u``.
-
-* The :command:`add_custom_command` command gained a new ``DEPFILE``
- option that works with the :generator:`Ninja` generator to provide
- implicit dependency information to the build tool.
-
-* The :generator:`Ninja` generator learned to produce phony targets
- of the form ``sub/dir/{test,install,package}`` to drive the build
- of a subdirectory installation, test or packaging target.
- This is equivalent to ``cd sub/dir; make {test,install,package}``
- with :ref:`Makefile Generators`.
-
-* The :generator:`Ninja` generator learned to conditionally support
- Fortran when using a ``ninja`` tool that has the necessary features.
- See generator documentation for details.
-
-* The :command:`cmake_parse_arguments` command gained a new
- mode to read arguments directly from ``ARGC`` and ``ARGV#``
- variables inside a :command:`function` body.
-
-* CPack gained a ``productbuild`` generator on OS X, configured by
- the :module:`CPackProductBuild` module.
+CTest
+-----
* CTest now supports test fixtures through the new :prop_test:`FIXTURES_SETUP`,
:prop_test:`FIXTURES_CLEANUP` and :prop_test:`FIXTURES_REQUIRED` test
@@ -202,51 +205,42 @@ Changes made since CMake 3.6 include the following.
the tests to be run, a fixture's setup and cleanup tests will automatically
be added to the execution set if any test requires that fixture.
-* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
- commands gained support for the ``%a`` and ``%b`` placeholders.
- These are the abbreviated weekday and month names.
-
-* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set a
- :variable:`CMAKE_<LANG>_FLAGS_INIT` variable to initialize the
- :variable:`CMAKE_<LANG>_FLAGS` cache entry the first time a language is
- enabled in a build tree.
-
-* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set
- :variable:`CMAKE_EXE_LINKER_FLAGS_INIT`,
- :variable:`CMAKE_SHARED_LINKER_FLAGS_INIT`, and
- :variable:`CMAKE_MODULE_LINKER_FLAGS_INIT` variables to initialize the
- :variable:`CMAKE_EXE_LINKER_FLAGS`,
- :variable:`CMAKE_SHARED_LINKER_FLAGS`, and
- :variable:`CMAKE_MODULE_LINKER_FLAGS` cache entries the first time
- a language is enabled in a build tree.
-
-* The :command:`try_compile` command source file signature now honors
- configuration-specific flags (e.g. :variable:`CMAKE_<LANG>_FLAGS_DEBUG`)
- in the generated test project. Previously only the default such flags
- for the current toolchain were used. See policy :policy:`CMP0066`.
+* The :command:`ctest_configure`, :command:`ctest_build`,
+ :command:`ctest_test`, :command:`ctest_coverage`, and :command:`ctest_upload`
+ commands gained a new ``CAPTURE_CMAKE_ERROR`` option to capture any errors
+ that occur as the commands run into a variable and avoid affecting the return
+ code of the :manual:`ctest(1)` process.
-* Vim support files ``indent/cmake.vim`` and ``syntax/cmake.vim``
- from the `vim-cmake-syntax`_ project are now distributed with CMake.
+CPack
+-----
-* Vim support files ``cmake-indent.vim``, ``cmake-syntax.vim``, and
- ``cmake-help.vim`` have been removed in favor of the files now provided
- from the `vim-cmake-syntax`_ project.
+* CPack gained a ``productbuild`` generator on OS X, configured by
+ the :module:`CPackProductBuild` module.
-.. _`vim-cmake-syntax`: https://github.com/pboettch/vim-cmake-syntax
+* CPack gained a new :variable:`CPACK_PACKAGE_CHECKSUM` variable to
+ enable generation of a checksum file for each package file.
-* The :generator:`Visual Studio 15` generator was added.
+* The :module:`CPackDeb` module learned to support long file names
+ when archive format is set to GNU tar.
+ See :variable:`CPACK_DEBIAN_ARCHIVE_TYPE`
-* :ref:`Visual Studio Generators` for VS 2010 and above learned to
- place ``.natvis`` source files into VS project files properly.
+* The :module:`CPackIFW` module gained a new
+ :command:`cpack_ifw_add_package_resources` command to include additional
+ resources in the installer binary.
-* A :prop_tgt:`VS_SDK_REFERENCES` target property was added to tell
- :ref:`Visual Studio Generators` to reference the named SDKs.
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
+ :command:`cpack_ifw_configure_component_group` commands gained a new
+ ``USER_INTERFACES`` option to add a list of additonal pages to the IFW
+ installer.
-* A :prop_sf:`VS_TOOL_OVERRIDE` source file property was created to tell
- :ref:`Visual Studio Generators` what tool to use for a source file.
+* The :module:`CPackRPM` module learned to generate debuginfo
+ packages on demand. See :variable:`CPACK_RPM_DEBUGINFO_PACKAGE`
+ and its per component version.
-* The :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property now applies
- to executable targets with the :prop_tgt:`ENABLE_EXPORTS` property set.
+* The :module:`CPackRPM` module learned to generate source rpm
+ (SRPM) packages on demand. See :variable:`CPACK_RPM_PACKAGE_SOURCES`,
+ :variable:`CPACK_RPM_SOURCE_PKG_BUILD_PARAMS` and
+ :variable:`CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX`.
* The CPack WIX generator now supports
:variable:`CPACK_WIX_SKIP_PROGRAM_FOLDER` to allow specification
@@ -257,18 +251,59 @@ Changes made since CMake 3.6 include the following.
:variable:`CPACK_COMPONENT_<compName>_DISABLED`.
This can be used to deselect a component from being installed by default.
-* The CPack WIX generator now supports
- CPACK_WIX_PATCH_FILE fragments for Feature elements.
+* The CPack WIX generator now supports :variable:`CPACK_WIX_PATCH_FILE`
+ fragments for Feature elements.
* The CPack WIX generator now supports
:variable:`CPACK_WIX_ROOT_FEATURE_TITLE` and
:variable:`CPACK_WIX_ROOT_FEATURE_DESCRIPTION` to allow the specification
of a custom title and description for the root feature element.
-* A :prop_sf:`XCODE_FILE_ATTRIBUTES` source file property was
- added to tell the :generator:`Xcode` generator to generate
- custom content in the Xcode project attributes for the file.
+Other
+-----
-* The :generator:`Xcode` generator's rudimentary Swift language support
- learned to honor a new :variable:`CMAKE_Swift_LANGUAGE_VERSION` variable
- to tell Xcode what version of Swift is used by the source.
+* :manual:`cmake(1)` gained a ``-E capabilities`` option to provide a
+ machine-readable (JSON) description of the capabilities of the
+ cmake tool (available generators, etc.).
+
+* A new :manual:`cmake-server(7)` mode was added to provide semantic
+ information about a CMake-generated buildsystem to clients through
+ a JSON protocol. Currently all protocols are experimental and subject
+ to change.
+
+* The :manual:`cmake(1)` command learned a ``--trace-source=<file>`` option.
+
+* :manual:`ccmake(1)` learned to support vim-like navigation bindings.
+
+* :manual:`cmake-gui(1)` gained a button to open the generated project file
+ for :ref:`Visual Studio Generators` and the :generator:`Xcode` generator.
+
+Deprecated and Removed Features
+===============================
+
+* We no longer provide Linux i386 binaries for download from ``cmake.org``
+ for new versions of CMake.
+
+* Vim support files ``cmake-indent.vim``, ``cmake-syntax.vim``, and
+ ``cmake-help.vim`` have been removed in favor of the files now provided
+ from the `vim-cmake-syntax`_ project.
+
+* Support for building CMake itself with some compilers was dropped:
+
+ * Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above
+ * MinGW.org mingw32 -- superseded by MSYS2 mingw32 and mingw64
+
+ CMake still supports generating build systems for other projects using
+ these compilers.
+
+Other Changes
+=============
+
+* The Fortran dependency scanner learned to support the syntax of
+ `Fortran Submodules`_.
+
+* Vim support files ``indent/cmake.vim`` and ``syntax/cmake.vim``
+ from the `vim-cmake-syntax`_ project are now distributed with CMake.
+
+.. _`Fortran Submodules`: http://fortranwiki.org/fortran/show/Submodules
+.. _`vim-cmake-syntax`: https://github.com/pboettch/vim-cmake-syntax