diff options
author | Brad King <brad.king@kitware.com> | 2016-09-29 12:46:35 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-10-01 12:25:17 (GMT) |
commit | 64e63da0d17e000343b324f2d7ebadbd484f0860 (patch) | |
tree | 60da1440c726ae016a64f1c4c796af7f9c28d97d /Help | |
parent | e82c33b88c566cd5388f4ce26a1d82b3ecafcc12 (diff) | |
download | CMake-64e63da0d17e000343b324f2d7ebadbd484f0860.zip CMake-64e63da0d17e000343b324f2d7ebadbd484f0860.tar.gz CMake-64e63da0d17e000343b324f2d7ebadbd484f0860.tar.bz2 |
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.
Diffstat (limited to 'Help')
-rw-r--r-- | Help/release/3.7.rst | 363 |
1 files changed, 199 insertions, 164 deletions
diff --git a/Help/release/3.7.rst b/Help/release/3.7.rst index 1152188..97c6f7c 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 |