From af8d1c17e663cf424ce4b5af9351849651bd6fd0 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 5 Feb 2015 09:47:52 -0500 Subject: Help: Rename 3.x.0 release notes to 3.x In commit v3.0.0-rc1~9 (Help: Rename 3.0 release notes to 3.0.0, 2014-02-19) we anticipated the possibility of bugfix-only release notes. However, in practice we have no release notes for bug fix releases because we do not cover bug fixes in release notes at all, only new features. Instead we've been updating the feature-level release notes document in bug fix releases, treating errors in the document as bugs. It makes more sense to maintain release notes at the feature-release level, so rename the documents accordingly. Also update the document titles and intro text to refer only to feature versions and not bugfix versions. --- Help/release/3.0.0.rst | 473 ------------------------------------------------- Help/release/3.0.rst | 473 +++++++++++++++++++++++++++++++++++++++++++++++++ Help/release/3.1.0.rst | 425 -------------------------------------------- Help/release/3.1.rst | 425 ++++++++++++++++++++++++++++++++++++++++++++ Help/release/3.2.0.rst | 280 ----------------------------- Help/release/3.2.rst | 280 +++++++++++++++++++++++++++++ Help/release/index.rst | 6 +- 7 files changed, 1181 insertions(+), 1181 deletions(-) delete mode 100644 Help/release/3.0.0.rst create mode 100644 Help/release/3.0.rst delete mode 100644 Help/release/3.1.0.rst create mode 100644 Help/release/3.1.rst delete mode 100644 Help/release/3.2.0.rst create mode 100644 Help/release/3.2.rst diff --git a/Help/release/3.0.0.rst b/Help/release/3.0.0.rst deleted file mode 100644 index e92c293..0000000 --- a/Help/release/3.0.0.rst +++ /dev/null @@ -1,473 +0,0 @@ -CMake 3.0.0 Release Notes -************************* - -.. only:: html - - .. contents:: - -Changes made since CMake 2.8.12.2 include the following. - -Documentation Changes -===================== - -* The CMake documentation has been converted to reStructuredText and - now transforms via Sphinx (``__) into man and - html pages. This allows the documentation to be properly indexed - and to contain cross-references. - - Conversion from the old internal documentation format was done by - an automatic process so some documents may still contain artifacts. - They will be updated incrementally over time. - - A basic reStructuredText processor has been implemented to support - ``cmake --help-command`` and similar command-line options. - -* New manuals were added: - - - :manual:`cmake-buildsystem(7)` - - :manual:`cmake-commands(7)`, replacing ``cmakecommands(1)`` - and ``cmakecompat(1)`` - - :manual:`cmake-developer(7)` - - :manual:`cmake-generator-expressions(7)` - - :manual:`cmake-generators(7)` - - :manual:`cmake-language(7)` - - :manual:`cmake-modules(7)`, replacing ``cmakemodules(1)`` - - :manual:`cmake-packages(7)` - - :manual:`cmake-policies(7)`, replacing ``cmakepolicies(1)`` - - :manual:`cmake-properties(7)`, replacing ``cmakeprops(1)`` - - :manual:`cmake-qt(7)` - - :manual:`cmake-toolchains(7)` - - :manual:`cmake-variables(7)`, replacing ``cmakevars(1)`` - -* Release notes for CMake 3.0.0 and above will now be included with - the html documentation. - -New Features -============ - -Syntax ------- - -* The CMake language has been extended with - :ref:`Bracket Argument` and :ref:`Bracket Comment` - syntax inspired by Lua long brackets:: - - set(x [===[bracket argument]===] #[[bracket comment]]) - - Content between equal-length open- and close-brackets is taken - literally with no variable replacements. - - .. warning:: - This syntax change could not be made in a fully compatible - way. No policy is possible because syntax parsing occurs before - any chance to set a policy. Existing code using an unquoted - argument that starts with an open bracket will be interpreted - differently without any diagnostic. Fortunately the syntax is - obscure enough that this problem is unlikely in practice. - -Generators ----------- - -* A new :generator:`CodeLite` extra generator is available - for use with the Makefile or Ninja generators. - -* A new :generator:`Kate` extra generator is available - for use with the Makefile or Ninja generators. - -* The :generator:`Ninja` generator learned to use ``ninja`` job pools - when specified by a new :prop_gbl:`JOB_POOLS` global property. - -Commands --------- - -* The :command:`add_library` command learned a new ``INTERFACE`` - library type. Interface libraries have no build rules but may - have properties defining - :manual:`usage requirements ` - and may be installed, exported, and imported. This is useful to - create header-only libraries that have concrete link dependencies - on other libraries. - -* The :command:`export()` command learned a new ``EXPORT`` mode that - retrieves the list of targets to export from an export set configured - by the :command:`install(TARGETS)` command ``EXPORT`` option. This - makes it easy to export from the build tree the same targets that - are exported from the install tree. - -* The :command:`export` command learned to work with multiple dependent - export sets, thus allowing multiple packages to be built and exported - from a single tree. The feature requires CMake to wait until the - generation step to write the output file. This means one should not - :command:`include` the generated targets file later during project - configuration because it will not be available. - Use :ref:`Alias Targets` instead. See policy :policy:`CMP0024`. - -* The :command:`install(FILES)` command learned to support - :manual:`generator expressions ` - in the list of files. - -* The :command:`project` command learned to set some version variables - to values specified by the new ``VERSION`` option or to empty strings. - See policy :policy:`CMP0048`. - -* The :command:`string` command learned a new ``CONCAT`` mode. - It is particularly useful in combination with the new - :ref:`Bracket Argument` syntax. - -* The :command:`unset` command learned a ``PARENT_SCOPE`` option - matching that of the :command:`set` command. - -* The :command:`include_external_msproject` command learned - to handle non-C++ projects like ``.vbproj`` or ``.csproj``. - -* The :command:`ctest_update` command learned to update work trees - managed by the Perforce (p4) version control tool. - -* The :command:`message` command learned a ``DEPRECATION`` mode. Such - messages are not issued by default, but may be issued as a warning if - :variable:`CMAKE_WARN_DEPRECATED` is enabled, or as an error if - :variable:`CMAKE_ERROR_DEPRECATED` is enabled. - -* The :command:`target_link_libraries` command now allows repeated use of - the ``LINK_PUBLIC`` and ``LINK_PRIVATE`` keywords. - -Variables ---------- - -* Variable :variable:`CMAKE_FIND_NO_INSTALL_PREFIX` has been - introduced to tell CMake not to add the value of - :variable:`CMAKE_INSTALL_PREFIX` to the - :variable:`CMAKE_SYSTEM_PREFIX_PATH` variable by default. - This is useful when building a project that installs some - of its own dependencies to avoid finding files it is about - to replace. - -* Variable :variable:`CMAKE_STAGING_PREFIX` was introduced for use - when cross-compiling to specify an installation prefix on the - host system that differs from a :variable:`CMAKE_INSTALL_PREFIX` - value meant for the target system. - -* Variable :variable:`CMAKE_SYSROOT` was introduced to specify the - toolchain SDK installation prefix, typically for cross-compiling. - This is used to pass a ``--sysroot`` option to the compiler and - as a prefix searched by ``find_*`` commands. - -* Variable :variable:`CMAKE__COMPILER_TARGET` was introduced - for use when cross-compiling to specify the target platform in the - :ref:`toolchain file ` specified by the - :variable:`CMAKE_TOOLCHAIN_FILE` variable. - This is used to pass an option such as ``--target=`` to some - cross-compiling compiler drivers. - -* Variable :variable:`CMAKE_MAP_IMPORTED_CONFIG_` has been - introduced to optionally initialize the - :prop_tgt:`MAP_IMPORTED_CONFIG_` target property. - -Properties ----------- - -* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property - learned to support - :manual:`generator expressions `. - -* A new directory property :prop_dir:`CMAKE_CONFIGURE_DEPENDS` - was introduced to allow projects to specify additional - files on which the configuration process depends. CMake will - re-run at build time when one of these files is modified. - Previously this was only possible to achieve by specifying - such files as the input to a :command:`configure_file` command. - -* A new :ref:`Qt AUTORCC` feature replaces the need to - invoke ``qt4_add_resources()`` by allowing ``.qrc`` files to - be listed as target sources. - -* A new :ref:`Qt AUTOUIC` feature replaces the need to - invoke ``qt4_wrap_ui()``. - -* Test properties learned to support - :manual:`generator expressions `. - This is useful to specify per-configuration values for test - properties like :prop_test:`REQUIRED_FILES` and - :prop_test:`WORKING_DIRECTORY`. - -* A new :prop_test:`SKIP_RETURN_CODE` test property was introduced - to tell :manual:`ctest(1)` to treat a particular test return code as - if the test were not run. This is useful for test drivers to report - that certain test requirements were not available. - -* New types of :ref:`Compatible Interface Properties` were introduced, - namely the :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MAX` and - :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MIN` for calculating numeric - maximum and minimum values respectively. - -Modules -------- - -* The :module:`CheckTypeSize` module ``check_type_size`` macro and - the :module:`CheckStructHasMember` module ``check_struct_has_member`` - macro learned a new ``LANGUAGE`` option to optionally check C++ types. - -* The :module:`ExternalData` module learned to work with no - URL templates if a local store is available. - -* The :module:`ExternalProject` function ``ExternalProject_Add`` - learned a new ``GIT_SUBMODULES`` option to specify a subset - of available submodules to checkout. - -* A new :module:`FindBacktrace` module has been added to support - :command:`find_package(Backtrace)` calls. - -* A new :module:`FindLua` module has been added to support - :command:`find_package(Lua)` calls. - -* The :module:`FindBoost` module learned a new ``Boost_NAMESPACE`` - option to change the ``boost`` prefix on library names. - -* The :module:`FindBoost` module learned to control search - for libraies with the ``g`` tag (for MS debug runtime) with - a new ``Boost_USE_DEBUG_RUNTIME`` option. It is ``ON`` by - default to preserve existing behavior. - -* The :module:`FindJava` and :module:`FindJNI` modules learned - to use a ``JAVA_HOME`` CMake variable or environment variable, - and then try ``/usr/libexec/java_home`` on OS X. - -* The :module:`UseJava` module ``add_jar`` function learned a new - ``MANIFEST`` option to pass the ``-m`` option to ``jar``. - -* A new :module:`CMakeFindDependencyMacro` module was introduced with - a ``find_dependency`` macro to find transitive dependencies in - a :manual:`package configuration file `. Such - dependencies are omitted by the listing of the :module:`FeatureSummary` - module. - -* The :module:`FindQt4` module learned to create :ref:`Imported Targets` - for Qt executables. This helps disambiguate when using multiple - :manual:`Qt versions ` in the same buildsystem. - -* The :module:`FindRuby` module learned to search for Ruby 2.0 and 2.1. - -Generator Expressions ---------------------- - -* New ``$`` and ``$`` - :manual:`generator expressions ` - have been added. - -* The ``$`` - :manual:`generator expression ` now has - a variant which takes no argument. This is equivalent to the - ``$`` expression. - -* New ``$`` and ``$`` - :manual:`generator expressions ` - generator expressions have been added. - -* A new ``$`` - :manual:`generator expression ` has - been added. - -Other ------ - -* The :manual:`cmake(1)` ``-E`` option learned a new ``sleep`` command. - -* The :manual:`ccmake(1)` dialog learned to honor the - :prop_cache:`STRINGS` cache entry property to cycle through - the enumerated list of possible values. - -* The :manual:`cmake-gui(1)` dialog learned to remember window - settings between sessions. - -* The :manual:`cmake-gui(1)` dialog learned to remember the type - of a cache entry for completion in the ``Add Entry`` dialog. - -New Diagnostics -=============== - -* Directories named in the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` - target property of imported targets linked conditionally by a - :manual:`generator expression ` - were not checked for existence. Now they are checked. - See policy :policy:`CMP0027`. - -* Build target names must now match a validity pattern and may no longer - conflict with CMake-defined targets. See policy :policy:`CMP0037`. - -* Build targets that specify themselves as a link dependency were - silently accepted but are now diagnosed. See :policy:`CMP0038`. - -* The :command:`target_link_libraries` command used to silently ignore - calls specifying as their first argument build targets created by - :command:`add_custom_target` but now diagnoses this mistake. - See policy :policy:`CMP0039`. - -* The :command:`add_custom_command` command used to silently ignore - calls specifying the ``TARGET`` option with a non-existent target - but now diagnoses this mistake. See policy :policy:`CMP0040`. - -* Relative paths in the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` - target property used to be silently accepted if they contained a - :manual:`generator expression ` - but are now rejected. See policy :policy:`CMP0041`. - -* The :command:`get_target_property` command learned to reject calls - specifying a non-existent target. See policy :policy:`CMP0045`. - -* The :command:`add_dependencies` command learned to reject calls - specifying a dependency on a non-existent target. - See policy :policy:`CMP0046`. - -* Link dependency analysis learned to assume names containing ``::`` - refer to :ref:`Alias Targets` or :ref:`Imported Targets`. It will - now produce an error if such a linked target is missing. Previously - in this case CMake generated a link line that failed at build time. - See policy :policy:`CMP0028`. - -* When the :command:`project` or :command:`enable_language` commands - initialize support for a language, it is now an error if the full - path to the compiler cannot be found and stored in the corresponding - :variable:`CMAKE__COMPILER` variable. This produces nicer error - messages up front and stops processing when no working compiler - is known to be available. - -* Target sources specified with the :command:`add_library` or - :command:`add_executable` command learned to reject items which - require an undocumented extra layer of variable expansion. - See policy :policy:`CMP0049`. - -* Use of :command:`add_custom_command` undocumented ``SOURCE`` - signatures now results in an error. See policy :policy:`CMP0050`. - -Deprecated and Removed Features -=============================== - -* Compatibility options supporting code written for CMake versions - prior to 2.4 have been removed. - -* Several long-outdated commands that should no longer be called - have been disallowed in new code by policies: - - - Policy :policy:`CMP0029` disallows :command:`subdir_depends` - - Policy :policy:`CMP0030` disallows :command:`use_mangled_mesa` - - Policy :policy:`CMP0031` disallows :command:`load_command` - - Policy :policy:`CMP0032` disallows :command:`output_required_files` - - Policy :policy:`CMP0033` disallows :command:`export_library_dependencies` - - Policy :policy:`CMP0034` disallows :command:`utility_source` - - Policy :policy:`CMP0035` disallows :command:`variable_requires` - - Policy :policy:`CMP0036` disallows :command:`build_name` - -* The :manual:`cmake(1)` ``-i`` wizard mode has been removed. - Instead use an interactive dialog such as :manual:`ccmake(1)` - or use the ``-D`` option to set cache values from the command line. - -* The builtin documentation formatters that supported command-line - options such as ``--help-man`` and ``--help-html`` have been removed - in favor of the above-mentioned new documentation system. These and - other command-line options that used to generate man- and html- - formatted pages no longer work. The :manual:`cmake(1)` - ``--help-custom-modules`` option now produces a warning at runtime - and generates a minimal document that reports the limitation. - -* The :prop_dir:`COMPILE_DEFINITIONS_` directory properties and the - :prop_tgt:`COMPILE_DEFINITIONS_` target properties have been - deprecated. Instead set the corresponding :prop_dir:`COMPILE_DEFINITIONS` - directory property or :prop_tgt:`COMPILE_DEFINITIONS` target property and - use :manual:`generator expressions ` like - ``$`` to specify per-configuration definitions. - See policy :policy:`CMP0043`. - -* The :prop_tgt:`LOCATION` target property should no longer be read from - non-IMPORTED targets. It does not make sense in multi-configuration - generators since the build configuration is not known while configuring - the project. It has been superseded by the ``$`` generator - expression. See policy :policy:`CMP0026`. - -* The :prop_tgt:`COMPILE_FLAGS` target property is now documented - as deprecated, though no warning is issued. Use the - :prop_tgt:`COMPILE_OPTIONS` target property or the - :command:`target_compile_options` command instead. - -* The :module:`GenerateExportHeader` module ``add_compiler_export_flags`` - function is now deprecated. It has been superseded by the - :prop_tgt:`_VISIBILITY_PRESET` and - :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties. - -Other Changes -============= - -* The version scheme was changed to use only two components for - the feature level instead of three. The third component will - now be used for bug-fix releases or the date of development versions. - See the :variable:`CMAKE_VERSION` variable documentation for details. - -* The default install locations of CMake itself on Windows and - OS X no longer contain the CMake version number. This allows - for easy replacement without re-generating local build trees - manually. - -* Generators for Visual Studio 10 (2010) and later were renamed to - include the product year like generators for older VS versions: - - - ``Visual Studio 10`` -> :generator:`Visual Studio 10 2010` - - ``Visual Studio 11`` -> :generator:`Visual Studio 11 2012` - - ``Visual Studio 12`` -> :generator:`Visual Studio 12 2013` - - This clarifies which generator goes with each Visual Studio - version. The old names are recognized for compatibility. - -* The :variable:`CMAKE__COMPILER_ID` value for Apple-provided - Clang is now ``AppleClang``. It must be distinct from upstream - Clang because the version numbers differ. - See policy :policy:`CMP0025`. - -* The :variable:`CMAKE__COMPILER_ID` value for ``qcc`` on QNX - is now ``QCC``. It must be distinct from ``GNU`` because the - command-line options differ. See policy :policy:`CMP0047`. - -* On 64-bit OS X the :variable:`CMAKE_HOST_SYSTEM_PROCESSOR` value - is now correctly detected as ``x86_64`` instead of ``i386``. - -* On OS X, CMake learned to enable behavior specified by the - :prop_tgt:`MACOSX_RPATH` target property by default. This activates - use of ``@rpath`` for runtime shared library searches. - See policy :policy:`CMP0042`. - -* The :command:`build_command` command now returns a :manual:`cmake(1)` - ``--build`` command line instead of a direct invocation of the native - build tool. When using ``Visual Studio`` generators, CMake and CTest - no longer require :variable:`CMAKE_MAKE_PROGRAM` to be located up front. - Selection of the proper msbuild or devenv tool is now performed as - late as possible when the solution (``.sln``) file is available so - it can depend on project content. - -* The :manual:`cmake(1)` ``--build`` command now shares its own stdout - and stderr pipes with the native build tool by default. - The ``--use-stderr`` option that once activated this is now ignored. - -* The ``$`` and ``$`` - :manual:`generator expressions ` - used to perform case-insensitive comparison but have now been - corrected to perform case-sensitive comparison. - See policy :policy:`CMP0044`. - -* The builtin ``edit_cache`` target will no longer select - :manual:`ccmake(1)` by default when no interactive terminal will - be available (e.g. with :generator:`Ninja` or an IDE generator). - Instead :manual:`cmake-gui(1)` will be preferred if available. - -* The :module:`ExternalProject` download step learned to - re-attempt download in certain cases to be more robust to - temporary network failure. - -* The :module:`FeatureSummary` no longer lists transitive - dependencies since they were not directly requested by the - current project. - -* The ``cmake-mode.el`` major Emacs editing mode has been cleaned - up and enhanced in several ways. - -* Include directories specified in the - :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of :ref:`Imported Targets` - are treated as ``SYSTEM`` includes by default when handled as - :ref:`usage requirements `. diff --git a/Help/release/3.0.rst b/Help/release/3.0.rst new file mode 100644 index 0000000..d02f940 --- /dev/null +++ b/Help/release/3.0.rst @@ -0,0 +1,473 @@ +CMake 3.0 Release Notes +*********************** + +.. only:: html + + .. contents:: + +Changes made since CMake 2.8.12 include the following. + +Documentation Changes +===================== + +* The CMake documentation has been converted to reStructuredText and + now transforms via Sphinx (``__) into man and + html pages. This allows the documentation to be properly indexed + and to contain cross-references. + + Conversion from the old internal documentation format was done by + an automatic process so some documents may still contain artifacts. + They will be updated incrementally over time. + + A basic reStructuredText processor has been implemented to support + ``cmake --help-command`` and similar command-line options. + +* New manuals were added: + + - :manual:`cmake-buildsystem(7)` + - :manual:`cmake-commands(7)`, replacing ``cmakecommands(1)`` + and ``cmakecompat(1)`` + - :manual:`cmake-developer(7)` + - :manual:`cmake-generator-expressions(7)` + - :manual:`cmake-generators(7)` + - :manual:`cmake-language(7)` + - :manual:`cmake-modules(7)`, replacing ``cmakemodules(1)`` + - :manual:`cmake-packages(7)` + - :manual:`cmake-policies(7)`, replacing ``cmakepolicies(1)`` + - :manual:`cmake-properties(7)`, replacing ``cmakeprops(1)`` + - :manual:`cmake-qt(7)` + - :manual:`cmake-toolchains(7)` + - :manual:`cmake-variables(7)`, replacing ``cmakevars(1)`` + +* Release notes for CMake 3.0.0 and above will now be included with + the html documentation. + +New Features +============ + +Syntax +------ + +* The CMake language has been extended with + :ref:`Bracket Argument` and :ref:`Bracket Comment` + syntax inspired by Lua long brackets:: + + set(x [===[bracket argument]===] #[[bracket comment]]) + + Content between equal-length open- and close-brackets is taken + literally with no variable replacements. + + .. warning:: + This syntax change could not be made in a fully compatible + way. No policy is possible because syntax parsing occurs before + any chance to set a policy. Existing code using an unquoted + argument that starts with an open bracket will be interpreted + differently without any diagnostic. Fortunately the syntax is + obscure enough that this problem is unlikely in practice. + +Generators +---------- + +* A new :generator:`CodeLite` extra generator is available + for use with the Makefile or Ninja generators. + +* A new :generator:`Kate` extra generator is available + for use with the Makefile or Ninja generators. + +* The :generator:`Ninja` generator learned to use ``ninja`` job pools + when specified by a new :prop_gbl:`JOB_POOLS` global property. + +Commands +-------- + +* The :command:`add_library` command learned a new ``INTERFACE`` + library type. Interface libraries have no build rules but may + have properties defining + :manual:`usage requirements ` + and may be installed, exported, and imported. This is useful to + create header-only libraries that have concrete link dependencies + on other libraries. + +* The :command:`export()` command learned a new ``EXPORT`` mode that + retrieves the list of targets to export from an export set configured + by the :command:`install(TARGETS)` command ``EXPORT`` option. This + makes it easy to export from the build tree the same targets that + are exported from the install tree. + +* The :command:`export` command learned to work with multiple dependent + export sets, thus allowing multiple packages to be built and exported + from a single tree. The feature requires CMake to wait until the + generation step to write the output file. This means one should not + :command:`include` the generated targets file later during project + configuration because it will not be available. + Use :ref:`Alias Targets` instead. See policy :policy:`CMP0024`. + +* The :command:`install(FILES)` command learned to support + :manual:`generator expressions ` + in the list of files. + +* The :command:`project` command learned to set some version variables + to values specified by the new ``VERSION`` option or to empty strings. + See policy :policy:`CMP0048`. + +* The :command:`string` command learned a new ``CONCAT`` mode. + It is particularly useful in combination with the new + :ref:`Bracket Argument` syntax. + +* The :command:`unset` command learned a ``PARENT_SCOPE`` option + matching that of the :command:`set` command. + +* The :command:`include_external_msproject` command learned + to handle non-C++ projects like ``.vbproj`` or ``.csproj``. + +* The :command:`ctest_update` command learned to update work trees + managed by the Perforce (p4) version control tool. + +* The :command:`message` command learned a ``DEPRECATION`` mode. Such + messages are not issued by default, but may be issued as a warning if + :variable:`CMAKE_WARN_DEPRECATED` is enabled, or as an error if + :variable:`CMAKE_ERROR_DEPRECATED` is enabled. + +* The :command:`target_link_libraries` command now allows repeated use of + the ``LINK_PUBLIC`` and ``LINK_PRIVATE`` keywords. + +Variables +--------- + +* Variable :variable:`CMAKE_FIND_NO_INSTALL_PREFIX` has been + introduced to tell CMake not to add the value of + :variable:`CMAKE_INSTALL_PREFIX` to the + :variable:`CMAKE_SYSTEM_PREFIX_PATH` variable by default. + This is useful when building a project that installs some + of its own dependencies to avoid finding files it is about + to replace. + +* Variable :variable:`CMAKE_STAGING_PREFIX` was introduced for use + when cross-compiling to specify an installation prefix on the + host system that differs from a :variable:`CMAKE_INSTALL_PREFIX` + value meant for the target system. + +* Variable :variable:`CMAKE_SYSROOT` was introduced to specify the + toolchain SDK installation prefix, typically for cross-compiling. + This is used to pass a ``--sysroot`` option to the compiler and + as a prefix searched by ``find_*`` commands. + +* Variable :variable:`CMAKE__COMPILER_TARGET` was introduced + for use when cross-compiling to specify the target platform in the + :ref:`toolchain file ` specified by the + :variable:`CMAKE_TOOLCHAIN_FILE` variable. + This is used to pass an option such as ``--target=`` to some + cross-compiling compiler drivers. + +* Variable :variable:`CMAKE_MAP_IMPORTED_CONFIG_` has been + introduced to optionally initialize the + :prop_tgt:`MAP_IMPORTED_CONFIG_` target property. + +Properties +---------- + +* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property + learned to support + :manual:`generator expressions `. + +* A new directory property :prop_dir:`CMAKE_CONFIGURE_DEPENDS` + was introduced to allow projects to specify additional + files on which the configuration process depends. CMake will + re-run at build time when one of these files is modified. + Previously this was only possible to achieve by specifying + such files as the input to a :command:`configure_file` command. + +* A new :ref:`Qt AUTORCC` feature replaces the need to + invoke ``qt4_add_resources()`` by allowing ``.qrc`` files to + be listed as target sources. + +* A new :ref:`Qt AUTOUIC` feature replaces the need to + invoke ``qt4_wrap_ui()``. + +* Test properties learned to support + :manual:`generator expressions `. + This is useful to specify per-configuration values for test + properties like :prop_test:`REQUIRED_FILES` and + :prop_test:`WORKING_DIRECTORY`. + +* A new :prop_test:`SKIP_RETURN_CODE` test property was introduced + to tell :manual:`ctest(1)` to treat a particular test return code as + if the test were not run. This is useful for test drivers to report + that certain test requirements were not available. + +* New types of :ref:`Compatible Interface Properties` were introduced, + namely the :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MAX` and + :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MIN` for calculating numeric + maximum and minimum values respectively. + +Modules +------- + +* The :module:`CheckTypeSize` module ``check_type_size`` macro and + the :module:`CheckStructHasMember` module ``check_struct_has_member`` + macro learned a new ``LANGUAGE`` option to optionally check C++ types. + +* The :module:`ExternalData` module learned to work with no + URL templates if a local store is available. + +* The :module:`ExternalProject` function ``ExternalProject_Add`` + learned a new ``GIT_SUBMODULES`` option to specify a subset + of available submodules to checkout. + +* A new :module:`FindBacktrace` module has been added to support + :command:`find_package(Backtrace)` calls. + +* A new :module:`FindLua` module has been added to support + :command:`find_package(Lua)` calls. + +* The :module:`FindBoost` module learned a new ``Boost_NAMESPACE`` + option to change the ``boost`` prefix on library names. + +* The :module:`FindBoost` module learned to control search + for libraies with the ``g`` tag (for MS debug runtime) with + a new ``Boost_USE_DEBUG_RUNTIME`` option. It is ``ON`` by + default to preserve existing behavior. + +* The :module:`FindJava` and :module:`FindJNI` modules learned + to use a ``JAVA_HOME`` CMake variable or environment variable, + and then try ``/usr/libexec/java_home`` on OS X. + +* The :module:`UseJava` module ``add_jar`` function learned a new + ``MANIFEST`` option to pass the ``-m`` option to ``jar``. + +* A new :module:`CMakeFindDependencyMacro` module was introduced with + a ``find_dependency`` macro to find transitive dependencies in + a :manual:`package configuration file `. Such + dependencies are omitted by the listing of the :module:`FeatureSummary` + module. + +* The :module:`FindQt4` module learned to create :ref:`Imported Targets` + for Qt executables. This helps disambiguate when using multiple + :manual:`Qt versions ` in the same buildsystem. + +* The :module:`FindRuby` module learned to search for Ruby 2.0 and 2.1. + +Generator Expressions +--------------------- + +* New ``$`` and ``$`` + :manual:`generator expressions ` + have been added. + +* The ``$`` + :manual:`generator expression ` now has + a variant which takes no argument. This is equivalent to the + ``$`` expression. + +* New ``$`` and ``$`` + :manual:`generator expressions ` + generator expressions have been added. + +* A new ``$`` + :manual:`generator expression ` has + been added. + +Other +----- + +* The :manual:`cmake(1)` ``-E`` option learned a new ``sleep`` command. + +* The :manual:`ccmake(1)` dialog learned to honor the + :prop_cache:`STRINGS` cache entry property to cycle through + the enumerated list of possible values. + +* The :manual:`cmake-gui(1)` dialog learned to remember window + settings between sessions. + +* The :manual:`cmake-gui(1)` dialog learned to remember the type + of a cache entry for completion in the ``Add Entry`` dialog. + +New Diagnostics +=============== + +* Directories named in the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` + target property of imported targets linked conditionally by a + :manual:`generator expression ` + were not checked for existence. Now they are checked. + See policy :policy:`CMP0027`. + +* Build target names must now match a validity pattern and may no longer + conflict with CMake-defined targets. See policy :policy:`CMP0037`. + +* Build targets that specify themselves as a link dependency were + silently accepted but are now diagnosed. See :policy:`CMP0038`. + +* The :command:`target_link_libraries` command used to silently ignore + calls specifying as their first argument build targets created by + :command:`add_custom_target` but now diagnoses this mistake. + See policy :policy:`CMP0039`. + +* The :command:`add_custom_command` command used to silently ignore + calls specifying the ``TARGET`` option with a non-existent target + but now diagnoses this mistake. See policy :policy:`CMP0040`. + +* Relative paths in the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` + target property used to be silently accepted if they contained a + :manual:`generator expression ` + but are now rejected. See policy :policy:`CMP0041`. + +* The :command:`get_target_property` command learned to reject calls + specifying a non-existent target. See policy :policy:`CMP0045`. + +* The :command:`add_dependencies` command learned to reject calls + specifying a dependency on a non-existent target. + See policy :policy:`CMP0046`. + +* Link dependency analysis learned to assume names containing ``::`` + refer to :ref:`Alias Targets` or :ref:`Imported Targets`. It will + now produce an error if such a linked target is missing. Previously + in this case CMake generated a link line that failed at build time. + See policy :policy:`CMP0028`. + +* When the :command:`project` or :command:`enable_language` commands + initialize support for a language, it is now an error if the full + path to the compiler cannot be found and stored in the corresponding + :variable:`CMAKE__COMPILER` variable. This produces nicer error + messages up front and stops processing when no working compiler + is known to be available. + +* Target sources specified with the :command:`add_library` or + :command:`add_executable` command learned to reject items which + require an undocumented extra layer of variable expansion. + See policy :policy:`CMP0049`. + +* Use of :command:`add_custom_command` undocumented ``SOURCE`` + signatures now results in an error. See policy :policy:`CMP0050`. + +Deprecated and Removed Features +=============================== + +* Compatibility options supporting code written for CMake versions + prior to 2.4 have been removed. + +* Several long-outdated commands that should no longer be called + have been disallowed in new code by policies: + + - Policy :policy:`CMP0029` disallows :command:`subdir_depends` + - Policy :policy:`CMP0030` disallows :command:`use_mangled_mesa` + - Policy :policy:`CMP0031` disallows :command:`load_command` + - Policy :policy:`CMP0032` disallows :command:`output_required_files` + - Policy :policy:`CMP0033` disallows :command:`export_library_dependencies` + - Policy :policy:`CMP0034` disallows :command:`utility_source` + - Policy :policy:`CMP0035` disallows :command:`variable_requires` + - Policy :policy:`CMP0036` disallows :command:`build_name` + +* The :manual:`cmake(1)` ``-i`` wizard mode has been removed. + Instead use an interactive dialog such as :manual:`ccmake(1)` + or use the ``-D`` option to set cache values from the command line. + +* The builtin documentation formatters that supported command-line + options such as ``--help-man`` and ``--help-html`` have been removed + in favor of the above-mentioned new documentation system. These and + other command-line options that used to generate man- and html- + formatted pages no longer work. The :manual:`cmake(1)` + ``--help-custom-modules`` option now produces a warning at runtime + and generates a minimal document that reports the limitation. + +* The :prop_dir:`COMPILE_DEFINITIONS_` directory properties and the + :prop_tgt:`COMPILE_DEFINITIONS_` target properties have been + deprecated. Instead set the corresponding :prop_dir:`COMPILE_DEFINITIONS` + directory property or :prop_tgt:`COMPILE_DEFINITIONS` target property and + use :manual:`generator expressions ` like + ``$`` to specify per-configuration definitions. + See policy :policy:`CMP0043`. + +* The :prop_tgt:`LOCATION` target property should no longer be read from + non-IMPORTED targets. It does not make sense in multi-configuration + generators since the build configuration is not known while configuring + the project. It has been superseded by the ``$`` generator + expression. See policy :policy:`CMP0026`. + +* The :prop_tgt:`COMPILE_FLAGS` target property is now documented + as deprecated, though no warning is issued. Use the + :prop_tgt:`COMPILE_OPTIONS` target property or the + :command:`target_compile_options` command instead. + +* The :module:`GenerateExportHeader` module ``add_compiler_export_flags`` + function is now deprecated. It has been superseded by the + :prop_tgt:`_VISIBILITY_PRESET` and + :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties. + +Other Changes +============= + +* The version scheme was changed to use only two components for + the feature level instead of three. The third component will + now be used for bug-fix releases or the date of development versions. + See the :variable:`CMAKE_VERSION` variable documentation for details. + +* The default install locations of CMake itself on Windows and + OS X no longer contain the CMake version number. This allows + for easy replacement without re-generating local build trees + manually. + +* Generators for Visual Studio 10 (2010) and later were renamed to + include the product year like generators for older VS versions: + + - ``Visual Studio 10`` -> :generator:`Visual Studio 10 2010` + - ``Visual Studio 11`` -> :generator:`Visual Studio 11 2012` + - ``Visual Studio 12`` -> :generator:`Visual Studio 12 2013` + + This clarifies which generator goes with each Visual Studio + version. The old names are recognized for compatibility. + +* The :variable:`CMAKE__COMPILER_ID` value for Apple-provided + Clang is now ``AppleClang``. It must be distinct from upstream + Clang because the version numbers differ. + See policy :policy:`CMP0025`. + +* The :variable:`CMAKE__COMPILER_ID` value for ``qcc`` on QNX + is now ``QCC``. It must be distinct from ``GNU`` because the + command-line options differ. See policy :policy:`CMP0047`. + +* On 64-bit OS X the :variable:`CMAKE_HOST_SYSTEM_PROCESSOR` value + is now correctly detected as ``x86_64`` instead of ``i386``. + +* On OS X, CMake learned to enable behavior specified by the + :prop_tgt:`MACOSX_RPATH` target property by default. This activates + use of ``@rpath`` for runtime shared library searches. + See policy :policy:`CMP0042`. + +* The :command:`build_command` command now returns a :manual:`cmake(1)` + ``--build`` command line instead of a direct invocation of the native + build tool. When using ``Visual Studio`` generators, CMake and CTest + no longer require :variable:`CMAKE_MAKE_PROGRAM` to be located up front. + Selection of the proper msbuild or devenv tool is now performed as + late as possible when the solution (``.sln``) file is available so + it can depend on project content. + +* The :manual:`cmake(1)` ``--build`` command now shares its own stdout + and stderr pipes with the native build tool by default. + The ``--use-stderr`` option that once activated this is now ignored. + +* The ``$`` and ``$`` + :manual:`generator expressions ` + used to perform case-insensitive comparison but have now been + corrected to perform case-sensitive comparison. + See policy :policy:`CMP0044`. + +* The builtin ``edit_cache`` target will no longer select + :manual:`ccmake(1)` by default when no interactive terminal will + be available (e.g. with :generator:`Ninja` or an IDE generator). + Instead :manual:`cmake-gui(1)` will be preferred if available. + +* The :module:`ExternalProject` download step learned to + re-attempt download in certain cases to be more robust to + temporary network failure. + +* The :module:`FeatureSummary` no longer lists transitive + dependencies since they were not directly requested by the + current project. + +* The ``cmake-mode.el`` major Emacs editing mode has been cleaned + up and enhanced in several ways. + +* Include directories specified in the + :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of :ref:`Imported Targets` + are treated as ``SYSTEM`` includes by default when handled as + :ref:`usage requirements `. diff --git a/Help/release/3.1.0.rst b/Help/release/3.1.0.rst deleted file mode 100644 index 97a63f9..0000000 --- a/Help/release/3.1.0.rst +++ /dev/null @@ -1,425 +0,0 @@ -CMake 3.1.0 Release Notes -************************* - -.. only:: html - - .. contents:: - -Changes made since CMake 3.0.0 include the following. - -Documentation Changes -===================== - -* A new :manual:`cmake-compile-features(7)` manual was added. - -New Features -============ - -Generators ----------- - -* The :generator:`Visual Studio 14 2015` generator was added. - -Windows Phone and Windows Store -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* Generators for Visual Studio 11 (2012) and above learned to generate - projects for Windows Phone and Windows Store. One may set the - :variable:`CMAKE_SYSTEM_NAME` variable to ``WindowsPhone`` - or ``WindowsStore`` on the :manual:`cmake(1)` command-line - or in a :variable:`CMAKE_TOOLCHAIN_FILE` to activate these platforms. - Also set :variable:`CMAKE_SYSTEM_VERSION` to ``8.0`` or ``8.1`` to - specify the version of Windows to be targeted. - -NVIDIA Nsight Tegra -^^^^^^^^^^^^^^^^^^^ - -* Generators for Visual Studio 10 (2010) and above learned to generate - projects for NVIDIA Nsight Tegra Visual Studio Edition. One may set - the :variable:`CMAKE_SYSTEM_NAME` variable to ``Android`` on the - :manual:`cmake(1)` command-line or in a :variable:`CMAKE_TOOLCHAIN_FILE` - to activate this platform. - -Syntax ------- - -* The :manual:`cmake-language(7)` syntax for :ref:`Variable References` and - :ref:`Escape Sequences` was simplified in order to allow a much faster - implementation. See policy :policy:`CMP0053`. - -* The :command:`if` command no longer automatically dereferences - variables named in quoted or bracket arguments. See policy - :policy:`CMP0054`. - -Commands --------- - -* The :command:`add_custom_command` command learned to interpret - :manual:`cmake-generator-expressions(7)` in arguments to ``DEPENDS``. - -* The :command:`export(PACKAGE)` command learned to check the - :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable to skip - exporting the package. - -* The :command:`file(STRINGS)` command gained a new ``ENCODING`` - option to enable extraction of ``UTF-8`` strings. - -* The :command:`find_package` command learned to check the - :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` and - :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` - variables to skip searching the package registries. - -* The :command:`get_property` command learned a new ``INSTALL`` scope - for properties. - -* The :command:`install` command learned a ``MESSAGE_NEVER`` option - to avoid output during installation. - -* The :command:`set_property` command learned a new ``INSTALL`` scope - for properties. - -* The :command:`string` command learned a new ``GENEX_STRIP`` subcommand - which removes - :manual:`generator expression `. - -* The :command:`string` command learned a new ``UUID`` subcommand - to generate a univerally unique identifier. - -* New :command:`target_compile_features` command allows populating the - :prop_tgt:`COMPILE_FEATURES` target property, just like any other - build variable. - -* The :command:`target_sources` command was added to add to the - :prop_tgt:`SOURCES` target property. - -Variables ---------- - -* The Visual Studio generators for versions 8 (2005) and above - learned to read the target platform name from a new - :variable:`CMAKE_GENERATOR_PLATFORM` variable when it is - not specified as part of the generator name. The platform - name may be specified on the :manual:`cmake(1)` command line - with the ``-A`` option, e.g. ``-G "Visual Studio 12 2013" -A x64``. - -* The :variable:`CMAKE_GENERATOR_TOOLSET` variable may now be - initialized in a toolchain file specified by the - :variable:`CMAKE_TOOLCHAIN_FILE` variable. This is useful - when cross-compiling with the Xcode or Visual Studio - generators. - -* The :variable:`CMAKE_INSTALL_MESSAGE` variable was introduced to - optionally reduce output installation. - -Properties ----------- - -* New :prop_tgt:`CXX_STANDARD` and :prop_tgt:`CXX_EXTENSIONS` target - properties may specify values which CMake uses to compute required - compile options such as ``-std=c++11`` or ``-std=gnu++11``. The - :variable:`CMAKE_CXX_STANDARD` and :variable:`CMAKE_CXX_EXTENSIONS` - variables may be set to initialize the target properties. - -* New :prop_tgt:`C_STANDARD` and :prop_tgt:`C_EXTENSIONS` target - properties may specify values which CMake uses to compute required - compile options such as ``-std=c11`` or ``-std=gnu11``. The - :variable:`CMAKE_C_STANDARD` and :variable:`CMAKE_C_EXTENSIONS` - variables may be set to initialize the target properties. - -* New :prop_tgt:`COMPILE_FEATURES` target property may contain a list - of features required to compile a target. CMake uses this - information to ensure that the compiler in use is capable of building - the target, and to add any necessary compile flags to support language - features. - -* New :prop_tgt:`COMPILE_PDB_NAME` and - :prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY` target properties - were introduced to specify the MSVC compiler program database - file location (``cl /Fd``). This complements the existing - :prop_tgt:`PDB_NAME` and :prop_tgt:`PDB_OUTPUT_DIRECTORY` - target properties that specify the linker program database - file location (``link /pdb``). - -* The :prop_tgt:`INTERFACE_LINK_LIBRARIES` target property now supports - a ``$`` - :manual:`generator expression `. - -* A new :prop_tgt:`INTERFACE_SOURCES` target property was introduced. This is - consumed by dependent targets, which compile and link the listed sources. - -* The :prop_tgt:`SOURCES` target property now contains - :manual:`generator expression ` - such as ``TARGET_OBJECTS`` when read at configure time, if - policy :policy:`CMP0051` is ``NEW``. - -* The :prop_tgt:`SOURCES` target property now generally supports - :manual:`generator expression `. The - generator expressions may be used in the :command:`add_library` and - :command:`add_executable` commands. - -* It is now possible to write and append to the :prop_tgt:`SOURCES` target - property. The :variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable may be - used to trace the origin of sources. - -* A :prop_sf:`VS_DEPLOYMENT_CONTENT` source file property was added - to tell the Visual Studio generators to mark content for deployment - in Windows Phone and Windows Store projects. - -* A :prop_sf:`VS_DEPLOYMENT_LOCATION` source file property was added - to tell the Visual Studio generators the relative location of content - marked for deployment in Windows Phone and Windows Store projects. - -* The :prop_tgt:`VS_WINRT_COMPONENT` target property was created to - tell Visual Studio generators to compile a shared library as a - Windows Runtime (WinRT) component. - -* The :generator:`Xcode` generator learned to check source - file properties :prop_sf:`XCODE_EXPLICIT_FILE_TYPE` and - :prop_sf:`XCODE_LAST_KNOWN_FILE_TYPE` for a custom Xcode - file reference type. - -Modules -------- - -* The :module:`BundleUtilities` module learned to resolve and replace - ``@rpath`` placeholders on OS X to correctly bundle applications - using them. - -* The :module:`CMakePackageConfigHelpers` module - :command:`configure_package_config_file` command learned a new - ``INSTALL_PREFIX`` option to generate package configuration files - meant for a prefix other than :variable:`CMAKE_INSTALL_PREFIX`. - -* The :module:`CheckFortranSourceCompiles` module was added to - provide a ``CHECK_Fortran_SOURCE_COMPILES`` macro. - -* The :module:`ExternalData` module learned to tolerate a ``DATA{}`` - reference to a missing source file with a warning instead of - rejecting it with an error. This helps developers write new - ``DATA{}`` references to test reference outputs that have not - yet been created. - -* The :module:`ExternalProject` module learned to support lzma-compressed - source tarballs with ``.7z``, ``.tar.xz``, and ``.txz`` extensions. - -* The :module:`ExternalProject` module ``ExternalProject_Add`` command - learned a new ``BUILD_ALWAYS`` option to cause the external project - build step to run every time the host project is built. - -* The :module:`ExternalProject` module ``ExternalProject_Add`` command - learned a new ``EXCLUDE_FROM_ALL`` option to cause the external - project target to have the :prop_tgt:`EXCLUDE_FROM_ALL` target - property set. - -* The :module:`ExternalProject` module ``ExternalProject_Add_Step`` command - learned a new ``EXCLUDE_FROM_MAIN`` option to cause the step to not be - a direct dependency of the main external project target. - -* The :module:`ExternalProject` module ``ExternalProject_Add`` command - learned a new ``DOWNLOAD_NO_PROGRESS`` option to disable progress - output while downloading the source tarball. - -* The :module:`FeatureSummary` module ``feature_summary`` API - learned to accept multiple values for the ``WHAT`` option and - combine them appropriately. - -* The :module:`FindCUDA` module learned to support ``fatbin`` and ``cubin`` - modules. - -* The :module:`FindGTest` module ``gtest_add_tests`` macro learned - a new ``AUTO`` option to automatically read the :prop_tgt:`SOURCES` - target property of the test executable and scan the source files - for tests to be added. - -* The :module:`FindGLEW` module now provides imported targets. - -* The :module:`FindGLUT` module now provides imported targets. - -* The :module:`FindHg` module gained a new ``Hg_WC_INFO`` macro to - help run ``hg`` to extract information about a Mercurial work copy. - -* The :module:`FindOpenCL` module was introduced. - -* The :module:`FindOpenMP` module learned to support Fortran. - -* The :module:`FindPkgConfig` module learned to use the ``PKG_CONFIG`` - environment variable value as the ``pkg-config`` executable, if set. - -* The :module:`FindXercesC` module was introduced. - -* The :module:`FindZLIB` module now provides imported targets. - -* The :module:`GenerateExportHeader` module ``generate_export_header`` - function learned to allow use with :ref:`Object Libraries`. - -* The :module:`InstallRequiredSystemLibraries` module gained a new - ``CMAKE_INSTALL_OPENMP_LIBRARIES`` option to install MSVC OpenMP - runtime libraries. - -* The :module:`UseSWIG` module learned to detect the module name - from ``.i`` source files if possible to avoid the need to set - the ``SWIG_MODULE_NAME`` source file property explicitly. - -* The :module:`WriteCompilerDetectionHeader` module was added to allow - creation of a portable header file for compiler optional feature detection. - -Generator Expressions ---------------------- - -* New ``COMPILE_FEATURES`` - :manual:`generator expression ` allows - setting build properties based on available compiler features. - -CTest ------ - -* The :command:`ctest_coverage` command learned to read variable - ``CTEST_COVERAGE_EXTRA_FLAGS`` to set ``CoverageExtraFlags``. - -* The :command:`ctest_coverage` command learned to support - Intel coverage files with the ``codecov`` tool. - -* The :command:`ctest_memcheck` command learned to support sanitizer - modes, including ``AddressSanitizer``, ``MemorySanitizer``, - ``ThreadSanitizer``, and ``UndefinedBehaviorSanitizer``. - Options may be set using the new - :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS` variable. - -CPack ------ - -* :manual:`cpack(1)` gained an ``IFW`` generator to package using - Qt Framework Installer tools. See the :module:`CPackIFW` module. - -* :manual:`cpack(1)` gained ``7Z`` and ``TXZ`` generators supporting - lzma-compressed archives. - -* The :module:`CPackDeb` module learned a new - :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` variable to set the - tarball compression type. - -* The :manual:`cpack(1)` ``WiX`` generator learned to support - a :prop_inst:`CPACK_WIX_ACL` installed file property to - specify an Access Control List. - -Other ------ - -* The :manual:`cmake(1)` ``-E`` option learned a new ``env`` command. - -* The :manual:`cmake(1)` ``-E tar`` command learned to support - lzma-compressed files. - -* :ref:`Object Libraries` may now have extra sources that do not - compile to object files so long as they would not affect linking - of a normal library (e.g. ``.dat`` is okay but not ``.def``). - -* Visual Studio generators for VS 8 and later learned to support - the ``ASM_MASM`` language. - -* The Visual Studio generators learned to treat ``.hlsl`` source - files as High Level Shading Language sources (using ``FXCompile`` - in ``.vcxproj`` files). Source file properties - :prop_sf:`VS_SHADER_TYPE`, :prop_sf:`VS_SHADER_MODEL`, and - :prop_sf:`VS_SHADER_ENTRYPOINT` were added added to specify the - shader type, model, and entry point name. - -New Diagnostics -=============== - -* Policy :policy:`CMP0052` introduced to control directories in the - :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of exported targets. - -Deprecated and Removed Features -=============================== - -* In CMake 3.0 the :command:`target_link_libraries` command - accidentally began allowing unquoted arguments to use - :manual:`generator expressions ` - containing a (``;`` separated) list within them. For example:: - - set(libs B C) - target_link_libraries(A PUBLIC $) - - This is equivalent to writing:: - - target_link_libraries(A PUBLIC $) - - and was never intended to work. It did not work in CMake 2.8.12. - Such generator expressions should be in quoted arguments:: - - set(libs B C) - target_link_libraries(A PUBLIC "$") - - CMake 3.1 again requires the quotes for this to work correctly. - -* Prior to CMake 3.1 the Makefile generators did not escape ``#`` - correctly inside make variable assignments used in generated - makefiles, causing them to be treated as comments. This made - code like:: - - add_compile_options(-Wno-#pragma-messages) - - not work in Makefile generators, but work in other generators. - Now it is escaped correctly, making the behavior consistent - across generators. However, some projects may have tried to - workaround the original bug with code like:: - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-\\#pragma-messages") - - This added the needed escape for Makefile generators but also - caused other generators to pass ``-Wno-\#pragma-messages`` to - the shell, which would work only in POSIX shells. - Unfortunately the escaping fix could not be made in a compatible - way so this platform- and generator-specific workaround no - longer works. Project code may test the :variable:`CMAKE_VERSION` - variable value to make the workaround version-specific too. - -* Callbacks established by the :command:`variable_watch` command will no - longer receive the ``ALLOWED_UNKNOWN_READ_ACCESS`` access type when - the undocumented ``CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS`` variable is - set. Uninitialized variable accesses will always be reported as - ``UNKNOWN_READ_ACCESS``. - -* The :module:`CMakeDetermineVSServicePack` module now warns that - it is deprecated and should not longer be used. Use the - :variable:`CMAKE__COMPILER_VERSION` variable instead. - -* The :module:`FindITK` module has been removed altogether. - It was a thin-wrapper around ``find_package(ITK ... NO_MODULE)``. - This produces much clearer error messages when ITK is not found. - -* The :module:`FindVTK` module has been removed altogether. - It was a thin-wrapper around ``find_package(VTK ... NO_MODULE)``. - This produces much clearer error messages when VTK is not found. - - The module also provided compatibility support for finding VTK 4.0. - This capability has been dropped. - -Other Changes -============= - -* The :manual:`cmake-gui(1)` learned to capture output from child - processes started by the :command:`execute_process` command - and display it in the output window. - -* The :manual:`cmake-language(7)` internal implementation of generator - expression and list expansion parsers have been optimized and shows - non-trivial speedup on large projects. - -* The Makefile generators learned to use response files with GNU tools - on Windows to pass library directories and names to the linker. - -* When generating linker command-lines, CMake now avoids repeating - items corresponding to SHARED library targets. - -* Support for the Open Watcom compiler has been overhauled. - The :variable:`CMAKE__COMPILER_ID` is now ``OpenWatcom``, - and the :variable:`CMAKE__COMPILER_VERSION` now uses - the Open Watcom external version numbering. The external - version numbers are lower than the internal version number - by 11. - -* The ``cmake-mode.el`` major Emacs editing mode no longer - treats ``_`` as part of words, making it more consistent - with other major modes. diff --git a/Help/release/3.1.rst b/Help/release/3.1.rst new file mode 100644 index 0000000..dca42cd --- /dev/null +++ b/Help/release/3.1.rst @@ -0,0 +1,425 @@ +CMake 3.1 Release Notes +*********************** + +.. only:: html + + .. contents:: + +Changes made since CMake 3.0 include the following. + +Documentation Changes +===================== + +* A new :manual:`cmake-compile-features(7)` manual was added. + +New Features +============ + +Generators +---------- + +* The :generator:`Visual Studio 14 2015` generator was added. + +Windows Phone and Windows Store +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Generators for Visual Studio 11 (2012) and above learned to generate + projects for Windows Phone and Windows Store. One may set the + :variable:`CMAKE_SYSTEM_NAME` variable to ``WindowsPhone`` + or ``WindowsStore`` on the :manual:`cmake(1)` command-line + or in a :variable:`CMAKE_TOOLCHAIN_FILE` to activate these platforms. + Also set :variable:`CMAKE_SYSTEM_VERSION` to ``8.0`` or ``8.1`` to + specify the version of Windows to be targeted. + +NVIDIA Nsight Tegra +^^^^^^^^^^^^^^^^^^^ + +* Generators for Visual Studio 10 (2010) and above learned to generate + projects for NVIDIA Nsight Tegra Visual Studio Edition. One may set + the :variable:`CMAKE_SYSTEM_NAME` variable to ``Android`` on the + :manual:`cmake(1)` command-line or in a :variable:`CMAKE_TOOLCHAIN_FILE` + to activate this platform. + +Syntax +------ + +* The :manual:`cmake-language(7)` syntax for :ref:`Variable References` and + :ref:`Escape Sequences` was simplified in order to allow a much faster + implementation. See policy :policy:`CMP0053`. + +* The :command:`if` command no longer automatically dereferences + variables named in quoted or bracket arguments. See policy + :policy:`CMP0054`. + +Commands +-------- + +* The :command:`add_custom_command` command learned to interpret + :manual:`cmake-generator-expressions(7)` in arguments to ``DEPENDS``. + +* The :command:`export(PACKAGE)` command learned to check the + :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable to skip + exporting the package. + +* The :command:`file(STRINGS)` command gained a new ``ENCODING`` + option to enable extraction of ``UTF-8`` strings. + +* The :command:`find_package` command learned to check the + :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` and + :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` + variables to skip searching the package registries. + +* The :command:`get_property` command learned a new ``INSTALL`` scope + for properties. + +* The :command:`install` command learned a ``MESSAGE_NEVER`` option + to avoid output during installation. + +* The :command:`set_property` command learned a new ``INSTALL`` scope + for properties. + +* The :command:`string` command learned a new ``GENEX_STRIP`` subcommand + which removes + :manual:`generator expression `. + +* The :command:`string` command learned a new ``UUID`` subcommand + to generate a univerally unique identifier. + +* New :command:`target_compile_features` command allows populating the + :prop_tgt:`COMPILE_FEATURES` target property, just like any other + build variable. + +* The :command:`target_sources` command was added to add to the + :prop_tgt:`SOURCES` target property. + +Variables +--------- + +* The Visual Studio generators for versions 8 (2005) and above + learned to read the target platform name from a new + :variable:`CMAKE_GENERATOR_PLATFORM` variable when it is + not specified as part of the generator name. The platform + name may be specified on the :manual:`cmake(1)` command line + with the ``-A`` option, e.g. ``-G "Visual Studio 12 2013" -A x64``. + +* The :variable:`CMAKE_GENERATOR_TOOLSET` variable may now be + initialized in a toolchain file specified by the + :variable:`CMAKE_TOOLCHAIN_FILE` variable. This is useful + when cross-compiling with the Xcode or Visual Studio + generators. + +* The :variable:`CMAKE_INSTALL_MESSAGE` variable was introduced to + optionally reduce output installation. + +Properties +---------- + +* New :prop_tgt:`CXX_STANDARD` and :prop_tgt:`CXX_EXTENSIONS` target + properties may specify values which CMake uses to compute required + compile options such as ``-std=c++11`` or ``-std=gnu++11``. The + :variable:`CMAKE_CXX_STANDARD` and :variable:`CMAKE_CXX_EXTENSIONS` + variables may be set to initialize the target properties. + +* New :prop_tgt:`C_STANDARD` and :prop_tgt:`C_EXTENSIONS` target + properties may specify values which CMake uses to compute required + compile options such as ``-std=c11`` or ``-std=gnu11``. The + :variable:`CMAKE_C_STANDARD` and :variable:`CMAKE_C_EXTENSIONS` + variables may be set to initialize the target properties. + +* New :prop_tgt:`COMPILE_FEATURES` target property may contain a list + of features required to compile a target. CMake uses this + information to ensure that the compiler in use is capable of building + the target, and to add any necessary compile flags to support language + features. + +* New :prop_tgt:`COMPILE_PDB_NAME` and + :prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY` target properties + were introduced to specify the MSVC compiler program database + file location (``cl /Fd``). This complements the existing + :prop_tgt:`PDB_NAME` and :prop_tgt:`PDB_OUTPUT_DIRECTORY` + target properties that specify the linker program database + file location (``link /pdb``). + +* The :prop_tgt:`INTERFACE_LINK_LIBRARIES` target property now supports + a ``$`` + :manual:`generator expression `. + +* A new :prop_tgt:`INTERFACE_SOURCES` target property was introduced. This is + consumed by dependent targets, which compile and link the listed sources. + +* The :prop_tgt:`SOURCES` target property now contains + :manual:`generator expression ` + such as ``TARGET_OBJECTS`` when read at configure time, if + policy :policy:`CMP0051` is ``NEW``. + +* The :prop_tgt:`SOURCES` target property now generally supports + :manual:`generator expression `. The + generator expressions may be used in the :command:`add_library` and + :command:`add_executable` commands. + +* It is now possible to write and append to the :prop_tgt:`SOURCES` target + property. The :variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable may be + used to trace the origin of sources. + +* A :prop_sf:`VS_DEPLOYMENT_CONTENT` source file property was added + to tell the Visual Studio generators to mark content for deployment + in Windows Phone and Windows Store projects. + +* A :prop_sf:`VS_DEPLOYMENT_LOCATION` source file property was added + to tell the Visual Studio generators the relative location of content + marked for deployment in Windows Phone and Windows Store projects. + +* The :prop_tgt:`VS_WINRT_COMPONENT` target property was created to + tell Visual Studio generators to compile a shared library as a + Windows Runtime (WinRT) component. + +* The :generator:`Xcode` generator learned to check source + file properties :prop_sf:`XCODE_EXPLICIT_FILE_TYPE` and + :prop_sf:`XCODE_LAST_KNOWN_FILE_TYPE` for a custom Xcode + file reference type. + +Modules +------- + +* The :module:`BundleUtilities` module learned to resolve and replace + ``@rpath`` placeholders on OS X to correctly bundle applications + using them. + +* The :module:`CMakePackageConfigHelpers` module + :command:`configure_package_config_file` command learned a new + ``INSTALL_PREFIX`` option to generate package configuration files + meant for a prefix other than :variable:`CMAKE_INSTALL_PREFIX`. + +* The :module:`CheckFortranSourceCompiles` module was added to + provide a ``CHECK_Fortran_SOURCE_COMPILES`` macro. + +* The :module:`ExternalData` module learned to tolerate a ``DATA{}`` + reference to a missing source file with a warning instead of + rejecting it with an error. This helps developers write new + ``DATA{}`` references to test reference outputs that have not + yet been created. + +* The :module:`ExternalProject` module learned to support lzma-compressed + source tarballs with ``.7z``, ``.tar.xz``, and ``.txz`` extensions. + +* The :module:`ExternalProject` module ``ExternalProject_Add`` command + learned a new ``BUILD_ALWAYS`` option to cause the external project + build step to run every time the host project is built. + +* The :module:`ExternalProject` module ``ExternalProject_Add`` command + learned a new ``EXCLUDE_FROM_ALL`` option to cause the external + project target to have the :prop_tgt:`EXCLUDE_FROM_ALL` target + property set. + +* The :module:`ExternalProject` module ``ExternalProject_Add_Step`` command + learned a new ``EXCLUDE_FROM_MAIN`` option to cause the step to not be + a direct dependency of the main external project target. + +* The :module:`ExternalProject` module ``ExternalProject_Add`` command + learned a new ``DOWNLOAD_NO_PROGRESS`` option to disable progress + output while downloading the source tarball. + +* The :module:`FeatureSummary` module ``feature_summary`` API + learned to accept multiple values for the ``WHAT`` option and + combine them appropriately. + +* The :module:`FindCUDA` module learned to support ``fatbin`` and ``cubin`` + modules. + +* The :module:`FindGTest` module ``gtest_add_tests`` macro learned + a new ``AUTO`` option to automatically read the :prop_tgt:`SOURCES` + target property of the test executable and scan the source files + for tests to be added. + +* The :module:`FindGLEW` module now provides imported targets. + +* The :module:`FindGLUT` module now provides imported targets. + +* The :module:`FindHg` module gained a new ``Hg_WC_INFO`` macro to + help run ``hg`` to extract information about a Mercurial work copy. + +* The :module:`FindOpenCL` module was introduced. + +* The :module:`FindOpenMP` module learned to support Fortran. + +* The :module:`FindPkgConfig` module learned to use the ``PKG_CONFIG`` + environment variable value as the ``pkg-config`` executable, if set. + +* The :module:`FindXercesC` module was introduced. + +* The :module:`FindZLIB` module now provides imported targets. + +* The :module:`GenerateExportHeader` module ``generate_export_header`` + function learned to allow use with :ref:`Object Libraries`. + +* The :module:`InstallRequiredSystemLibraries` module gained a new + ``CMAKE_INSTALL_OPENMP_LIBRARIES`` option to install MSVC OpenMP + runtime libraries. + +* The :module:`UseSWIG` module learned to detect the module name + from ``.i`` source files if possible to avoid the need to set + the ``SWIG_MODULE_NAME`` source file property explicitly. + +* The :module:`WriteCompilerDetectionHeader` module was added to allow + creation of a portable header file for compiler optional feature detection. + +Generator Expressions +--------------------- + +* New ``COMPILE_FEATURES`` + :manual:`generator expression ` allows + setting build properties based on available compiler features. + +CTest +----- + +* The :command:`ctest_coverage` command learned to read variable + ``CTEST_COVERAGE_EXTRA_FLAGS`` to set ``CoverageExtraFlags``. + +* The :command:`ctest_coverage` command learned to support + Intel coverage files with the ``codecov`` tool. + +* The :command:`ctest_memcheck` command learned to support sanitizer + modes, including ``AddressSanitizer``, ``MemorySanitizer``, + ``ThreadSanitizer``, and ``UndefinedBehaviorSanitizer``. + Options may be set using the new + :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS` variable. + +CPack +----- + +* :manual:`cpack(1)` gained an ``IFW`` generator to package using + Qt Framework Installer tools. See the :module:`CPackIFW` module. + +* :manual:`cpack(1)` gained ``7Z`` and ``TXZ`` generators supporting + lzma-compressed archives. + +* The :module:`CPackDeb` module learned a new + :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` variable to set the + tarball compression type. + +* The :manual:`cpack(1)` ``WiX`` generator learned to support + a :prop_inst:`CPACK_WIX_ACL` installed file property to + specify an Access Control List. + +Other +----- + +* The :manual:`cmake(1)` ``-E`` option learned a new ``env`` command. + +* The :manual:`cmake(1)` ``-E tar`` command learned to support + lzma-compressed files. + +* :ref:`Object Libraries` may now have extra sources that do not + compile to object files so long as they would not affect linking + of a normal library (e.g. ``.dat`` is okay but not ``.def``). + +* Visual Studio generators for VS 8 and later learned to support + the ``ASM_MASM`` language. + +* The Visual Studio generators learned to treat ``.hlsl`` source + files as High Level Shading Language sources (using ``FXCompile`` + in ``.vcxproj`` files). Source file properties + :prop_sf:`VS_SHADER_TYPE`, :prop_sf:`VS_SHADER_MODEL`, and + :prop_sf:`VS_SHADER_ENTRYPOINT` were added added to specify the + shader type, model, and entry point name. + +New Diagnostics +=============== + +* Policy :policy:`CMP0052` introduced to control directories in the + :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of exported targets. + +Deprecated and Removed Features +=============================== + +* In CMake 3.0 the :command:`target_link_libraries` command + accidentally began allowing unquoted arguments to use + :manual:`generator expressions ` + containing a (``;`` separated) list within them. For example:: + + set(libs B C) + target_link_libraries(A PUBLIC $) + + This is equivalent to writing:: + + target_link_libraries(A PUBLIC $) + + and was never intended to work. It did not work in CMake 2.8.12. + Such generator expressions should be in quoted arguments:: + + set(libs B C) + target_link_libraries(A PUBLIC "$") + + CMake 3.1 again requires the quotes for this to work correctly. + +* Prior to CMake 3.1 the Makefile generators did not escape ``#`` + correctly inside make variable assignments used in generated + makefiles, causing them to be treated as comments. This made + code like:: + + add_compile_options(-Wno-#pragma-messages) + + not work in Makefile generators, but work in other generators. + Now it is escaped correctly, making the behavior consistent + across generators. However, some projects may have tried to + workaround the original bug with code like:: + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-\\#pragma-messages") + + This added the needed escape for Makefile generators but also + caused other generators to pass ``-Wno-\#pragma-messages`` to + the shell, which would work only in POSIX shells. + Unfortunately the escaping fix could not be made in a compatible + way so this platform- and generator-specific workaround no + longer works. Project code may test the :variable:`CMAKE_VERSION` + variable value to make the workaround version-specific too. + +* Callbacks established by the :command:`variable_watch` command will no + longer receive the ``ALLOWED_UNKNOWN_READ_ACCESS`` access type when + the undocumented ``CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS`` variable is + set. Uninitialized variable accesses will always be reported as + ``UNKNOWN_READ_ACCESS``. + +* The :module:`CMakeDetermineVSServicePack` module now warns that + it is deprecated and should not longer be used. Use the + :variable:`CMAKE__COMPILER_VERSION` variable instead. + +* The :module:`FindITK` module has been removed altogether. + It was a thin-wrapper around ``find_package(ITK ... NO_MODULE)``. + This produces much clearer error messages when ITK is not found. + +* The :module:`FindVTK` module has been removed altogether. + It was a thin-wrapper around ``find_package(VTK ... NO_MODULE)``. + This produces much clearer error messages when VTK is not found. + + The module also provided compatibility support for finding VTK 4.0. + This capability has been dropped. + +Other Changes +============= + +* The :manual:`cmake-gui(1)` learned to capture output from child + processes started by the :command:`execute_process` command + and display it in the output window. + +* The :manual:`cmake-language(7)` internal implementation of generator + expression and list expansion parsers have been optimized and shows + non-trivial speedup on large projects. + +* The Makefile generators learned to use response files with GNU tools + on Windows to pass library directories and names to the linker. + +* When generating linker command-lines, CMake now avoids repeating + items corresponding to SHARED library targets. + +* Support for the Open Watcom compiler has been overhauled. + The :variable:`CMAKE__COMPILER_ID` is now ``OpenWatcom``, + and the :variable:`CMAKE__COMPILER_VERSION` now uses + the Open Watcom external version numbering. The external + version numbers are lower than the internal version number + by 11. + +* The ``cmake-mode.el`` major Emacs editing mode no longer + treats ``_`` as part of words, making it more consistent + with other major modes. diff --git a/Help/release/3.2.0.rst b/Help/release/3.2.0.rst deleted file mode 100644 index 5b12163..0000000 --- a/Help/release/3.2.0.rst +++ /dev/null @@ -1,280 +0,0 @@ -CMake 3.2.0 Release Notes -************************* - -.. only:: html - - .. contents:: - -Changes made since CMake 3.1.0 include the following. - -New Features -============ - -Syntax ------- - -* CMake learned to support unicode characters - :ref:`encoded as UTF-8 ` - on Windows. This was already supported on platforms whose - system APIs accept UTF-8 encoded strings. - Unicode characters may now be used in CMake code, paths to - source files, configured files such as ``.h.in`` files, and - other files read and written by CMake. Note that because CMake - interoperates with many other tools, there may still be some - limitations when using certain unicode characters. - -Commands --------- - -* The :command:`add_custom_command` and :command:`add_custom_target` - commands learned a new ``BYPRODUCTS`` option to specify files - produced as side effects of the custom commands. These are not - outputs because they do not always have to be newer than inputs. - -* The :command:`add_custom_command` and :command:`add_custom_target` - commands learned a new ``USES_TERMINAL`` option to request that - the command be given direct access to the terminal if possible. - The :generator:`Ninja` generator will places such commands in the - ``console`` :prop_gbl:`pool `. Build targets provided by CMake - that are meant for individual interactive use, such as ``install``, are now - placed in this pool. - -* A new :command:`continue` command was added that can be called inside loop - contexts to end the current iteration and start the next one at the top of - the loop block. - -* The :command:`file(LOCK)` subcommand was created to allow CMake - processes to synchronize through file and directory locks. - -* The :command:`file(STRINGS)` now supports UTF-16LE, UTF-16BE, - UTF-32LE, UTF-32BE as ``ENCODING`` options. - -* The :command:`install(EXPORT)` command now works with an absolute - ``DESTINATION`` even if targets in the export set are installed - with a destination or :ref:`usage requirements ` - specified relative to the install prefix. The value of the - :variable:`CMAKE_INSTALL_PREFIX` variable is hard-coded into the installed - export file as the base for relative references. - -* The :command:`try_compile` command source file signature now honors - link flags (e.g. :variable:`CMAKE_EXE_LINKER_FLAGS`) in the generated - test project. See policy :policy:`CMP0056`. - -* The :command:`try_run` command learned to honor the ``LINK_LIBRARIES`` - option just as :command:`try_compile` already does. - -* The :command:`file(GENERATE)` command now generates the output file with - the same permissions as the input file if set. - -* The :command:`file(GENERATE)` command can now generate files which are - used as source files for buildsystem targets. Generated files - automatically get their :prop_sf:`GENERATED` property set to ``TRUE``. - -Variables ---------- - -* The :variable:`CMAKE_MATCH_COUNT` variable was introduced to record the - number of matches made in the last regular expression matched in an - :command:`if` command or a :command:`string` command. - -Properties ----------- - -* An :prop_tgt:`ANDROID_API_MIN` target property was introduced to - specify the minimum version to be targeted by the toolchain. - -* A :prop_sf:`VS_SHADER_FLAGS` source file property was added to specify - additional shader flags to ``.hlsl`` files, for the Visual Studio - generators. - -Modules -------- - -* The :module:`ExternalData` module learned to support - :ref:`Custom Fetch Scripts `. - This allows projects to specify custom ``.cmake`` scripts for - fetching data objects during the build. - -* The :module:`ExternalProject` module learned options to create - independent external project step targets that do not depend - on the builtin steps. - -* The :module:`ExternalProject` module :command:`ExternalProject_Add` - command learned a new ``CMAKE_CACHE_DEFAULT_ARGS`` option to - initialize cache values in the external project without setting - them on future builds. - -* The :module:`ExternalProject` module :command:`ExternalProject_Add` - command learned a new ``TEST_EXCLUDE_FROM_MAIN`` option to exclude - tests from the main build. - -* The :module:`ExternalProject` module :command:`ExternalProject_Add` - command learned a new ``UPDATE_DISCONNECTED`` option to avoid - automatically updating the source tree checkout from version control. - -* The :module:`FindCUDA` module learned about the ``cusolver`` - library in CUDA 7.0. - -* The :module:`FindGit` module learned to find the ``git`` command-line tool - that comes with GitHub for Windows installed in user home directories. - -* A :module:`FindGSL` module was introduced to find the - GNU Scientific Library. - -* A :module:`FindIntl` module was introduced to find the - Gettext ``libintl`` library. - -* A :module:`FindJsonCpp` module was introduced to find the - JsonCpp package. - -* The :module:`FindLATEX` module learned to support components. - -* The :module:`FindMPI` module learned to find MS-MPI on Windows. - -* The :module:`FindOpenGL` module no longer explicitly searches - for any dependency on X11 libraries with the :module:`FindX11` - module. Such dependencies should not need to be explicit. - Applications using X11 APIs themselves should find and link - to X11 libraries explicitly. - -* The :module:`FindOpenSSL` module now reports ``crypto`` and ``ssl`` - libraries separately in ``OPENSSL_CRYPTO_LIBRARY`` and - ``OPENSSL_SSL_LIBRARY``, respectively, to allow applications to - link to one without the other. - -* The :module:`WriteCompilerDetectionHeader` module learned to - create a define for portability of the ``cxx_thread_local`` feature. - The define expands to either the C++11 ``thread_local`` keyword, or a - pre-standardization compiler-specific equivalent, as appropriate. - -* The :module:`WriteCompilerDetectionHeader` module learned to create - multiple output files per compiler and per language, instead of creating - one large file. - -CTest ------ - -* The :command:`ctest_coverage` command learned to support Delphi coverage. - -* The :command:`ctest_coverage` command learned to support Javascript coverage. - -* The :module:`CTestCoverageCollectGCOV` module was introduced as an - alternative to the :command:`ctest_coverage` command for collecting - ``gcov`` results for submission to CDash. - -CPack ------ - -* The :module:`CPackRPM` module learned options to set per-component - descriptions and summaries. See the - :variable:`CPACK_RPM__PACKAGE_DESCRIPTION` and - :variable:`CPACK_RPM__PACKAGE_SUMMARY` variables. - -* The :module:`CPackRPM` module learned options to specify - requirements for pre- and post-install scripts. See the - :variable:`CPACK_RPM_PACKAGE_REQUIRES_PRE` and - :variable:`CPACK_RPM_PACKAGE_REQUIRES_POST` variables. - -* The :module:`CPackRPM` module learned options to specify - requirements for pre- and post-uninstall scripts. See the - :variable:`CPACK_RPM_PACKAGE_REQUIRES_PREUN` and - :variable:`CPACK_RPM_PACKAGE_REQUIRES_POSTUN` variables. - -* The :module:`CPackRPM` module learned a new - :variable:`CPACK_RPM__PACKAGE_PREFIX` variable to - specify a component-specific value to use instead of - :variable:`CPACK_PACKAGING_INSTALL_PREFIX`. - -* The :module:`CPackRPM` module learned a new - :variable:`CPACK_RPM_RELOCATION_PATHS` variable to - specify multiple relocation prefixes for a single rpm package. - -Other ------ - -* The :manual:`cmake(1)` ``-E tar`` command now supports creating - ``.xz``-compressed archives with the ``J`` flag. - -* The :manual:`cmake(1)` ``-E tar`` command learned a new - ``--files-from=`` option to specify file names using - lines in a file to overcome command-line length limits. - -* The :manual:`cmake(1)` ``-E tar`` command learned a new - ``--mtime=`` option to specify the modification time - recorded in tarball entries. - -* The :manual:`Compile Features ` functionality - is now aware of features supported by more compilers, including: - - * Apple Clang (``AppleClang``) for Xcode versions 4.4 though 6.1. - * GNU compiler versions 4.4 through 5.0 on UNIX and Apple (``GNU``). - * Microsoft Visual Studio (``MSVC``) for versions 2010 through 2015. - * Oracle SolarisStudio (``SunPro``) version 12.4. - -* The :ref:`Qt AUTORCC` feature now tracks files listed in ``.qrc`` files - as dependencies. If an input file to the ``rcc`` tool is changed, the tool - is automatically re-run. - -New Diagnostics -=============== - -* The :command:`break` command now rejects calls outside of a loop - context or that pass arguments to the command. - See policy :policy:`CMP0055`. - -Deprecated and Removed Features -=============================== - -* Files written in the :manual:`cmake-language(7)`, such as - ``CMakeLists.txt`` or ``*.cmake`` files, are now expected to be - encoded as UTF-8. If files are already ASCII, they will be - compatible. If files were in a different encoding, including - Latin 1, they will need to be converted. - -* The implementation of CMake now relies on some C++ compiler features which - are not supported by some older compilers. As a result, those old compilers - can no longer be used to build CMake itself. CMake continues to be able to - generate Makefiles and project files for users of those old compilers - however. Compilers known to no longer be capable of building CMake are: - - * Visual Studio 6 and 7.0 -- superseded by VisualStudio 7.1 and newer. - * GCC 2.95 -- superseded by GCC 3 and newer compilers. - * Borland compilers -- superseded by other Windows compilers. - * Compaq compilers -- superseded by other compilers. - * SGI compilers -- IRIX was dropped as a host platform. - -Other Changes -============= - -* On Windows and OS X, commands supporting network communication - via ``https``, such as :command:`file(DOWNLOAD)`, - :command:`file(UPLOAD)`, and :command:`ctest_submit`, now support - SSL/TLS even when CMake is not built against OpenSSL. - The Windows or OS X native SSL/TLS implementation is used by default. - OS-configured certificate authorities will be trusted automatically. - - On other platforms, when CMake is built with OpenSSL, these - commands now search for OS-configured certificate authorities - in a few ``/etc`` paths to be trusted automatically. - -* On OS X with Makefile and Ninja generators, when a compiler is found - in ``/usr/bin`` it is now mapped to the corresponding compiler inside - the Xcode application folder, if any. This allows such build - trees to continue to work with their original compiler even when - ``xcode-select`` switches to a different Xcode installation. - -* The Visual Studio generators now write solution and project - files in UTF-8 instead of Windows-1252. Windows-1252 supported - Latin 1 languages such as those found in North and South America - and Western Europe. With UTF-8, additional languages are now - supported. - -* The :generator:`Xcode` generator no longer requires a value for - the :variable:`CMAKE_MAKE_PROGRAM` variable to be located up front. - It now locates ``xcodebuild`` when needed at build time. - -* When building CMake itself using SolarisStudio 12, the default ``libCStd`` - standard library is not sufficient to build CMake. The SolarisStudio - distribution supports compiler options to use ``STLPort4`` or ``libstdc++``. - An appropriate option to select the standard library is now added - automatically when building CMake with SolarisStudio compilers. diff --git a/Help/release/3.2.rst b/Help/release/3.2.rst new file mode 100644 index 0000000..ddc3d86 --- /dev/null +++ b/Help/release/3.2.rst @@ -0,0 +1,280 @@ +CMake 3.2 Release Notes +*********************** + +.. only:: html + + .. contents:: + +Changes made since CMake 3.1 include the following. + +New Features +============ + +Syntax +------ + +* CMake learned to support unicode characters + :ref:`encoded as UTF-8 ` + on Windows. This was already supported on platforms whose + system APIs accept UTF-8 encoded strings. + Unicode characters may now be used in CMake code, paths to + source files, configured files such as ``.h.in`` files, and + other files read and written by CMake. Note that because CMake + interoperates with many other tools, there may still be some + limitations when using certain unicode characters. + +Commands +-------- + +* The :command:`add_custom_command` and :command:`add_custom_target` + commands learned a new ``BYPRODUCTS`` option to specify files + produced as side effects of the custom commands. These are not + outputs because they do not always have to be newer than inputs. + +* The :command:`add_custom_command` and :command:`add_custom_target` + commands learned a new ``USES_TERMINAL`` option to request that + the command be given direct access to the terminal if possible. + The :generator:`Ninja` generator will places such commands in the + ``console`` :prop_gbl:`pool `. Build targets provided by CMake + that are meant for individual interactive use, such as ``install``, are now + placed in this pool. + +* A new :command:`continue` command was added that can be called inside loop + contexts to end the current iteration and start the next one at the top of + the loop block. + +* The :command:`file(LOCK)` subcommand was created to allow CMake + processes to synchronize through file and directory locks. + +* The :command:`file(STRINGS)` now supports UTF-16LE, UTF-16BE, + UTF-32LE, UTF-32BE as ``ENCODING`` options. + +* The :command:`install(EXPORT)` command now works with an absolute + ``DESTINATION`` even if targets in the export set are installed + with a destination or :ref:`usage requirements ` + specified relative to the install prefix. The value of the + :variable:`CMAKE_INSTALL_PREFIX` variable is hard-coded into the installed + export file as the base for relative references. + +* The :command:`try_compile` command source file signature now honors + link flags (e.g. :variable:`CMAKE_EXE_LINKER_FLAGS`) in the generated + test project. See policy :policy:`CMP0056`. + +* The :command:`try_run` command learned to honor the ``LINK_LIBRARIES`` + option just as :command:`try_compile` already does. + +* The :command:`file(GENERATE)` command now generates the output file with + the same permissions as the input file if set. + +* The :command:`file(GENERATE)` command can now generate files which are + used as source files for buildsystem targets. Generated files + automatically get their :prop_sf:`GENERATED` property set to ``TRUE``. + +Variables +--------- + +* The :variable:`CMAKE_MATCH_COUNT` variable was introduced to record the + number of matches made in the last regular expression matched in an + :command:`if` command or a :command:`string` command. + +Properties +---------- + +* An :prop_tgt:`ANDROID_API_MIN` target property was introduced to + specify the minimum version to be targeted by the toolchain. + +* A :prop_sf:`VS_SHADER_FLAGS` source file property was added to specify + additional shader flags to ``.hlsl`` files, for the Visual Studio + generators. + +Modules +------- + +* The :module:`ExternalData` module learned to support + :ref:`Custom Fetch Scripts `. + This allows projects to specify custom ``.cmake`` scripts for + fetching data objects during the build. + +* The :module:`ExternalProject` module learned options to create + independent external project step targets that do not depend + on the builtin steps. + +* The :module:`ExternalProject` module :command:`ExternalProject_Add` + command learned a new ``CMAKE_CACHE_DEFAULT_ARGS`` option to + initialize cache values in the external project without setting + them on future builds. + +* The :module:`ExternalProject` module :command:`ExternalProject_Add` + command learned a new ``TEST_EXCLUDE_FROM_MAIN`` option to exclude + tests from the main build. + +* The :module:`ExternalProject` module :command:`ExternalProject_Add` + command learned a new ``UPDATE_DISCONNECTED`` option to avoid + automatically updating the source tree checkout from version control. + +* The :module:`FindCUDA` module learned about the ``cusolver`` + library in CUDA 7.0. + +* The :module:`FindGit` module learned to find the ``git`` command-line tool + that comes with GitHub for Windows installed in user home directories. + +* A :module:`FindGSL` module was introduced to find the + GNU Scientific Library. + +* A :module:`FindIntl` module was introduced to find the + Gettext ``libintl`` library. + +* A :module:`FindJsonCpp` module was introduced to find the + JsonCpp package. + +* The :module:`FindLATEX` module learned to support components. + +* The :module:`FindMPI` module learned to find MS-MPI on Windows. + +* The :module:`FindOpenGL` module no longer explicitly searches + for any dependency on X11 libraries with the :module:`FindX11` + module. Such dependencies should not need to be explicit. + Applications using X11 APIs themselves should find and link + to X11 libraries explicitly. + +* The :module:`FindOpenSSL` module now reports ``crypto`` and ``ssl`` + libraries separately in ``OPENSSL_CRYPTO_LIBRARY`` and + ``OPENSSL_SSL_LIBRARY``, respectively, to allow applications to + link to one without the other. + +* The :module:`WriteCompilerDetectionHeader` module learned to + create a define for portability of the ``cxx_thread_local`` feature. + The define expands to either the C++11 ``thread_local`` keyword, or a + pre-standardization compiler-specific equivalent, as appropriate. + +* The :module:`WriteCompilerDetectionHeader` module learned to create + multiple output files per compiler and per language, instead of creating + one large file. + +CTest +----- + +* The :command:`ctest_coverage` command learned to support Delphi coverage. + +* The :command:`ctest_coverage` command learned to support Javascript coverage. + +* The :module:`CTestCoverageCollectGCOV` module was introduced as an + alternative to the :command:`ctest_coverage` command for collecting + ``gcov`` results for submission to CDash. + +CPack +----- + +* The :module:`CPackRPM` module learned options to set per-component + descriptions and summaries. See the + :variable:`CPACK_RPM__PACKAGE_DESCRIPTION` and + :variable:`CPACK_RPM__PACKAGE_SUMMARY` variables. + +* The :module:`CPackRPM` module learned options to specify + requirements for pre- and post-install scripts. See the + :variable:`CPACK_RPM_PACKAGE_REQUIRES_PRE` and + :variable:`CPACK_RPM_PACKAGE_REQUIRES_POST` variables. + +* The :module:`CPackRPM` module learned options to specify + requirements for pre- and post-uninstall scripts. See the + :variable:`CPACK_RPM_PACKAGE_REQUIRES_PREUN` and + :variable:`CPACK_RPM_PACKAGE_REQUIRES_POSTUN` variables. + +* The :module:`CPackRPM` module learned a new + :variable:`CPACK_RPM__PACKAGE_PREFIX` variable to + specify a component-specific value to use instead of + :variable:`CPACK_PACKAGING_INSTALL_PREFIX`. + +* The :module:`CPackRPM` module learned a new + :variable:`CPACK_RPM_RELOCATION_PATHS` variable to + specify multiple relocation prefixes for a single rpm package. + +Other +----- + +* The :manual:`cmake(1)` ``-E tar`` command now supports creating + ``.xz``-compressed archives with the ``J`` flag. + +* The :manual:`cmake(1)` ``-E tar`` command learned a new + ``--files-from=`` option to specify file names using + lines in a file to overcome command-line length limits. + +* The :manual:`cmake(1)` ``-E tar`` command learned a new + ``--mtime=`` option to specify the modification time + recorded in tarball entries. + +* The :manual:`Compile Features ` functionality + is now aware of features supported by more compilers, including: + + * Apple Clang (``AppleClang``) for Xcode versions 4.4 though 6.1. + * GNU compiler versions 4.4 through 5.0 on UNIX and Apple (``GNU``). + * Microsoft Visual Studio (``MSVC``) for versions 2010 through 2015. + * Oracle SolarisStudio (``SunPro``) version 12.4. + +* The :ref:`Qt AUTORCC` feature now tracks files listed in ``.qrc`` files + as dependencies. If an input file to the ``rcc`` tool is changed, the tool + is automatically re-run. + +New Diagnostics +=============== + +* The :command:`break` command now rejects calls outside of a loop + context or that pass arguments to the command. + See policy :policy:`CMP0055`. + +Deprecated and Removed Features +=============================== + +* Files written in the :manual:`cmake-language(7)`, such as + ``CMakeLists.txt`` or ``*.cmake`` files, are now expected to be + encoded as UTF-8. If files are already ASCII, they will be + compatible. If files were in a different encoding, including + Latin 1, they will need to be converted. + +* The implementation of CMake now relies on some C++ compiler features which + are not supported by some older compilers. As a result, those old compilers + can no longer be used to build CMake itself. CMake continues to be able to + generate Makefiles and project files for users of those old compilers + however. Compilers known to no longer be capable of building CMake are: + + * Visual Studio 6 and 7.0 -- superseded by VisualStudio 7.1 and newer. + * GCC 2.95 -- superseded by GCC 3 and newer compilers. + * Borland compilers -- superseded by other Windows compilers. + * Compaq compilers -- superseded by other compilers. + * SGI compilers -- IRIX was dropped as a host platform. + +Other Changes +============= + +* On Windows and OS X, commands supporting network communication + via ``https``, such as :command:`file(DOWNLOAD)`, + :command:`file(UPLOAD)`, and :command:`ctest_submit`, now support + SSL/TLS even when CMake is not built against OpenSSL. + The Windows or OS X native SSL/TLS implementation is used by default. + OS-configured certificate authorities will be trusted automatically. + + On other platforms, when CMake is built with OpenSSL, these + commands now search for OS-configured certificate authorities + in a few ``/etc`` paths to be trusted automatically. + +* On OS X with Makefile and Ninja generators, when a compiler is found + in ``/usr/bin`` it is now mapped to the corresponding compiler inside + the Xcode application folder, if any. This allows such build + trees to continue to work with their original compiler even when + ``xcode-select`` switches to a different Xcode installation. + +* The Visual Studio generators now write solution and project + files in UTF-8 instead of Windows-1252. Windows-1252 supported + Latin 1 languages such as those found in North and South America + and Western Europe. With UTF-8, additional languages are now + supported. + +* The :generator:`Xcode` generator no longer requires a value for + the :variable:`CMAKE_MAKE_PROGRAM` variable to be located up front. + It now locates ``xcodebuild`` when needed at build time. + +* When building CMake itself using SolarisStudio 12, the default ``libCStd`` + standard library is not sufficient to build CMake. The SolarisStudio + distribution supports compiler options to use ``STLPort4`` or ``libstdc++``. + An appropriate option to select the standard library is now added + automatically when building CMake with SolarisStudio compilers. diff --git a/Help/release/index.rst b/Help/release/index.rst index 990accf..45d0a69 100644 --- a/Help/release/index.rst +++ b/Help/release/index.rst @@ -13,6 +13,6 @@ Releases .. toctree:: :maxdepth: 1 - 3.2.0 <3.2.0> - 3.1.0 <3.1.0> - 3.0.0 <3.0.0> + 3.2 <3.2> + 3.1 <3.1> + 3.0 <3.0> -- cgit v0.12