Uploaded Test files
This commit is contained in:
parent
f584ad9d97
commit
2e81cb7d99
16627 changed files with 2065359 additions and 102444 deletions
|
@ -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 (`<http://sphinx-doc.org>`__) 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 <cmake-buildsystem(7)>`
|
||||
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 <cmake-generator-expressions(7)>`
|
||||
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_<LANG>_COMPILER_TARGET` was introduced
|
||||
for use when cross-compiling to specify the target platform in the
|
||||
:ref:`toolchain file <Cross Compiling Toolchain>` specified by the
|
||||
:variable:`CMAKE_TOOLCHAIN_FILE` variable.
|
||||
This is used to pass an option such as ``--target=<triple>`` to some
|
||||
cross-compiling compiler drivers.
|
||||
|
||||
* Variable :variable:`CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>` has been
|
||||
introduced to optionally initialize the
|
||||
:prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property
|
||||
learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* 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 <cmake-generator-expressions(7)>`.
|
||||
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 libraries 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 <cmake-packages(7)>`. 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 <cmake-qt(7)>` in the same buildsystem.
|
||||
|
||||
* The :module:`FindRuby` module learned to search for Ruby 2.0 and 2.1.
|
||||
|
||||
Generator Expressions
|
||||
---------------------
|
||||
|
||||
* New ``$<PLATFORM_ID>`` and ``$<PLATFORM_ID:...>``
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`
|
||||
have been added.
|
||||
|
||||
* The ``$<CONFIG>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>` now has
|
||||
a variant which takes no argument. This is equivalent to the
|
||||
``$<CONFIGURATION>`` expression.
|
||||
|
||||
* New ``$<UPPER_CASE:...>`` and ``$<LOWER_CASE:...>``
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`
|
||||
generator expressions have been added.
|
||||
|
||||
* A new ``$<MAKE_C_IDENTIFIER:...>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>` 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 <cmake-generator-expressions(7)>`
|
||||
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 <cmake-generator-expressions(7)>`
|
||||
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_<LANG>_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_<CONFIG>` directory properties and the
|
||||
:prop_tgt:`COMPILE_DEFINITIONS_<CONFIG>` 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 <cmake-generator-expressions(7)>` like
|
||||
``$<CONFIG:...>`` 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 ``$<TARGET_FILE>`` 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:`<LANG>_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_<LANG>_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_<LANG>_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 ``$<C_COMPILER_ID:...>`` and ``$<CXX_COMPILER_ID:...>``
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`
|
||||
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 <Include Directories and Usage Requirements>`.
|
|
@ -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 <cmake-generator-expressions(7)>`.
|
||||
|
||||
* 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 ``$<LINK_ONLY:...>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`.
|
||||
|
||||
* 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 <cmake-generator-expressions(7)>`
|
||||
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 <cmake-generator-expressions(7)>`. 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 <cmake-generator-expressions(7)>` 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 :cpack_gen:`CPack IFW Generator`.
|
||||
|
||||
* :manual:`cpack(1)` gained ``7Z`` and ``TXZ`` generators supporting
|
||||
lzma-compressed archives.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned a new
|
||||
:variable:`CPACK_DEBIAN_COMPRESSION_TYPE` variable to set the
|
||||
tarball compression type.
|
||||
|
||||
* The :cpack_gen:`CPack 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 <cmake-generator-expressions(7)>`
|
||||
containing a (``;`` separated) list within them. For example::
|
||||
|
||||
set(libs B C)
|
||||
target_link_libraries(A PUBLIC $<BUILD_INTERFACE:${libs}>)
|
||||
|
||||
This is equivalent to writing::
|
||||
|
||||
target_link_libraries(A PUBLIC $<BUILD_INTERFACE:B C>)
|
||||
|
||||
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 "$<BUILD_INTERFACE:${libs}>")
|
||||
|
||||
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_<LANG>_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_<LANG>_COMPILER_ID` is now ``OpenWatcom``,
|
||||
and the :variable:`CMAKE_<LANG>_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.
|
|
@ -0,0 +1,282 @@
|
|||
CMake 3.10 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.9 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* The `flang`_ Fortran compiler is now supported, with compiler id ``Flang``.
|
||||
|
||||
* A new minimal platform file for ``Midipix`` was added.
|
||||
|
||||
* Support for the MSVC ARM64 architecture was added.
|
||||
Visual Studio 2017 Update 4 and above offer an ARM64 toolchain.
|
||||
|
||||
* Support for the IAR ARM Compiler was improved.
|
||||
|
||||
.. _`flang`: https://github.com/flang-compiler/flang
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned
|
||||
to add compiler launcher tools like ccache along with the compiler for the
|
||||
``CUDA`` language (``C`` and ``CXX`` were supported previously). See the
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
|
||||
:prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.
|
||||
|
||||
* The :generator:`CodeBlocks` extra generator learned to optionally exclude
|
||||
files from outside the project root directory from the generated project.
|
||||
See the :variable:`CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES` variable.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`cmake_host_system_information` command learned more keys
|
||||
to get information about the processor capabilities and the host OS
|
||||
version.
|
||||
|
||||
* The :command:`configure_file` command learned to support indented
|
||||
``# cmakedefine`` and ``# cmakedefine01``. Spaces and/or tabs between
|
||||
the ``#`` character and the ``cmakedefine``/``cmakedefine01`` words
|
||||
are now understood and preserved in the output.
|
||||
|
||||
* The :command:`execute_process` command gained a ``RESULTS_VARIABLE``
|
||||
option to collect a list of results from all children in a pipeline
|
||||
of processes when multiple ``COMMAND`` arguments are given.
|
||||
|
||||
* The :command:`include_guard` command was introduced to allow guarding
|
||||
CMake scripts from being included more than once. The command supports
|
||||
``DIRECTORY`` and ``GLOBAL`` options to adjust the corresponding include guard
|
||||
scope. If no options given, include guard is similar to basic variable-based
|
||||
check.
|
||||
|
||||
* The :command:`string` command learned a new ``PREPEND`` subcommand.
|
||||
|
||||
* The :command:`string(TIMESTAMP)` command now supports ``%A``
|
||||
for full weekday name and ``%B`` for full month name.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_DIRECTORY_LABELS` variable was added to specify
|
||||
labels for all tests in a directory.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* A :prop_tgt:`<LANG>_CPPCHECK` target property and supporting
|
||||
:variable:`CMAKE_<LANG>_CPPCHECK` variable were introduced to tell
|
||||
the :ref:`Makefile Generators` and the :generator:`Ninja` generator to
|
||||
run ``cppcheck`` with the compiler for ``C`` and ``CXX`` languages.
|
||||
|
||||
* A :prop_dir:`LABELS` directory property was added to specify labels
|
||||
for all targets and tests in a directory.
|
||||
|
||||
* A :prop_dir:`TEST_INCLUDE_FILES` directory property was added to
|
||||
list any number of files to be included when running tests with
|
||||
:manual:`ctest(1)`. This generalizes the :prop_dir:`TEST_INCLUDE_FILE`
|
||||
property.
|
||||
|
||||
* The :prop_tgt:`VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>`
|
||||
target property was added to support custom XML tags for reference
|
||||
assemblies in C# targets.
|
||||
|
||||
* Source file properties :prop_sf:`VS_SHADER_OUTPUT_HEADER_FILE` and
|
||||
:prop_sf:`VS_SHADER_VARIABLE_NAME` have been added to specify more
|
||||
details of ``.hlsl`` sources with :ref:`Visual Studio Generators`.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`FindCurses` module gained a ``CURSES_NEED_WIDE`` option
|
||||
to request the wide-character variant.
|
||||
|
||||
* The :module:`FindEXPAT` module now provides imported targets.
|
||||
|
||||
* The :module:`FindFreetype` module now provides imported targets.
|
||||
|
||||
* :module:`FindMPI` gained a number of new features, including:
|
||||
|
||||
* Language-specific components have been added to the module.
|
||||
* Many more MPI environments are now supported.
|
||||
* The environmental support for Fortran has been improved.
|
||||
* A user now has fine-grained control over the MPI selection process,
|
||||
including passing custom parameters to the MPI compiler.
|
||||
* The version of the implemented MPI standard is now being exposed.
|
||||
* MPI-2 C++ bindings can now be detected and also suppressed if so desired.
|
||||
* The available Fortran bindings are now being detected and verified.
|
||||
* Various MPI-3 information can be requested, including the library version
|
||||
and Fortran capabilities of the individual bindings.
|
||||
* Statically linked MPI implementations are supported.
|
||||
|
||||
* A :module:`FindOpenACC` module was added to detect compiler support
|
||||
for OpenACC. Currently only supports PGI, GNU and Cray compilers.
|
||||
|
||||
* The :module:`FindOpenGL` module gained support for GLVND on Linux.
|
||||
|
||||
* The :module:`FindOpenMP` module gained support for
|
||||
language-specific components.
|
||||
|
||||
* A :module:`FindPatch` module was added to find the ``patch``
|
||||
command-line executable.
|
||||
|
||||
* The :module:`FindProtobuf` module :command:`protobuf_generate_cpp` command
|
||||
gained a ``DESCRIPTORS`` option to generate descriptor files.
|
||||
|
||||
* The :module:`GoogleTest` module gained a new command
|
||||
:command:`gtest_discover_tests` implementing dynamic (build-time) test
|
||||
discovery. Unlike the source parsing approach, dynamic discovery executes
|
||||
the test (in 'list available tests' mode) at build time to discover tests.
|
||||
This is robust against unusual ways of labeling tests, provides much better
|
||||
support for advanced features such as parameterized tests, and does not
|
||||
require re-running CMake to discover added or removed tests within a test
|
||||
executable. Note that a breaking change was made in CMake 3.10.3 to address
|
||||
an ambiguity of the ``TIMEOUT`` keyword (see :ref:`Release Notes 3.10.3`).
|
||||
|
||||
* The :module:`InstallRequiredSystemLibraries` module gained support
|
||||
for installing Intel compiler runtimes.
|
||||
|
||||
Autogen
|
||||
-------
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC` with a
|
||||
multi configuration generator (e.g. :generator:`Xcode`),
|
||||
included ``*.moc``, ``moc_*.cpp`` and ``ui_*.h`` files are generated in
|
||||
``<AUTOGEN_BUILD_DIR>/include_<CONFIG>`` instead of
|
||||
``<AUTOGEN_BUILD_DIR>/include``.
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`,
|
||||
source files that are :prop_sf:`GENERATED` will be processed as well.
|
||||
They were ignored by :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`
|
||||
in earlier releases.
|
||||
See policy :policy:`CMP0071`.
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC`, CMake searches for the strings ``Q_OBJECT``,
|
||||
``Q_GADGET`` or ``Q_NAMESPACE`` in a source file to determine if it needs
|
||||
to be ``moc`` processed. The new :variable:`CMAKE_AUTOMOC_MACRO_NAMES`
|
||||
variable and :prop_tgt:`AUTOMOC_MACRO_NAMES` target property may be set
|
||||
to register additional strings (macro names) to search for.
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC`, the new
|
||||
:variable:`CMAKE_AUTOMOC_COMPILER_PREDEFINES` variable and
|
||||
:prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` target property specify whether
|
||||
to enable or disable the generation of the compiler pre definitions file
|
||||
``moc_predefs.h``.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* A :variable:`CTEST_LABELS_FOR_SUBPROJECTS` CTest module variable and CTest
|
||||
script variable were added to specify a list of labels that should be
|
||||
treated as subprojects by CDash. To use this value in both the CTest module
|
||||
and the ctest command line :ref:`Dashboard Client` mode (e.g. ``ctest -S``)
|
||||
set it in the ``CTestConfig.cmake`` config file.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* A :cpack_gen:`CPack FreeBSD Generator` was added for FreeBSD ``pkg(8)``.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` was enabled on Windows. While not
|
||||
fully featured (due to the lack of external UNIX tools) this will allow
|
||||
building basic cross-platform Debian packages.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned to set package release
|
||||
version in ``Version`` info property.
|
||||
See the :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` variable.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned more strict package
|
||||
version checking that complies with Debian rules.
|
||||
|
||||
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
|
||||
:command:`cpack_ifw_configure_component_group` commands gained a new
|
||||
``REPLACES`` and ``CHECKABLE`` options.
|
||||
|
||||
* The :cpack_gen:`CPack IFW Generator` gained new
|
||||
:variable:`CPACK_IFW_PACKAGE_FILE_EXTENSION` variable to customize
|
||||
target binary format.
|
||||
|
||||
* The :cpack_gen:`CPack IFW Generator` gained new
|
||||
:variable:`CPACK_IFW_REPOSITORIES_DIRECTORIES` variable to specify
|
||||
additional repositories dirs that will be used to resolve and
|
||||
repack dependent components. This feature is only available when
|
||||
using QtIFW 3.1 or later.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` and :cpack_gen:`CPack DEB Generator`
|
||||
learned to set the package epoch version.
|
||||
See :variable:`CPACK_RPM_PACKAGE_EPOCH` and
|
||||
:variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* The :manual:`cmake(1)` ``-E`` mode gained support for ``sha1sum``,
|
||||
``sha224sum``, ``sha256sum``, ``sha384sum``, and ``sha512sum``.
|
||||
|
||||
* The graphviz output now distinguishes among the different dependency types
|
||||
``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` and represents them in the output
|
||||
graph as solid, dashed and dotted edges.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* Support for building CMake itself with C++98 compilers was dropped.
|
||||
CMake is now implemented using C++11.
|
||||
|
||||
* Support for building CMake on HP-UX has been dropped pending better
|
||||
support for C++11 and a port of libuv. See `CMake Issue 17137`_.
|
||||
Use CMake 3.9 or lower instead for HP-UX support.
|
||||
|
||||
.. _`CMake Issue 17137`: https://gitlab.kitware.com/cmake/cmake/-/issues/17137
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* On FreeBSD the C++ compiler named ``c++`` is now the preferred default.
|
||||
|
||||
* The :command:`file(GENERATE)` command now interprets relative paths
|
||||
given to its ``OUTPUT`` and ``INPUT`` arguments with respect to the
|
||||
caller's current binary and source directories, respectively.
|
||||
See policy :policy:`CMP0070`.
|
||||
|
||||
* The :command:`get_filename_component` ``PROGRAM`` mode semantics
|
||||
have been revised to not tolerate unquoted spaces in the path
|
||||
to the program while also accepting arguments. While technically
|
||||
incompatible with the old behavior, it is expected that behavior
|
||||
under typical use cases with properly-quoted command-lines has
|
||||
not changed.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.10.0 include the following.
|
||||
|
||||
3.10.1
|
||||
------
|
||||
|
||||
* The :manual:`cmake-server(7)` ``codemodel`` response ``crossReferences``
|
||||
field added by 3.10.0 has been dropped due to excessive memory usage.
|
||||
Another approach will be needed to provide backtrace information.
|
||||
|
||||
.. _`Release Notes 3.10.3`:
|
||||
|
||||
3.10.3
|
||||
------
|
||||
|
||||
* CMake 3.10.1 added a ``TIMEOUT`` option to :command:`gtest_discover_tests`
|
||||
from the :module:`GoogleTest` module. That keyword clashed with the
|
||||
``TIMEOUT`` test property, which is one of the common properties that
|
||||
would be set with the command's ``PROPERTIES`` keyword, usually leading
|
||||
to legal but unintended behavior. The keyword was changed to
|
||||
``DISCOVERY_TIMEOUT`` in CMake 3.10.3 to address this problem. The
|
||||
ambiguous behavior of the :command:`gtest_discover_tests` command's
|
||||
``TIMEOUT`` keyword in 3.10.1 and 3.10.2 has not been preserved.
|
|
@ -0,0 +1,307 @@
|
|||
CMake 3.11 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.10 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* TI C/C++ compilers are now supported by the :generator:`Ninja` generator.
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :generator:`CodeBlocks` extra generator learned to check a
|
||||
:variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom
|
||||
compiler identification value to place in the project file.
|
||||
|
||||
* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned
|
||||
to add compiler launcher tools along with the compiler for the ``Fortran``
|
||||
language (``C``, ``CXX``, and ``CUDA`` were supported previously).
|
||||
See the :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
|
||||
:prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.
|
||||
|
||||
* :ref:`Visual Studio Generators` learned to support the ``COMPILE_LANGUAGE``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>` in
|
||||
target-wide :prop_tgt:`COMPILE_DEFINITIONS`,
|
||||
:prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_OPTIONS`, and
|
||||
:command:`file(GENERATE)`. See generator expression documentation
|
||||
for caveats.
|
||||
|
||||
* The :generator:`Xcode` generator learned to support the ``COMPILE_LANGUAGE``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>` in
|
||||
target-wide :prop_tgt:`COMPILE_DEFINITIONS` and
|
||||
:prop_tgt:`INCLUDE_DIRECTORIES`. It previously supported only
|
||||
:prop_tgt:`COMPILE_OPTIONS` and :command:`file(GENERATE)`.
|
||||
See generator expression documentation for caveats.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* :command:`add_library` and :command:`add_executable` commands can now be
|
||||
called without any sources and will not complain as long as sources are
|
||||
added later via the :command:`target_sources` command.
|
||||
|
||||
* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands
|
||||
gained ``NETRC`` and ``NETRC_FILE`` options to specify use of a
|
||||
``.netrc`` file.
|
||||
|
||||
* The :command:`target_compile_definitions` command learned to set the
|
||||
:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property on
|
||||
:ref:`Imported Targets`.
|
||||
|
||||
* The :command:`target_compile_features` command learned to set the
|
||||
:prop_tgt:`INTERFACE_COMPILE_FEATURES` property on :ref:`Imported Targets`.
|
||||
|
||||
* The :command:`target_compile_options` command learned to set the
|
||||
:prop_tgt:`INTERFACE_COMPILE_OPTIONS` property on :ref:`Imported Targets`.
|
||||
|
||||
* The :command:`target_include_directories` command learned to set the
|
||||
:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` property on
|
||||
:ref:`Imported Targets`.
|
||||
|
||||
* The :command:`target_sources` command learned to set the
|
||||
:prop_tgt:`INTERFACE_SOURCES` property on :ref:`Imported Targets`.
|
||||
|
||||
* The :command:`target_link_libraries` command learned to set the
|
||||
:prop_tgt:`INTERFACE_LINK_LIBRARIES` property on :ref:`Imported Targets`.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_GENERATOR_INSTANCE` variable was introduced
|
||||
to hold the selected instance of the generator's corresponding
|
||||
native tools if multiple are available. This is used by the
|
||||
:generator:`Visual Studio 15 2017` generator to hold the
|
||||
selected instance of Visual Studio persistently.
|
||||
|
||||
* A :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added
|
||||
to enable setting of default permissions for directories created implicitly
|
||||
during installation of files by :command:`install` and
|
||||
:command:`file(INSTALL)`, e.g. during ``make install``.
|
||||
|
||||
* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for
|
||||
the :prop_gbl:`JOB_POOLS` property. This enables control over build
|
||||
parallelism with command line configuration parameters when using the Ninja
|
||||
generator.
|
||||
|
||||
* The :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables
|
||||
were added to specify use of a ``.netrc`` file by the
|
||||
:command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and
|
||||
the :module:`ExternalProject` module.
|
||||
|
||||
* A :variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable was added to
|
||||
initialize the :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property
|
||||
on targets when they are created.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_sf:`COMPILE_DEFINITIONS` source file property learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* A :prop_sf:`COMPILE_OPTIONS` source file property was added to manage list
|
||||
of options to pass to the compiler.
|
||||
|
||||
* An :prop_tgt:`IMPORTED_GLOBAL` target property was added to indicate
|
||||
whether an :ref:`IMPORTED target <Imported Targets>` is globally visible.
|
||||
It is automatically set to a true value for targets created with the
|
||||
``GLOBAL`` option to :command:`add_library` or :command:`add_executable`.
|
||||
Additionally, project code may now *promote* a local imported target
|
||||
to be globally visible by setting this property to ``TRUE``.
|
||||
|
||||
* An :prop_sf:`INCLUDE_DIRECTORIES` source file property was added to specify
|
||||
list of preprocessor include file search directories.
|
||||
|
||||
* Source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS` and
|
||||
:prop_sf:`VS_SHADER_ENABLE_DEBUG` have been added to specify more
|
||||
details of ``.hlsl`` sources with :ref:`Visual Studio Generators`.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES`
|
||||
command gained a ``LANGUAGE`` option to specify whether to check using the
|
||||
``C`` or ``CXX`` compiler.
|
||||
|
||||
* The :module:`CMakePackageConfigHelpers` module
|
||||
:command:`write_basic_package_version_file` command learned a new
|
||||
``SameMinorVersion`` mode for the ``COMPATIBILITY`` argument.
|
||||
|
||||
* The :module:`ExternalProject` module learned to substitute ``<DOWNLOAD_DIR>``
|
||||
in comments, commands, working directory and byproducts.
|
||||
|
||||
* The :module:`ExternalProject` module gained ``NETRC`` and ``NETRC_FILE``
|
||||
options to specify use of a ``.netrc`` file.
|
||||
|
||||
* A new :module:`FetchContent` module was added which supports populating
|
||||
content at configure time using any of the download/update methods
|
||||
supported by :command:`ExternalProject_Add`. This allows the content
|
||||
to be used immediately during the configure stage, such as with
|
||||
:command:`add_subdirectory`, etc. Hierarchical project structures are
|
||||
well supported, allowing parent projects to override the content details
|
||||
of child projects and ensuring content is not populated multiple times
|
||||
throughout the whole project tree.
|
||||
|
||||
* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support
|
||||
`FLAME`_ ``blis`` and ``libflame``.
|
||||
|
||||
* The :module:`FindDoxygen` module :command:`doxygen_add_docs` function
|
||||
now supports a new ``DOXYGEN_VERBATIM_VARS`` list variable. Any
|
||||
``DOXYGEN_...`` variable contained in that list will bypass the automatic
|
||||
quoting logic, leaving its contents untouched when transferring them to the
|
||||
output ``Doxyfile``.
|
||||
|
||||
* A :module:`FindIconv` module was added to locate iconv support.
|
||||
|
||||
* The :module:`GenerateExportHeader` module ``GENERATE_EXPORT_HEADER`` command
|
||||
gained an ``INCLUDE_GUARD_NAME`` option to change the name of the include
|
||||
guard symbol written to the generated export header.
|
||||
Additionally, it now adds a comment after the closing ``#endif`` on the
|
||||
generated export header's include guard.
|
||||
|
||||
* The :module:`UseJava` module ``add_jar`` command gained a
|
||||
``GENERATE_NATIVE_HEADERS`` option to generate native header files
|
||||
using ``javac -h`` for ``javac`` 1.8 or above. This supersedes
|
||||
``create_javah``, which no longer works with JDK 1.10 and above due
|
||||
to removal of the ``javah`` tool by `JEP 313`_.
|
||||
|
||||
.. _`FLAME`: https://github.com/flame
|
||||
.. _`JEP 313`: http://openjdk.java.net/jeps/313
|
||||
|
||||
Autogen
|
||||
-------
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, CMake now starts
|
||||
multiple parallel ``moc`` or ``uic`` processes to reduce the build time.
|
||||
A new :variable:`CMAKE_AUTOGEN_PARALLEL` variable and
|
||||
:prop_tgt:`AUTOGEN_PARALLEL` target property may be set to specify the
|
||||
number of parallel ``moc`` or ``uic`` processes to start. The default
|
||||
is derived from the number of CPUs on the host.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :command:`ctest_start` command no longer sets
|
||||
:variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is
|
||||
called from inside a function. Instead, it sets an internal variable in
|
||||
CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the
|
||||
global scope still prevents the script from being re-run at the end.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* :manual:`cpack(1)` gained ``--trace`` and ``--trace-expand`` options.
|
||||
|
||||
* The :cpack_gen:`CPack IFW Generator` gained new
|
||||
:variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control
|
||||
if the target directory should not be deleted when uninstalling.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to enable enforcing of execute
|
||||
privileges on programs and shared libraries.
|
||||
See :variable:`CPACK_RPM_INSTALL_WITH_EXEC` variable.
|
||||
|
||||
* A :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable was added
|
||||
which serves the same purpose during packaging (e.g. ``make package``) as the
|
||||
:variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable serves during
|
||||
installation (e.g. ``make install``).
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* :ref:`Alias Targets` may now alias :ref:`Imported Targets` that are
|
||||
created with the ``GLOBAL`` option to :command:`add_library`.
|
||||
|
||||
* :ref:`Interface Libraries` may now have custom properties set on them if
|
||||
they start with either an underscore (``_``) or a lowercase ASCII character.
|
||||
The original intention was to only allow properties which made sense for
|
||||
``INTERFACE`` libraries, but it also blocked usage of custom properties.
|
||||
|
||||
* The :manual:`cmake(1)` ``--open <dir>`` command-line option was added
|
||||
to open generated IDE projects like Visual Studio solutions or Xcode
|
||||
projects.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* An explicit deprecation diagnostic was added for policies ``CMP0037``
|
||||
through ``CMP0054`` (``CMP0036`` and below were already deprecated).
|
||||
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
|
||||
of all policies are deprecated and that projects should port to the
|
||||
NEW behaviors.
|
||||
|
||||
* The ``KDevelop3`` generator has been removed.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* Policy :policy:`CMP0037` no longer reserves target names associated
|
||||
with optional features, such as ``test`` and ``package``, unless
|
||||
the corresponding feature is enabled.
|
||||
|
||||
* The :module:`FindOpenGL` module now prefers GLVND libraries if available.
|
||||
See policy :policy:`CMP0072`.
|
||||
|
||||
* The minimum deployment target set in the
|
||||
:variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable used to be only
|
||||
applied for macOS regardless of the selected SDK. It is now properly
|
||||
set for the target platform selected by :variable:`CMAKE_OSX_SYSROOT`.
|
||||
For example, if the sysroot variable specifies an iOS SDK then the
|
||||
value in ``CMAKE_OSX_DEPLOYMENT_TARGET`` is interpreted as minimum
|
||||
iOS version.
|
||||
|
||||
* The :generator:`Xcode` generator behavior of generating one project
|
||||
file per :command:`project()` command may now be controlled with the
|
||||
:variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable.
|
||||
This could be useful to speed up the CMake generation step for
|
||||
large projects and to work-around a bug in the ``ZERO_CHECK`` logic.
|
||||
|
||||
* Since the ``CMakeCache.txt`` format does not support newlines in values,
|
||||
values containing newlines are now truncated before writing to the file.
|
||||
In addition, a warning comment is written to the cache file, and a warning
|
||||
message is displayed to the user on the console.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.11.0 include the following.
|
||||
|
||||
3.11.1
|
||||
------
|
||||
|
||||
* The :module:`CheckIncludeFile` module ``check_include_file`` macro,
|
||||
:module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro,
|
||||
and :module:`CheckIncludeFiles` module ``check_include_files`` macro
|
||||
were taught to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable in
|
||||
CMake 3.11.0. This has been reverted due to changing behavior of
|
||||
checks for existing projects. It may be restored in the future
|
||||
with a policy for compatibility.
|
||||
|
||||
3.11.2
|
||||
------
|
||||
|
||||
* Calling :command:`add_library` to create an alias of an imported
|
||||
target that is not globally visible now causes an error again as
|
||||
it did prior to 3.11.0. This diagnostic was accidentally dropped
|
||||
from CMake 3.11.0 and 3.11.1 by the change to allow globally visible
|
||||
imported targets to be aliased.
|
||||
|
||||
* The :module:`FindQt4` module ``qt4_wrap_cpp``, ``qt4_wrap_ui`` and
|
||||
``qt4_add_resources`` macros now set :prop_sf:`SKIP_AUTOMOC` and
|
||||
:prop_sf:`SKIP_AUTOUIC` on their generated files. These files never
|
||||
need to be processed by moc or uic, and we must say so explicitly to
|
||||
account for policy :policy:`CMP0071`.
|
||||
|
||||
3.11.3
|
||||
------
|
||||
|
||||
* CMake 3.11.0 introduced support for resolving symbolic links on
|
||||
Windows in code paths that typically do so on UNIX. This has been
|
||||
reverted due to breakage on ``subst`` drives.
|
|
@ -0,0 +1,305 @@
|
|||
CMake 3.12 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.11 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :ref:`Visual Studio Generators` for VS 2017 learned to support a
|
||||
``version=14.##`` option in the :variable:`CMAKE_GENERATOR_TOOLSET`
|
||||
value (e.g. via the :manual:`cmake(1)` ``-T`` option) to specify a
|
||||
toolset version number.
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* The :manual:`cmake(1)` :ref:`Build Tool Mode` (``cmake --build``) gained
|
||||
``--parallel [<jobs>]`` and ``-j [<jobs>]`` options to specify a parallel
|
||||
build level. They map to corresponding options of the native build tool.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_compile_definitions` command was added to set preprocessor
|
||||
definitions at directory level. This supersedes :command:`add_definitions`.
|
||||
|
||||
* The :command:`cmake_minimum_required` and :command:`cmake_policy(VERSION)`
|
||||
commands now accept a version range using the form ``<min>[...<max>]``.
|
||||
The ``<min>`` version is required but policies are set based on the
|
||||
older of the running CMake version and the version specified by
|
||||
``<max>``. This allows projects to specify a range of versions
|
||||
for which they have been updated and avoid explicit policy settings.
|
||||
|
||||
* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands
|
||||
learned a new flag ``CONFIGURE_DEPENDS`` which enables expression of
|
||||
build system dependency on globbed directory's contents.
|
||||
|
||||
* The :command:`file(TOUCH)` and :command:`file(TOUCH_NOCREATE)` commands
|
||||
were added to expose ``TOUCH`` functionality without having to use
|
||||
CMake's command-line tool mode with :command:`execute_process`.
|
||||
|
||||
* The :command:`find_package` command now searches prefixes specified by
|
||||
the :variable:`<PackageName>_ROOT` CMake variable and the
|
||||
:envvar:`<PackageName>_ROOT` environment variable. Package roots are
|
||||
maintained as a stack so nested calls to all ``find_*`` commands inside
|
||||
find modules also search the roots as prefixes.
|
||||
See policy :policy:`CMP0074`.
|
||||
|
||||
* The :command:`install` command learned an optional ``NAMELINK_COMPONENT``
|
||||
parameter, which allows you to change the component for a shared library's
|
||||
namelink. If none is specified, the value of ``COMPONENT`` is used by
|
||||
default.
|
||||
|
||||
* The :command:`list` command learned a ``JOIN`` sub-command
|
||||
to concatenate list's elements separated by a glue string.
|
||||
|
||||
* The :command:`list` command learned a ``SUBLIST`` sub-command
|
||||
to get a sublist of the list.
|
||||
|
||||
* The :command:`list` command learned a ``TRANSFORM`` sub-command
|
||||
to apply various string transformation to list's elements.
|
||||
|
||||
* The :command:`project` command learned an optional ``HOMEPAGE_URL``
|
||||
parameter which has the effect of setting variables like
|
||||
:variable:`PROJECT_HOMEPAGE_URL`, :variable:`<PROJECT-NAME>_HOMEPAGE_URL`
|
||||
and :variable:`CMAKE_PROJECT_HOMEPAGE_URL`.
|
||||
|
||||
* The :command:`string` command learned a ``JOIN`` sub-command
|
||||
to concatenate input strings separated by a glue string.
|
||||
|
||||
* :command:`target_compile_options` and :command:`add_compile_options`
|
||||
commands gained a ``SHELL:`` prefix to specify a group of related
|
||||
options using shell-like quoting.
|
||||
|
||||
* The :command:`target_link_libraries` command now supports
|
||||
:ref:`Object Libraries`. Linking to an object library uses its object
|
||||
files in direct dependents and also propagates usage requirements.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* The :variable:`CMAKE_FOLDER` variable was added to initialize the
|
||||
:prop_tgt:`FOLDER` property on all targets.
|
||||
|
||||
* The :variable:`CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION` variable
|
||||
was defined to initialize all
|
||||
:prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` target properties.
|
||||
|
||||
* ``CMAKE_PROJECT_VERSION*`` variables have been introduced:
|
||||
|
||||
- :variable:`CMAKE_PROJECT_VERSION`
|
||||
- :variable:`CMAKE_PROJECT_VERSION_MAJOR`
|
||||
- :variable:`CMAKE_PROJECT_VERSION_MINOR`
|
||||
- :variable:`CMAKE_PROJECT_VERSION_PATCH`
|
||||
- :variable:`CMAKE_PROJECT_VERSION_TWEAK`
|
||||
|
||||
* The :variable:`CMAKE_SUPPRESS_REGENERATION` variable was extended to
|
||||
support the :generator:`Ninja` and :ref:`Makefile Generators`.
|
||||
It is also now documented.
|
||||
|
||||
* ``CMAKE_VS_SDK_*_DIRECTORIES`` variables were defined to tell
|
||||
:ref:`Visual Studio Generators` for VS 2010 and above how to populate
|
||||
fields in ``.vcxproj`` files that specify SDK directories. The
|
||||
variables are:
|
||||
|
||||
- :variable:`CMAKE_VS_SDK_EXCLUDE_DIRECTORIES`
|
||||
- :variable:`CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES`
|
||||
- :variable:`CMAKE_VS_SDK_INCLUDE_DIRECTORIES`
|
||||
- :variable:`CMAKE_VS_SDK_LIBRARY_DIRECTORIES`
|
||||
- :variable:`CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES`
|
||||
- :variable:`CMAKE_VS_SDK_REFERENCE_DIRECTORIES`
|
||||
- :variable:`CMAKE_VS_SDK_SOURCE_DIRECTORIES`
|
||||
|
||||
* A :variable:`MSVC_TOOLSET_VERSION` variable was added to provide the
|
||||
MSVC toolset version associated with the current MSVC compiler version
|
||||
in :variable:`MSVC_VERSION`.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`COMMON_LANGUAGE_RUNTIME` target property was introduced
|
||||
to configure the use of managed C++ for :ref:`Visual Studio Generators`
|
||||
for VS 2010 and above.
|
||||
A corresponding :prop_tgt:`IMPORTED_COMMON_LANGUAGE_RUNTIME` target
|
||||
property was added to support ``C++/CLI`` for imported targets.
|
||||
|
||||
* The :prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` target property
|
||||
was introduced as replacement for
|
||||
:prop_tgt:`VS_DOTNET_TARGET_FRAMEWORK_VERSION`, which is considered
|
||||
deprecated now.
|
||||
|
||||
* An :prop_tgt:`EXPORT_PROPERTIES` target property was added to specify a
|
||||
custom list of target properties to include in targets exported by the
|
||||
:command:`install(EXPORT)` and :command:`export` commands.
|
||||
|
||||
* The :prop_tgt:`PDB_OUTPUT_DIRECTORY` property learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* A :prop_dir:`TESTS` directory property was added to hold the list of
|
||||
tests defined by the :command:`add_test` command.
|
||||
|
||||
* A :prop_tgt:`VS_DEBUGGER_COMMAND` target property was created to set the
|
||||
debugging command line with :ref:`Visual Studio Generators` for VS 2010
|
||||
and above.
|
||||
|
||||
* HLSL source file properties :prop_sf:`VS_SHADER_DISABLE_OPTIMIZATIONS`
|
||||
and :prop_sf:`VS_SHADER_ENABLE_DEBUG` gained support for generator
|
||||
expressions.
|
||||
|
||||
* HLSL source file property :prop_sf:`VS_SHADER_OBJECT_FILE_NAME` has been
|
||||
added to the :ref:`Visual Studio Generators` for VS 2010 and above.
|
||||
The property specifies the file name of the compiled shader object.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`FindALSA` module now provides imported targets.
|
||||
|
||||
* The :module:`FindCURL` module now provides imported targets.
|
||||
|
||||
* The :module:`FindJPEG` module now provides imported targets.
|
||||
|
||||
* The :module:`FindLibXml2` module now provides imported targets.
|
||||
|
||||
* The :module:`FindMatlab` module now supports the Matlab Runtime
|
||||
Compiler (MCR) for compiling and linking matlab extensions.
|
||||
|
||||
* A :module:`FindODBC` module was added to find an Open Database Connectivity
|
||||
(ODBC) library.
|
||||
|
||||
* The :module:`FindPkgConfig` module has learned to export the found
|
||||
libraries with full path for direct consumption with the
|
||||
:command:`target_link_libraries` command.
|
||||
|
||||
* New :module:`FindPython3` and :module:`FindPython2` modules, as well as
|
||||
a new :module:`FindPython` module, have been added to provide a new way
|
||||
to locate python environments.
|
||||
|
||||
* The :module:`UseSWIG` module gained a whole refresh and is now more
|
||||
consistent with standard CMake commands to generate libraries and is
|
||||
fully configurable through properties.
|
||||
|
||||
* The :module:`UseSWIG` module learned to manage multiple behaviors through
|
||||
``UseSWIG_MODULE_VERSION`` variable to ensure legacy support as well as more
|
||||
robust handling of ``SWIG`` advanced features (like ``%template``).
|
||||
|
||||
* The :module:`UseSWIG` module learned to support CSHARP variant
|
||||
wrapper files.
|
||||
|
||||
* The :module:`WriteCompilerDetectionHeader` module gained a ``BARE_FEATURES``
|
||||
option to add a compatibility define for the exact keyword of a new language
|
||||
feature.
|
||||
|
||||
Generator Expressions
|
||||
---------------------
|
||||
|
||||
* A new ``$<GENEX_EVAL:...>`` and ``$<TARGET_GENEX_EVAL:target,...>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
has been added to enable consumption of generator expressions whose
|
||||
evaluation results itself in generator expressions.
|
||||
|
||||
* A new ``$<IN_LIST:...>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
has been added.
|
||||
|
||||
* A new ``$<TARGET_EXISTS:...>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
has been added.
|
||||
|
||||
* A new ``$<TARGET_NAME_IF_EXISTS:...>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
has been added.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :command:`ctest_start` command has been reworked so that you can simply
|
||||
call ``ctest_start(APPEND)`` and it will read all the needed information from
|
||||
the TAG file. The argument parsing has also been relaxed so that the order of
|
||||
the arguments is less significant.
|
||||
|
||||
* A :prop_test:`PROCESSOR_AFFINITY` test property was added to request
|
||||
that CTest run a test with CPU affinity for a set of processors
|
||||
disjoint from other concurrently running tests with the property set.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :module:`CPack` module now uses variables
|
||||
:variable:`CMAKE_PROJECT_VERSION_MAJOR`,
|
||||
:variable:`CMAKE_PROJECT_VERSION_MINOR` and
|
||||
:variable:`CMAKE_PROJECT_VERSION_PATCH`
|
||||
to initialize corresponding CPack variables.
|
||||
|
||||
* A :cpack_gen:`CPack NuGet Generator` was was added with basic
|
||||
support for `NuGet`_.
|
||||
|
||||
.. _NuGet: https://docs.microsoft.com/en-us/nuget/what-is-nuget
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of C++ 20. No specific features are yet enumerated besides
|
||||
the ``cxx_std_20`` meta-feature.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of the availability of C features in MSVC since VS 2010.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of C language standards supported by Texas Instruments C
|
||||
compilers.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* The :generator:`Visual Studio 8 2005` generator has been removed.
|
||||
|
||||
* CMake no longer produces ``<tgt>_LIB_DEPENDS`` cache entries
|
||||
for library targets. See policy :policy:`CMP0073`.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* Include flags for directories marked as ``SYSTEM`` are now moved after
|
||||
non-system directories. The ``-isystem`` flag does this automatically,
|
||||
so moving them explicitly to the end makes the behavior consistent on
|
||||
compilers that do not have any ``-isystem`` flag.
|
||||
|
||||
* Fortran dependency scanning now supports dependencies implied by
|
||||
`Fortran Submodules`_.
|
||||
|
||||
* The existence and functionality of the file
|
||||
``${CMAKE_BINARY_DIR}/cmake_install.cmake`` has now been documented in the
|
||||
:command:`install` documentation so that external packaging software can take
|
||||
advantage of CPack-style component installs.
|
||||
|
||||
* The :module:`CheckIncludeFile` module ``check_include_file`` macro
|
||||
learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable.
|
||||
See policy :policy:`CMP0075`.
|
||||
|
||||
* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro
|
||||
learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable.
|
||||
See policy :policy:`CMP0075`.
|
||||
|
||||
* The :module:`CheckIncludeFiles` module ``check_include_files`` macro
|
||||
learned to honor the ``CMAKE_REQUIRED_LIBRARIES`` variable.
|
||||
See policy :policy:`CMP0075`.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E copy_directory`` tool now fails when the
|
||||
source directory does not exist. Previously it succeeded by creating
|
||||
an empty destination directory.
|
||||
|
||||
* The :module:`UseSWIG` module :command:`swig_add_library` command
|
||||
(and legacy ``swig_add_module`` command) now set the prefix of
|
||||
Java modules to ``""`` for MINGW, MSYS, and CYGWIN environments.
|
||||
|
||||
.. _`Fortran Submodules`: http://fortranwiki.org/fortran/show/Submodules
|
|
@ -0,0 +1,289 @@
|
|||
CMake 3.13 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.12 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :ref:`Visual Studio Generators` for VS 2010 and above learned to
|
||||
support the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property
|
||||
and supporting :module:`CheckIPOSupported` module.
|
||||
|
||||
* The :generator:`Xcode` generator learned to configure more Xcode Scheme
|
||||
fields. See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable.
|
||||
|
||||
* The :generator:`Green Hills MULTI` generator has been updated:
|
||||
|
||||
- Added support for architecture selection through
|
||||
:variable:`CMAKE_GENERATOR_PLATFORM`:
|
||||
e.g. ``arm``, ``ppc``, and ``86``.
|
||||
|
||||
- Added support for toolset selection through
|
||||
:variable:`CMAKE_GENERATOR_TOOLSET`,
|
||||
e.g. ``comp_201205``, ``comp_201510``, ``comp_201722_beta``.
|
||||
|
||||
- Added support for platform selection through ``GHS_TARGET_PLATFORM``,
|
||||
e.g. ``integrity``, ``linux``, ``standalone``, etc.
|
||||
|
||||
- No longer checks that ``arm`` based compilers are installed but ensures
|
||||
that the correct ``gbuild.exe`` exists.
|
||||
|
||||
- No longer hard-codes ARM files, BSP, toolset, or OS locations.
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* The :manual:`cmake(1)` command gained the ``-S <source_dir>``
|
||||
command line option to specify the location of the source directory.
|
||||
This option can be used independently of ``-B``.
|
||||
|
||||
* The :manual:`cmake(1)` command gained the ``-B <build_dir>``
|
||||
command line option to specify the location of the build directory.
|
||||
This option can be used independently of ``-S``.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E create_symlink`` command can now be used
|
||||
on Windows.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_custom_command` and :command:`add_custom_target` commands
|
||||
learned to support generator expressions in ``WORKING_DIRECTORY`` options.
|
||||
|
||||
* The :command:`add_link_options` command was created to add link
|
||||
options in the current directory.
|
||||
|
||||
* The :command:`install(TARGETS)` command learned to install targets
|
||||
created outside the current directory.
|
||||
|
||||
* The :command:`link_directories` command gained options to control
|
||||
insertion position.
|
||||
|
||||
* The :command:`list(SORT)` command gained options to control the
|
||||
comparison operation used to order the entries.
|
||||
|
||||
* The :command:`math` command gained options for hexadecimal.
|
||||
|
||||
* The :command:`target_link_directories` command was created to
|
||||
specify link directories for targets and their dependents.
|
||||
|
||||
* The :command:`target_link_options` command was created to
|
||||
specify link options for targets and their dependents.
|
||||
|
||||
* The :command:`target_link_libraries` command may now be called
|
||||
to modify targets created outside the current directory.
|
||||
See policy :policy:`CMP0079`.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_AUTOGEN_VERBOSE` variable was added to optionally
|
||||
increase the verbosity of :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC`
|
||||
and :prop_tgt:`AUTORCC` from within CMake project code.
|
||||
|
||||
* A :variable:`CMAKE_VS_GLOBALS` variable was added to initialize
|
||||
:prop_tgt:`VS_GLOBAL_<variable>` target properties on targets as
|
||||
they are created.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`DEPLOYMENT_ADDITIONAL_FILES` target property was
|
||||
added to tell the :generator:`Visual Studio 9 2008` generator
|
||||
to specify additional files for deployment to WinCE devices
|
||||
for remote debugging.
|
||||
|
||||
* The :prop_tgt:`INTERFACE_LINK_DEPENDS` target property was created
|
||||
to specify transitive link dependencies on files.
|
||||
|
||||
* The :prop_tgt:`LINK_DEPENDS` target property learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* :prop_tgt:`LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DIRECTORIES`
|
||||
target properties were added to collect link directories for a target
|
||||
and its dependents. Use the :command:`target_link_directories` command
|
||||
to set them.
|
||||
|
||||
* :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target
|
||||
properties were added to collect link options for a target and its
|
||||
dependents. Use the :command:`target_link_options` command to set them.
|
||||
|
||||
* A :prop_dir:`LINK_OPTIONS` directory property was added to collect
|
||||
link options for targets created under the current directory.
|
||||
Use the :command:`add_link_options` command to set it.
|
||||
|
||||
* A :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property was created
|
||||
to specify archiver options to use when creating static libraries.
|
||||
|
||||
* A :prop_tgt:`VS_DEBUGGER_COMMAND_ARGUMENTS` target property was created to
|
||||
set the debugging command line arguments with
|
||||
:ref:`Visual Studio Generators` for VS 2010 and above.
|
||||
|
||||
* A :prop_tgt:`VS_DEBUGGER_ENVIRONMENT` target property was created to
|
||||
set the debugging environment with
|
||||
:ref:`Visual Studio Generators` for VS 2010 and above.
|
||||
|
||||
* The :prop_tgt:`VS_DEBUGGER_COMMAND` and
|
||||
:prop_tgt:`VS_DEBUGGER_WORKING_DIRECTORY` target properties
|
||||
now support generator expressions.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`FindBoost` module gained a ``Boost_ARCHITECTURE`` option
|
||||
to specify a Boost architecture-specific library filename fragment.
|
||||
|
||||
* The :module:`FindCURL` module learned to find debug and release variants
|
||||
separately.
|
||||
|
||||
* The :module:`FindMatlab` module gained new components ``ENGINE_LIBRARY`` and
|
||||
``DATAARRAY_LIBRARY`` to request finding the Matlab C++ Engine and DataArray
|
||||
libraries respectively.
|
||||
|
||||
* The :module:`FindMatlab` module now explicitly exports mexFunction in Visual
|
||||
Studio.
|
||||
|
||||
* The :module:`FindMatlab` module gained a new ``MCC_COMPILER``
|
||||
component to request finding the Matlab Compiler add-on.
|
||||
|
||||
* The :module:`FindPkgConfig` module gained an option to create imported
|
||||
targets in global scope.
|
||||
|
||||
* The :module:`FindPkgConfig` module gained support for ``<`` and ``>``
|
||||
operators for version checks in addition to the already supported
|
||||
operators ``>=``, ``<=``, and ``=``.
|
||||
|
||||
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
|
||||
gain capability to control order of resource lookup on macOS (Framework) and
|
||||
Windows (Registry).
|
||||
|
||||
* The :module:`FindSubversion` module ``Subversion_WC_INFO`` command
|
||||
gained an ``IGNORE_SVN_FAILURE`` option to suppress failures,
|
||||
e.g. when the source tree is not under Subversion control.
|
||||
|
||||
* The :module:`UseSWIG` module learned to manage target property
|
||||
:prop_tgt:`INCLUDE_DIRECTORIES` for ``SWIG`` compilation.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* :manual:`ctest(1)` gained a ``--progress`` option to enable a live
|
||||
test progress summary when output goes to a terminal.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned to split debug symbols into
|
||||
a corresponding .ddeb package when ``CPACK_DEBIAN_DEBUGINFO_PACKAGE`` is
|
||||
set.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned to honor the ``SOURCE_DATE_EPOCH``
|
||||
environment variable when packaging files. This is useful for generating
|
||||
reproducible packages.
|
||||
|
||||
* CPack gained a new :cpack_gen:`CPack External Generator` which is used to
|
||||
export the CPack metadata in a format that other software can understand. The
|
||||
intention of this generator is to allow external packaging software to take
|
||||
advantage of CPack's features when it may not be possible to use CPack for
|
||||
the entire packaging process.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* An explicit deprecation diagnostic was added for policies ``CMP0055``
|
||||
through ``CMP0063`` (``CMP0054`` and below were already deprecated).
|
||||
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
|
||||
of all policies are deprecated and that projects should port to the
|
||||
NEW behaviors.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The precompiled binaries provided on ``cmake.org`` now include
|
||||
qthelp-format documentation.
|
||||
|
||||
* The :command:`option` command now honors an existing normal variable
|
||||
of the same name and does nothing instead of possibly creating a cache
|
||||
entry (or setting its type) and removing the normal variable.
|
||||
See policy :policy:`CMP0077`.
|
||||
|
||||
* The :ref:`Makefile Generators` learned to remove custom command and
|
||||
custom target byproducts during ``make clean``.
|
||||
|
||||
* The :command:`target_sources` command now interprets relative source file
|
||||
paths as relative to the current source directory. This simplifies
|
||||
incrementally building up a target's sources from subdirectories. The
|
||||
:policy:`CMP0076` policy was added to provide backward compatibility with
|
||||
the old behavior where required.
|
||||
|
||||
* The :module:`BundleUtilities` module may no longer be included at configure
|
||||
time. This was always a bug anyway. See policy :policy:`CMP0080`.
|
||||
|
||||
* The :module:`UseSWIG` module has changed strategy for target naming.
|
||||
See policy :policy:`CMP0078`.
|
||||
|
||||
* The :prop_tgt:`LINK_DIRECTORIES` target property now expects absolute paths.
|
||||
See policy :policy:`CMP0081`.
|
||||
|
||||
* The CPack generators have been moved into their own separate section
|
||||
in the documentation, rather than having the documentation in their
|
||||
internal implementation modules.
|
||||
These internal implementation modules are also no longer available
|
||||
to scripts that may have been incorrectly including them, because
|
||||
they should never have been available in the first place.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.13.0 include the following.
|
||||
|
||||
3.13.2
|
||||
------
|
||||
|
||||
* CMake 3.13.0 included a change to pass compiler implicit include
|
||||
directories to the ``moc`` tool for :prop_tgt:`AUTOMOC`. This has
|
||||
been reverted due to regressing existing builds and will need
|
||||
further investigation before being re-introduced in a later release.
|
||||
|
||||
3.13.3
|
||||
------
|
||||
|
||||
* The :generator:`Visual Studio 15 2017` generator has been fixed to work
|
||||
when VS 2019 is installed.
|
||||
|
||||
* CMake now checks that at least one of the source or binary directory
|
||||
is specified when running CMake and issues an error if both are missing.
|
||||
This has always been a documented requirement, but the implementation
|
||||
previously accidentally accepted cases in which neither are specified
|
||||
so long as some other argument is given, and silently used the current
|
||||
working directory as the source and build tree.
|
||||
|
||||
3.13.4
|
||||
------
|
||||
|
||||
* The error added by 3.13.3 in cases that neither a source or binary
|
||||
directory is specified has been downgraded to a warning. While this
|
||||
was never intended, documented, nor supported behavior, some projects
|
||||
relied on it. The error has been downgraded to a warning for the
|
||||
remainder of the 3.13.x release series to allow a transition period,
|
||||
but it may become a fatal error again in a later release. Scripts
|
||||
relying on the old behavior can be trivially fixed by specifying
|
||||
the path to the source tree (even if just ``.``) explicitly and
|
||||
continue to work with all versions of CMake.
|
||||
|
||||
3.13.5
|
||||
------
|
||||
|
||||
* In CMake 3.13.0 through 3.13.4, calling :command:`target_link_libraries`
|
||||
to add ``PRIVATE`` dependencies to a static library created in another
|
||||
directory (under policy :policy:`CMP0079` ``NEW`` behavior) would
|
||||
incorrectly propagate usage requirements of those dependencies to
|
||||
dependents that link the static library. This has been fixed.
|
|
@ -0,0 +1,438 @@
|
|||
CMake 3.14 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.13 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :generator:`Visual Studio 16 2019` generator was added. This is
|
||||
experimental and based on "Visual Studio 2019 Preview 4" because this
|
||||
version of VS has not been released.
|
||||
|
||||
The VS 2019 generator differs from generators for earlier versions
|
||||
in that it does not provide variants that specify the target platform
|
||||
in the generator name. Instead :variable:`CMAKE_GENERATOR_PLATFORM`
|
||||
must be used, e.g. through the ``-A`` command-line option. Furthermore,
|
||||
the default target platform (architecture) is now based on the *host*
|
||||
platform. The VS host toolset selection is now based on the host
|
||||
architecture as well.
|
||||
|
||||
* The :generator:`Green Hills MULTI` generator has been updated:
|
||||
|
||||
* Now supports :ref:`Object Libraries`.
|
||||
|
||||
* Now warns on unsupported project types such as shared libraries.
|
||||
|
||||
* Now generates a top-level ``<PROJECT-NAME>.top.gpj`` for each directory
|
||||
calling the :command:`project` command. The top-level project file
|
||||
``default.gpj`` is no longer created.
|
||||
|
||||
* Now honors target renaming and destination output control properties
|
||||
such as :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` and :prop_tgt:`OUTPUT_NAME`.
|
||||
This also fixes support for installation rules generated by
|
||||
:command:`install`.
|
||||
|
||||
* Now honors source file properties :prop_sf:`INCLUDE_DIRECTORIES`,
|
||||
:prop_sf:`COMPILE_DEFINITIONS`, and :prop_sf:`COMPILE_OPTIONS`.
|
||||
|
||||
* Now supports Dynamic Download Integrity Applications which did not include
|
||||
Integrate Files via :prop_tgt:`GHS_INTEGRITY_APP` and setting a target
|
||||
link flag of ``-dynamic``.
|
||||
|
||||
* The contents of project files now sorts sources groups and files by name.
|
||||
Set the :prop_tgt:`GHS_NO_SOURCE_GROUP_FILE` target property to ``ON`` to
|
||||
generate a single project file for the target instead of a project file for
|
||||
each source group. Set the :variable:`CMAKE_GHS_NO_SOURCE_GROUP_FILE`
|
||||
variable to enable this for all targets.
|
||||
|
||||
File-Based API
|
||||
--------------
|
||||
|
||||
* A file-based api for clients to get semantic buildsystem information
|
||||
has been added. See the :manual:`cmake-file-api(7)` manual.
|
||||
This is intended to replace the :manual:`cmake-server(7)` mode for IDEs.
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* CMake now supports :ref:`Cross Compiling for iOS, tvOS, or watchOS`
|
||||
using simple toolchain files.
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* The :manual:`cmake(1)` :ref:`Build Tool Mode <Build Tool Mode>`
|
||||
(``cmake --build``) gained ``--verbose`` and ``-v`` options to
|
||||
specify verbose build output. Some generators such as Xcode don't
|
||||
support this option currently.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E compare_files`` command learned a new
|
||||
``--ignore-eol`` option to specify that end-of-line differences
|
||||
(e.g. LF vs CRLF) should be ignored when comparing files.
|
||||
|
||||
* The :manual:`cmake-gui(1)` dialog gained new ``-S`` and ``-B`` arguments to
|
||||
explicitly specify source and build directories.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`file` command learned a new sub-command, ``CREATE_LINK``,
|
||||
which can be used to create hard or symbolic links.
|
||||
|
||||
* The :command:`file` command learned a new sub-command, ``READ_SYMLINK``,
|
||||
which can be used to determine the path that a symlink points to.
|
||||
|
||||
* The :command:`file` command gained a ``SIZE`` mode to get the size
|
||||
of a file on disk.
|
||||
|
||||
* The :command:`find_package` command learned to optionally resolve
|
||||
symbolic links in the paths to package configuration files.
|
||||
See the :variable:`CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS` variable.
|
||||
|
||||
* The :command:`get_filename_component` command gained new
|
||||
``LAST_EXT`` and ``NAME_WLE`` variants to work with the
|
||||
extension after the last ``.`` in the name.
|
||||
|
||||
* The :command:`if` command gained support for checking if cache variables
|
||||
are defined with the ``DEFINED CACHE{VAR}`` syntax.
|
||||
|
||||
* The :command:`install(CODE)` and :command:`install(SCRIPT)` commands
|
||||
learned to support generator expressions. See policy :policy:`CMP0087`.
|
||||
|
||||
* The :command:`install(TARGETS)` command learned how to install to an
|
||||
appropriate default directory for a given target type, based on
|
||||
variables from the :module:`GNUInstallDirs` module and built-in defaults,
|
||||
in lieu of a ``DESTINATION`` argument.
|
||||
|
||||
* The :command:`install(FILES)` and :command:`install(DIRECTORY)` commands
|
||||
learned a new set of parameters for installing files as a file type,
|
||||
setting the destination based on the appropriate variables from
|
||||
:module:`GNUInstallDirs` and built-in defaults, in lieu of a
|
||||
``DESTINATION`` argument.
|
||||
|
||||
* The :command:`list` operations ``REMOVE_ITEM``, ``REMOVE_DUPLICATES``,
|
||||
``SORT``, ``REVERSE``, and ``FILTER`` all now accept a non-existent variable
|
||||
as the list since these operations on empty lists is also the empty list.
|
||||
|
||||
* The :command:`list` operation ``REMOVE_AT`` now indicates that the given
|
||||
indices are invalid for a non-existent variable or empty list.
|
||||
|
||||
* The :command:`try_compile` and :command:`try_run` commands gained a new
|
||||
``LINK_OPTIONS`` option.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_BUILD_RPATH_USE_ORIGIN` variable and corresponding
|
||||
:prop_tgt:`BUILD_RPATH_USE_ORIGIN` target property were added to
|
||||
enable use of relative runtime paths (RPATHs). This helps achieving
|
||||
relocatable and reproducible builds that are invariant of the build
|
||||
directory.
|
||||
|
||||
* A :variable:`CMAKE_VS_PLATFORM_NAME_DEFAULT` variable was added for
|
||||
:ref:`Visual Studio Generators` to report their default platform used
|
||||
when :variable:`CMAKE_GENERATOR_PLATFORM` is not set explicitly.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* A :prop_gbl:`CMAKE_ROLE` global property was added to allow scripts to
|
||||
determine whether they're running in project mode, script mode,
|
||||
find-package mode, CTest, or CPack.
|
||||
|
||||
* The :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property is now supported
|
||||
on shared library, module library, and executable targets. Previously it was
|
||||
only honored on static libraries.
|
||||
|
||||
* The :prop_tgt:`EXCLUDE_FROM_ALL` target property was created to override
|
||||
the setting of its directory. A target will now be built as part of "all"
|
||||
if its :prop_tgt:`EXCLUDE_FROM_ALL` property is set to ``OFF``, even if its
|
||||
containing directory is marked as :prop_dir:`EXCLUDE_FROM_ALL`.
|
||||
|
||||
* :prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE` target property gains the
|
||||
support of :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The family of modules to check capabilities (like
|
||||
:module:`CheckCSourceCompiles`) gain capability to manage ``LINK_OPTIONS``.
|
||||
|
||||
* A :module:`CheckFortranSourceRuns` module was added to provide a
|
||||
:command:`check_fortran_source_runs` command to check if a Fortran
|
||||
source snippet compiles and runs.
|
||||
|
||||
* The :module:`CMakePackageConfigHelpers` module's
|
||||
:command:`write_basic_package_version_file` command gained a new
|
||||
``ARCH_INDEPENDENT`` option for supporting architecture-independent
|
||||
packages.
|
||||
|
||||
* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
|
||||
gained ``LOG_DIR`` and ``LOG_MERGED_STDOUTERR`` options to control logging.
|
||||
|
||||
* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
|
||||
gained ``LOG_PATCH`` to optionally log the patch step.
|
||||
|
||||
* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
|
||||
learned to apply ``SOURCE_SUBDIR`` when ``BUILD_IN_SOURCE`` is also used.
|
||||
The ``BUILD_COMMAND`` is run in the given ``SOURCE_SUBDIR`` of the
|
||||
``SOURCE_DIR``.
|
||||
|
||||
* The :module:`FetchContent` module gained a new
|
||||
:command:`FetchContent_MakeAvailable` command. It accepts a list of
|
||||
dependency names, which it then iterates over, populating and adding
|
||||
each one to the main build using the canonical pattern. This
|
||||
significantly reduces the amount of boilerplate needed in a project.
|
||||
|
||||
* The :module:`FindBISON` module's ``BISON_TARGET`` command now runs ``bison``
|
||||
with :variable:`CMAKE_CURRENT_BINARY_DIR` as the working directory.
|
||||
See policy :policy:`CMP0088`.
|
||||
|
||||
* The :module:`FindCURL` module gained support for requesting
|
||||
protocols as package components.
|
||||
|
||||
* The :module:`FindFontconfig` module was added to find `fontconfig`_.
|
||||
|
||||
* The :module:`FindGDAL` module now provides imported targets.
|
||||
|
||||
* The :module:`FindGIF` module now provides imported targets.
|
||||
|
||||
* The :module:`FindGit` module now provides an imported target for the
|
||||
Git executable.
|
||||
|
||||
* The :module:`FindIce` module learned to find ``slice2confluence``
|
||||
and ``slice2matlab``.
|
||||
|
||||
* The :module:`FindLibinput` module was added to find `libinput`_.
|
||||
|
||||
* The :module:`FindLibLZMA` module now provides imported targets.
|
||||
|
||||
* The :module:`FindMatlab` module gained new options ``R2017b`` and
|
||||
``R2018a`` to specify the MEX API version to use; these options
|
||||
mirror the new options to the ``mex`` command in MATLAB R2018a.
|
||||
The option ``MX_LIBRARY`` is no longer needed.
|
||||
|
||||
* The :module:`FindPostgreSQL` module now provides imported targets.
|
||||
|
||||
* The :module:`FindPython`, :module:`FindPython2`, and :module:`FindPython3`
|
||||
modules gained support for ``NumPy`` component.
|
||||
|
||||
* The :module:`FindPython2`, :module:`FindPython3`, and :module:`FindPython`
|
||||
modules now support running in script mode by skipping the creation of
|
||||
imported targets and helper functions.
|
||||
|
||||
* The :module:`FindSQLite3` module was added to find the SQLite v3.x library.
|
||||
|
||||
* The :module:`FindX11` had the following variables renamed in order to match
|
||||
their library names rather than header names. The old variables are provided
|
||||
for compatibility:
|
||||
|
||||
- ``X11_Xxf86misc_INCLUDE_PATH`` instead of ``X11_xf86misc_INCLUDE_PATH``
|
||||
- ``X11_Xxf86misc_LIB`` instead of ``X11_xf86misc_LIB``
|
||||
- ``X11_Xxf86misc_FOUND`` instead of ``X11_xf86misc_FOUND``
|
||||
- ``X11_Xxf86vm_INCLUDE_PATH`` instead of ``X11_xf86vmode_INCLUDE_PATH``
|
||||
- ``X11_Xxf86vm_LIB`` instead of ``X11_xf86vmode_LIB``
|
||||
- ``X11_Xxf86vm_FOUND`` instead of ``X11_xf86vmode_FOUND``
|
||||
- ``X11_xkbfile_INCLUDE_PATH`` instead of ``X11_Xkbfile_INCLUDE_PATH``
|
||||
- ``X11_xkbfile_LIB`` instead of ``X11_Xkbfile_LIB``
|
||||
- ``X11_xkbfile_FOUND`` instead of ``X11_Xkbfile_FOUND``
|
||||
- ``X11_Xtst_INCLUDE_PATH`` instead of ``X11_XTest_INCLUDE_PATH``
|
||||
- ``X11_Xtst_LIB`` instead of ``X11_XTest_LIB``
|
||||
- ``X11_Xtst_FOUND`` instead of ``X11_XTest_FOUND``
|
||||
- ``X11_Xss_INCLUDE_PATH`` instead of ``X11_Xscreensaver_INCLUDE_PATH``
|
||||
- ``X11_Xss_LIB`` instead of ``X11_Xscreensaver_LIB``
|
||||
- ``X11_Xss_FOUND`` instead of ``X11_Xscreensaver_FOUND``
|
||||
|
||||
The following variables are deprecated completely since they were
|
||||
essentially duplicates:
|
||||
|
||||
- ``X11_Xinput_INCLUDE_PATH`` (use ``X11_Xi_INCLUDE_PATH``)
|
||||
- ``X11_Xinput_LIB`` (use ``X11_Xi_LIB``)
|
||||
- ``X11_Xinput_FOUND`` (use ``X11_Xi_FOUND``)
|
||||
|
||||
* The :module:`FindX11` now provides ``X11_Xext_INCLUDE_PATH``.
|
||||
|
||||
* The :module:`FindX11` now provides imported targets.
|
||||
|
||||
* The :module:`UseSWIG` module learned to pass ``-module <module_name>`` to
|
||||
the ``SWIG`` compiler if the file property ``SWIG_MODULE_NAME`` is defined.
|
||||
See policy :policy:`CMP0086`.
|
||||
|
||||
* The :module:`UseSWIG` module gained an option to specify
|
||||
``SWIG`` source file extensions.
|
||||
|
||||
.. _`fontconfig`: https://www.freedesktop.org/wiki/Software/fontconfig/
|
||||
.. _`libinput`: https://www.freedesktop.org/wiki/Software/libinput/
|
||||
|
||||
Generator Expressions
|
||||
---------------------
|
||||
|
||||
* The ``$<Fortran_COMPILER_ID:...>`` and ``$<Fortran_COMPILER_VERSION:...>``
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>` were added.
|
||||
|
||||
* The ``$<IN_LIST:...>`` generator expression now correctly handles an
|
||||
empty argument. See :policy:`CMP0085` for details.
|
||||
|
||||
Autogen
|
||||
-------
|
||||
|
||||
* The :prop_tgt:`AUTOMOC_EXECUTABLE`, :prop_tgt:`AUTORCC_EXECUTABLE`, and
|
||||
:prop_tgt:`AUTOUIC_EXECUTABLE` target properties were added. They all
|
||||
take a path to an executable and force automoc/autorcc/autouic to use
|
||||
this executable.
|
||||
|
||||
Setting these will also prevent the configure time testing for these
|
||||
executables. This is mainly useful when you build these tools yourself.
|
||||
|
||||
* The new variables :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET`,
|
||||
:variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME`,
|
||||
:variable:`CMAKE_GLOBAL_AUTORCC_TARGET` and
|
||||
:variable:`CMAKE_GLOBAL_AUTORCC_TARGET_NAME` control the generation
|
||||
of global ``autogen`` and ``autorcc`` targets.
|
||||
|
||||
* A new :variable:`CMAKE_AUTOGEN_ORIGIN_DEPENDS` variable and
|
||||
:prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` target property may be set to enable or
|
||||
disable forwarding of the origin target dependencies to the corresponding
|
||||
``_autogen`` target.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* :manual:`ctest(1)` gained a ``--show-only=json-v1`` option to show the
|
||||
list of tests in a machine-readable JSON format.
|
||||
See the :ref:`Show as JSON Object Model` section of the manual.
|
||||
|
||||
* The :command:`ctest_submit` command learned a new ``Done`` part that can be used
|
||||
to inform CDash that a build is complete and that no more parts will be uploaded.
|
||||
|
||||
* CTest learned to accept the dashboard server submission URL from a single
|
||||
variable. See the ``SubmitURL`` setting in :manual:`ctest(1)`,
|
||||
the :variable:`CTEST_SUBMIT_URL` variable, and the ``SUBMIT_URL``
|
||||
argument of the :command:`ctest_submit` command.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* An explicit deprecation diagnostic was added for policies ``CMP0064``
|
||||
and ``CMP0065`` (``CMP0063`` and below were already deprecated).
|
||||
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
|
||||
of all policies are deprecated and that projects should port to the
|
||||
NEW behaviors.
|
||||
|
||||
* The :generator:`Xcode` generator deprecated support for Xcode
|
||||
versions prior to Xcode 5. Support for those will be dropped in a
|
||||
future version of CMake.
|
||||
|
||||
* The :module:`FindQt` module is no longer used by the :command:`find_package`
|
||||
command as a find module. This allows the Qt Project upstream to optionally
|
||||
provide its own ``QtConfig.cmake`` package configuration file and have
|
||||
applications use it via ``find_package(Qt)`` rather than
|
||||
``find_package(Qt CONFIG)``. See policy :policy:`CMP0084`.
|
||||
|
||||
* Support for running CMake on Windows XP and Windows Vista has been dropped.
|
||||
The precompiled Windows binaries provided on ``cmake.org`` now require
|
||||
Windows 7 or higher.
|
||||
|
||||
* CTest no longer supports submissions via ``ftp``, ``scp``, ``cp``, and
|
||||
``xmlrpc``. CDash is the only maintained testing dashboard for CTest,
|
||||
and it only supports submissions over ``http`` and ``https``.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* Object library linking has been fixed to propagate private link libraries
|
||||
of object libraries to consuming targets.
|
||||
|
||||
* Install rules under :command:`add_subdirectory` now interleave with those in
|
||||
the calling directory. See policy :policy:`CMP0082` for details.
|
||||
|
||||
* CMake now imposes a maximum recursion limit to prevent a stack overflow on
|
||||
scripts that recurse infinitely. The limit can be adjusted at runtime with
|
||||
:variable:`CMAKE_MAXIMUM_RECURSION_DEPTH`.
|
||||
|
||||
* When using cppcheck via the :variable:`CMAKE_<LANG>_CPPCHECK` variable
|
||||
or :prop_tgt:`<LANG>_CPPCHECK` property, the build will now fail if
|
||||
``cppcheck`` returns non-zero as configured by its command-line options.
|
||||
|
||||
* Required link options to manage Position Independent Executable are now
|
||||
added when :prop_tgt:`POSITION_INDEPENDENT_CODE` is set. The project is
|
||||
responsible for using the :module:`CheckPIESupported` module to check for
|
||||
``PIE`` support to ensure that the :prop_tgt:`POSITION_INDEPENDENT_CODE`
|
||||
target property will be honored at link time for executables. This behavior
|
||||
is controlled by policy :policy:`CMP0083`.
|
||||
|
||||
* :ref:`Visual Studio Generators` for VS 2010 and above learned
|
||||
to support the ``VS_DEBUGGER_*`` properties on targets created
|
||||
via :command:`add_custom_target`.
|
||||
|
||||
* The :module:`CPack` module no longer defaults to the ``paxr`` value in the
|
||||
:variable:`CPACK_DEBIAN_ARCHIVE_TYPE` variable, because ``dpkg`` has
|
||||
never supported the PAX tar format. The ``paxr`` value will be mapped
|
||||
to ``gnutar`` and a deprecation message emitted.
|
||||
|
||||
* CMake no longer issues a warning if a target listed in an
|
||||
:command:`install(TARGETS)` command has its :prop_tgt:`EXCLUDE_FROM_ALL`
|
||||
property set to true.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.14.0 include the following.
|
||||
|
||||
3.14.1
|
||||
------
|
||||
|
||||
* The :module:`FindFontconfig` module added by 3.14.0 accidentally
|
||||
used uppercase ``FONTCONFIG_*`` variable names that do not match
|
||||
our conventions. 3.14.1 revises the module to use ``Fontconfig_*``
|
||||
variable names. This is incompatible with 3.14.0 but since the
|
||||
module is new in the 3.14 series usage should not yet be widespread.
|
||||
|
||||
3.14.3
|
||||
------
|
||||
|
||||
* The :variable:`CMAKE_VS_PLATFORM_NAME_DEFAULT` variable was added
|
||||
to help toolchain files work with the :generator:`Visual Studio 16 2019`
|
||||
generator where the default platform now depends on the host platform.
|
||||
|
||||
3.14.4
|
||||
------
|
||||
|
||||
* In CMake 3.14.0 through 3.14.3, calling :command:`target_link_libraries`
|
||||
to add ``PRIVATE`` dependencies to a static library created in another
|
||||
directory (under policy :policy:`CMP0079` ``NEW`` behavior) would
|
||||
incorrectly propagate usage requirements of those dependencies to
|
||||
dependents that link the static library. This has been fixed.
|
||||
The bug also existed in 3.13.0 through 3.13.4 and is fixed in 3.13.5.
|
||||
|
||||
3.14.5
|
||||
------
|
||||
|
||||
* Entries of the ``CPATH`` environment variable are no longer excluded
|
||||
from explicit use via :command:`include_directories` and
|
||||
:command:`target_include_directories` as they were in CMake 3.14.0
|
||||
through 3.14.4.
|
||||
|
||||
3.14.6
|
||||
------
|
||||
|
||||
* In CMake 3.14.0 through 3.14.5, the :module:`FindBISON` module
|
||||
policy :policy:`CMP0088` ``NEW`` behavior accidentally interpreted
|
||||
a relative path to the ``.y`` input as relative to the build tree
|
||||
directory instead of the source tree directory. This has been fixed.
|
||||
|
||||
3.14.7
|
||||
------
|
||||
|
||||
* In CMake 3.14.0 through 3.14.6, the :prop_dir:`EXCLUDE_FROM_ALL`
|
||||
directory property was regressed from pre-3.14 behavior and caused
|
||||
targets within the directory to be excluded even from its own "all".
|
||||
This has been fixed.
|
|
@ -0,0 +1,396 @@
|
|||
CMake 3.15 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.14 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :generator:`Xcode` generator now supports per-target schemes.
|
||||
See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and
|
||||
:prop_tgt:`XCODE_GENERATE_SCHEME` target property.
|
||||
|
||||
* The :generator:`Green Hills MULTI` generator has been updated:
|
||||
|
||||
* It now supports the :command:`add_custom_command` and
|
||||
:command:`add_custom_target` commands.
|
||||
|
||||
* It is now available on Linux.
|
||||
|
||||
Languages
|
||||
---------
|
||||
|
||||
* Preliminary support for the ``Swift`` language was added to the
|
||||
:generator:`Ninja` generator:
|
||||
|
||||
* Use the :envvar:`SWIFTC` environment variable to specify a compiler.
|
||||
|
||||
* The :prop_tgt:`Swift_DEPENDENCIES_FILE` target property and
|
||||
:prop_sf:`Swift_DEPENDENCIES_FILE` source file property were added
|
||||
to customize dependency files.
|
||||
|
||||
* The :prop_tgt:`Swift_MODULE_NAME` target property was added to
|
||||
customize the Swift module name.
|
||||
|
||||
* The :prop_sf:`Swift_DIAGNOSTICS_FILE` source property was added to
|
||||
indicate where to write the serialised Swift diagnostics.
|
||||
|
||||
The Swift support is experimental, not considered stable, and may change
|
||||
in future releases of CMake.
|
||||
|
||||
Compilers
|
||||
---------
|
||||
|
||||
* The ``Clang`` compiler variant on Windows that targets the MSVC ABI
|
||||
but has a GNU-like command line is now supported.
|
||||
|
||||
* Support for the Clang-based ARM compiler was added with compiler id
|
||||
``ARMClang``.
|
||||
|
||||
* Support was added for the IAR compiler architectures Renesas RX,
|
||||
RL78, RH850 and Texas Instruments MSP430.
|
||||
|
||||
* Support was added for the IAR compilers built for Linux (IAR BuildLx).
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* The :envvar:`CMAKE_GENERATOR` environment variable was added
|
||||
to specify a default generator to use when :manual:`cmake(1)` is
|
||||
run without a ``-G`` option. Additionally, environment variables
|
||||
:envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`,
|
||||
and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure
|
||||
the generator.
|
||||
|
||||
* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support
|
||||
for multiple targets, e.g. ``cmake --build . --target Library1 Library2``.
|
||||
It now also has a short form ``-t`` alias, e.g.
|
||||
``cmake --build . -t Library1 Library2``.
|
||||
|
||||
* The :manual:`cmake(1)` command gained a new ``--install`` option.
|
||||
This may be used after building a project to run installation without
|
||||
using the generated build system or the native build tool.
|
||||
|
||||
* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool learned
|
||||
to support removing multiple directories.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E tar`` tool has been improved:
|
||||
|
||||
* It now continues adding files to an archive even if some of the files
|
||||
are not readable. This behavior is more consistent with the
|
||||
classic ``tar`` tool.
|
||||
|
||||
* It now parses all flags, and if an invalid flag was provided, a
|
||||
warning is issued.
|
||||
|
||||
* It now displays an error if no action flag was specified, along with a
|
||||
list of possible actions: ``t`` (list), ``c`` (create) or ``x`` (extract).
|
||||
|
||||
* It now supports extracting (``-x``) or listing (``-t``) only specific
|
||||
files or directories.
|
||||
|
||||
* It now supports Zstandard compression with a ``--zstd`` option.
|
||||
Zstandard was designed to give a compression ratio comparable to that
|
||||
of the DEFLATE (zip) algorithm, but faster, especially for decompression.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_custom_command` and :command:`add_custom_target` commands
|
||||
gained a new ``JOB_POOL`` option that works with the :generator:`Ninja`
|
||||
generator to set the pool variable on the build statement.
|
||||
|
||||
* The :command:`add_library` command ``ALIAS`` option learned to support
|
||||
import libraries of the ``UNKNOWN`` type.
|
||||
|
||||
* The :command:`cmake_parse_arguments` command gained an additional
|
||||
``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report
|
||||
keyword arguments that were given by the caller with no values.
|
||||
|
||||
* The :command:`execute_process` command gained a ``COMMAND_ECHO`` option
|
||||
and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable
|
||||
to enable echoing of the command-line string before execution.
|
||||
|
||||
* The :command:`file(INSTALL)` command learned a new argument,
|
||||
``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
|
||||
install symlinks.
|
||||
|
||||
* :command:`list` learned new sub-commands:
|
||||
``PREPEND``, ``POP_FRONT`` and ``POP_BACK``.
|
||||
|
||||
* The :command:`message` command learned new types:
|
||||
``NOTICE``, ``VERBOSE``, ``DEBUG`` and ``TRACE``.
|
||||
|
||||
* The :command:`string` learned a new sub-command ``REPEAT``.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding
|
||||
:prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support
|
||||
arguments to the emulator.
|
||||
|
||||
* The :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable was added to tell
|
||||
:command:`find_package` calls to look for a package configuration
|
||||
file first even if a find module is available.
|
||||
|
||||
* The :variable:`CMAKE_FRAMEWORK` variable was added to initialize the
|
||||
:prop_tgt:`FRAMEWORK` property on all targets.
|
||||
|
||||
* The :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING` variable and
|
||||
:prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target property were added to
|
||||
enable the Just My Code feature of the Visual Studio Debugger when
|
||||
compiling with MSVC cl 19.05 and higher.
|
||||
|
||||
* The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and
|
||||
:prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to
|
||||
select the runtime library used by compilers targeting the MSVC ABI.
|
||||
See policy :policy:`CMP0091`.
|
||||
|
||||
* The :variable:`CMAKE_PROJECT_INCLUDE` and
|
||||
:variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables were added to allow
|
||||
injection of custom code at the sites of :command:`project` calls
|
||||
without knowing the project name a priori.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`ADDITIONAL_CLEAN_FILES` target property and
|
||||
:prop_dir:`ADDITIONAL_CLEAN_FILES` directory property were added.
|
||||
They allow to register additional files that should be removed during
|
||||
the clean stage.
|
||||
|
||||
* The :prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` properties
|
||||
may now be set on :ref:`Interface Libraries`. The headers specified by those
|
||||
properties can be installed using the :command:`install(TARGETS)` command by
|
||||
passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively.
|
||||
|
||||
* The :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to
|
||||
tell :ref:`Visual Studio Generators` to add references to ``nuget``
|
||||
packages.
|
||||
|
||||
* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added to allow
|
||||
managed Visual Studio project files to import external ``.props`` files.
|
||||
|
||||
* The :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to
|
||||
tell :ref:`Visual Studio Generators` whether to deploy an artifact
|
||||
to the WinCE or Windows Phone target device.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`FindBoost` module was reworked to expose a more consistent
|
||||
user experience between its "Config" and "Module" modes and with other
|
||||
find modules in general.
|
||||
|
||||
* A new imported target ``Boost::headers`` is now defined (same
|
||||
as ``Boost::boost``).
|
||||
|
||||
* New output variables ``Boost_VERSION_MACRO``,
|
||||
``Boost_VERSION_MAJOR``, ``Boost_VERSION_MINOR``,
|
||||
``Boost_VERSION_PATCH``, and ``Boost_VERSION_COUNT``
|
||||
were added.
|
||||
|
||||
* The ``QUIET`` argument passed to :command:`find_package` is no
|
||||
longer ignored in config mode. Note that the CMake package shipped with
|
||||
Boost ``1.70.0`` ignores the ``QUIET`` argument passed to
|
||||
:command:`find_package`. This is fixed in the next Boost release.
|
||||
|
||||
* The input switch ``Boost_DETAILED_FAILURE_MSG`` was removed.
|
||||
|
||||
* ``Boost_VERSION`` now reports the version in ``x.y.z``
|
||||
format in module mode. See policy :policy:`CMP0093`.
|
||||
|
||||
* The :module:`FindCups` module now provides imported targets.
|
||||
|
||||
* The :module:`FindEnvModules` module was added to use Lua- and TCL-based
|
||||
environment modules in :ref:`CTest Scripts <CTest Script>`.
|
||||
|
||||
* The :module:`FindGLEW` module now provides an interface more consistent
|
||||
with what upstream GLEW provides in its own CMake package files.
|
||||
|
||||
* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS`
|
||||
property of imported targets with other (non-library) linker flags.
|
||||
|
||||
* The :module:`FindPostgreSQL` module learned to find debug and release
|
||||
variants separately.
|
||||
|
||||
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
|
||||
gained additional lookup strategies and controls, and a new default.
|
||||
See policy :policy:`CMP0094`.
|
||||
|
||||
* Modules :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3`
|
||||
gain a new target (respectively ``Python::Module``, ``Python2::Module``
|
||||
and ``Python3::Module``) which can be used to develop Python modules.
|
||||
|
||||
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
|
||||
gain capability to control how virtual environments are handled.
|
||||
|
||||
* The :module:`UseSWIG` module learned to manage alternate library names
|
||||
by passing ``-interface <library_name>`` for ``python`` language or
|
||||
``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG``
|
||||
compiler.
|
||||
|
||||
Generator Expressions
|
||||
---------------------
|
||||
|
||||
* The :manual:`generator expressions <cmake-generator-expressions(7)>`
|
||||
``C_COMPILER_ID``, ``CXX_COMPILER_ID``, ``CUDA_COMPILER_ID``,
|
||||
``Fortran_COMPILER_ID``, ``COMPILE_LANGUAGE``, ``COMPILE_LANG_AND_ID``, and
|
||||
``PLATFORM_ID`` learned to support matching one value from a comma-separated
|
||||
list.
|
||||
|
||||
* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>``
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>` were added.
|
||||
|
||||
* The ``$<COMPILE_LANG_AND_ID:...>`` generator expression was introduced to
|
||||
allow specification of compile options for target files based on the
|
||||
:variable:`CMAKE_<LANG>_COMPILER_ID` and :prop_sf:`LANGUAGE` of
|
||||
each source file.
|
||||
|
||||
* A ``$<FILTER:list,INCLUDE|EXCLUDE,regex>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
has been added.
|
||||
|
||||
* A ``$<REMOVE_DUPLICATES:list>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
has been added.
|
||||
|
||||
* The ``$<SHELL_PATH:...>`` :manual:`generator expression
|
||||
<cmake-generator-expressions(7)>` gained support for a list of paths.
|
||||
|
||||
* New ``$<TARGET_FILE*>`` :manual:`generator expressions
|
||||
<cmake-generator-expressions(7)>` were added to retrieve the prefix, base
|
||||
name, and suffix of the file names of various artifacts:
|
||||
|
||||
* ``$<TARGET_FILE_PREFIX:...>``
|
||||
* ``$<TARGET_FILE_BASE_NAME:...>``
|
||||
* ``$<TARGET_FILE_SUFFIX:...>``
|
||||
* ``$<TARGET_LINKER_FILE_PREFIX:...>``
|
||||
* ``$<TARGET_LINKER_FILE_BASE_NAME:...>``
|
||||
* ``$<TARGET_LINKER_FILE_SUFFIX:...>``
|
||||
* ``$<TARGET_PDB_FILE_BASE_NAME:...>``
|
||||
|
||||
* The ``$<TARGET_OBJECTS:...>`` :manual:`generator expression
|
||||
<cmake-generator-expressions(7)>` is now supported on ``SHARED``,
|
||||
``STATIC``, ``MODULE`` libraries and executables.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :command:`ctest_submit` command learned a new option: ``BUILD_ID``.
|
||||
This can be used to store the ID assigned to this build by CDash to a
|
||||
variable.
|
||||
|
||||
* The :command:`ctest_update` command learned to honor a new variable:
|
||||
:variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify
|
||||
the current version of your source tree rather than using the update
|
||||
command to discover the current version that is checked out.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack IFW Generator` gained a new
|
||||
:variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
|
||||
installer stylesheet.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* The :manual:`cmake-server(7)` mode has been deprecated and will be
|
||||
removed from a future version of CMake. Please port clients to use
|
||||
the :manual:`cmake-file-api(7)` instead.
|
||||
|
||||
* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property is now
|
||||
deprecated. Use the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property
|
||||
instead.
|
||||
|
||||
* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered
|
||||
deprecated. Support still exists but will be removed in future versions.
|
||||
|
||||
* The :command:`export(PACKAGE)` command now does nothing unless
|
||||
enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`.
|
||||
See policy :policy:`CMP0090`.
|
||||
|
||||
* The :generator:`Xcode` generator now requires at least Xcode 5.
|
||||
|
||||
* An explicit deprecation diagnostic was added for policy ``CMP0066``
|
||||
(``CMP0065`` and below were already deprecated).
|
||||
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
|
||||
of all policies are deprecated and that projects should port to the
|
||||
NEW behaviors.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* If a feature specified by :command:`target_compile_features` is available
|
||||
in the compiler's default standard level, CMake 3.14 and below incorrectly
|
||||
added unnecessary ``-std=`` flags that could lower the standard level.
|
||||
This bug has been fixed in CMake 3.15. This behavior change may expose
|
||||
bugs in existing projects that were relying on undocumented implementation
|
||||
details. Specifying compile features only ensures that the compiler runs
|
||||
in a mode that has those features, not that any specific standard level is
|
||||
used or explicit ``-std=`` flag passed.
|
||||
|
||||
* CMake learned how to compile C++14 with the IBM AIX XL compiler
|
||||
and the SunPro compiler and to compile C++20 with the AppleClang compiler.
|
||||
|
||||
* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS`
|
||||
no longer contains warning flags like ``/W3`` by default.
|
||||
See policy :policy:`CMP0092`.
|
||||
|
||||
* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
|
||||
compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`.
|
||||
|
||||
* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands
|
||||
were changed to ignore empty arguments with a warning instead of treating
|
||||
them as a relative path and removing the contents of the current directory.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.15.0 include the following.
|
||||
|
||||
3.15.1
|
||||
------
|
||||
|
||||
* In CMake 3.15.0 support for the GNU-like ``Clang`` compiler targeting the
|
||||
MSVC ABI implemented :variable:`CMAKE_CXX_STANDARD` values 98 and 11 using
|
||||
the corresponding ``-std=`` flags. However, these modes do not work with
|
||||
the MSVC standard library. Therefore CMake 3.15.1 passes C++14 standard
|
||||
flags even for C++98 and C++11. This is consistent with MSVC itself which
|
||||
always runs in a mode aware of C++14.
|
||||
|
||||
* Preliminary Swift support added in 3.15.0 has been updated.
|
||||
|
||||
3.15.2
|
||||
------
|
||||
|
||||
* In CMake 3.15.0 and 3.15.1 the :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG`
|
||||
variable caused the :command:`find_package` command to fail on a missing
|
||||
package even without the ``REQUIRED`` option. This has been fixed.
|
||||
|
||||
3.15.3
|
||||
------
|
||||
|
||||
* ``CrayPrgEnv`` compiler wrapper support has been updated for the 19.06
|
||||
release of the Cray Programming Environment for which the default linking
|
||||
mode on XC Cray systems is now dynamic instead of static.
|
||||
|
||||
3.15.4
|
||||
------
|
||||
|
||||
* In CMake 3.15.0 through 3.15.3, the :prop_dir:`EXCLUDE_FROM_ALL`
|
||||
directory property was regressed from pre-3.14 behavior and caused
|
||||
targets within the directory to be excluded even from its own "all".
|
||||
This has been fixed.
|
||||
The bug also existed in 3.14.0 through 3.14.6 and is fixed in 3.14.7.
|
|
@ -0,0 +1,318 @@
|
|||
CMake 3.16 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.15 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Languages
|
||||
---------
|
||||
|
||||
* CMake learned to support the Objective C (``OBJC``) and Objective C++
|
||||
(``OBJCXX``) languages. They may be enabled via the :command:`project`
|
||||
and :command:`enable_language` commands. When ``OBJC`` or ``OBJCXX``
|
||||
is enabled, source files with the ``.m`` or ``.mm``, respectively,
|
||||
will be compiled as Objective C or C++. Otherwise they will be treated
|
||||
as plain C++ sources as they were before.
|
||||
|
||||
Compilers
|
||||
---------
|
||||
|
||||
* The ``Clang`` compiler is now supported on ``Solaris``.
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* On AIX, executables using the :prop_tgt:`ENABLE_EXPORTS` target property
|
||||
now produce a linker import file with a ``.imp`` extension in addition
|
||||
to the executable file. Plugins (created via :command:`add_library` with
|
||||
the ``MODULE`` option) that use :command:`target_link_libraries` to link
|
||||
to the executable for its symbols are now linked using the import file.
|
||||
The :command:`install(TARGETS)` command now installs the import file as
|
||||
an ``ARCHIVE`` artifact.
|
||||
|
||||
* On AIX, runtime linking is no longer enabled by default. CMake provides
|
||||
the linker enough information to resolve all symbols up front.
|
||||
One may manually enable runtime linking for shared libraries and/or
|
||||
loadable modules by adding ``-Wl,-G`` to their link flags
|
||||
(e.g. in the :variable:`CMAKE_SHARED_LINKER_FLAGS` or
|
||||
:variable:`CMAKE_MODULE_LINKER_FLAGS` variable).
|
||||
One may manually enable runtime linking for executables by adding
|
||||
``-Wl,-brtl`` to their link flags (e.g. in the
|
||||
:variable:`CMAKE_EXE_LINKER_FLAGS` variable).
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands,
|
||||
which do nothing while returning exit codes of 0 and 1, respectively.
|
||||
|
||||
* :manual:`cmake(1)` gained a ``--trace-redirect=<file>`` command line
|
||||
option that can be used to redirect ``--trace`` output to a file instead
|
||||
of ``stderr``.
|
||||
|
||||
* The :manual:`cmake(1)` ``--loglevel`` command line option has been
|
||||
renamed to ``--log-level`` to make it consistent with the naming of other
|
||||
command line options. The ``--loglevel`` option is still supported to
|
||||
preserve backward compatibility.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_test` command learned the option ``COMMAND_EXPAND_LISTS``
|
||||
which causes lists in the ``COMMAND`` argument to be expanded, including
|
||||
lists created by generator expressions.
|
||||
|
||||
* The :command:`file` command learned a new sub-command,
|
||||
``GET_RUNTIME_DEPENDENCIES``, which allows you to recursively get the list of
|
||||
libraries linked by an executable or library. This sub-command is intended as
|
||||
a replacement for :module:`GetPrerequisites`.
|
||||
|
||||
* The :command:`find_file`, :command:`find_library`, :command:`find_path`,
|
||||
:command:`find_package`, and :command:`find_program` commands have learned to
|
||||
check the following variables to control the default behavior for groups of
|
||||
search locations:
|
||||
|
||||
* :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` - Controls the default
|
||||
behavior of searching the :variable:`<PackageName>_ROOT` variables.
|
||||
|
||||
* :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` - Controls the default
|
||||
behavior of searching the CMake-specific environment variables.
|
||||
|
||||
* :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the default
|
||||
behavior of searching the standard system environment variables.
|
||||
|
||||
* :variable:`CMAKE_FIND_USE_CMAKE_PATH` - Controls the default behavior of
|
||||
searching the CMake-specific cache variables.
|
||||
|
||||
* :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH` - Controls the default
|
||||
behavior of searching the platform-specific CMake variables.
|
||||
|
||||
* The :command:`find_package` command has learned to check the
|
||||
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable to control the default
|
||||
behavior of searching the CMake user package registry and to check the
|
||||
:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variable to control
|
||||
the default behavior of searching the CMake system package registry.
|
||||
|
||||
* The :command:`message` command learned indentation control with the new
|
||||
:variable:`CMAKE_MESSAGE_INDENT` variable.
|
||||
|
||||
* The :command:`target_precompile_headers` command was added to specify
|
||||
a list of headers to precompile for faster compilation times.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* The :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` variable has been
|
||||
introduced to optionally initialize the
|
||||
:prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property.
|
||||
|
||||
* The :variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` variable was added to
|
||||
specify the resource encoding for the the :generator:`Eclipse CDT4` extra
|
||||
generator.
|
||||
|
||||
* The :variable:`CMAKE_UNITY_BUILD` variable was added to initialize the
|
||||
:prop_tgt:`UNITY_BUILD` target property to tell generators to batch
|
||||
include source files for faster compilation times.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` target properties
|
||||
now support :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH` target property was
|
||||
added to remove compiler-defined ``RPATH`` entries from a target.
|
||||
This property is initialized by the
|
||||
:variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH` variable.
|
||||
|
||||
* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to specify
|
||||
a list of headers to precompile for faster compilation times.
|
||||
Set it using the :command:`target_precompile_headers` command.
|
||||
|
||||
* The :prop_tgt:`UNITY_BUILD` target property was added to tell
|
||||
generators to batch include source files for faster compilation
|
||||
times.
|
||||
|
||||
* The :prop_tgt:`VS_CONFIGURATION_TYPE` target property now supports
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :prop_tgt:`VS_DPI_AWARE` target property was added to tell
|
||||
:ref:`Visual Studio Generators` to set the ``EnableDpiAwareness``
|
||||
property in ``.vcxproj`` files.
|
||||
|
||||
* The :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING` target property was
|
||||
added to tell the :generator:`Xcode` generator to set the value of the
|
||||
``Allow debugging when using document Versions Browser`` schema option.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`FindDoxygen` module :command:`doxygen_add_docs` command
|
||||
gained a new ``USE_STAMP_FILE`` option. When this option present,
|
||||
the custom target created by the command will only re-run Doxygen if
|
||||
any of the source files have changed since the last successful run.
|
||||
|
||||
* The :module:`FindGnuTLS` module now provides an imported target.
|
||||
|
||||
* The :module:`FindPackageHandleStandardArgs` module
|
||||
:command:`find_package_handle_standard_args` command gained
|
||||
a new ``REASON_FAILURE_MESSAGE`` option to specify a message
|
||||
giving the reason for the failure.
|
||||
|
||||
* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro
|
||||
now defines a ``<prefix>_MODULE_NAME`` result variable containing the
|
||||
first matching module name.
|
||||
|
||||
* The :module:`FindPython3` and :module:`FindPython` modules gained
|
||||
options to control which ``ABIs`` will be searched.
|
||||
|
||||
* The :module:`FindPython3`, :module:`FindPython2`, and :module:`FindPython`
|
||||
modules now support direct specification of artifacts via cache entries.
|
||||
|
||||
Autogen
|
||||
-------
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC`, CMake now generates the ``-p`` path prefix
|
||||
option for ``moc``. This ensures that ``moc`` output files are identical
|
||||
on different build setups (given, that the headers compiled by ``moc`` are
|
||||
in an :command:`include directory <target_include_directories>`).
|
||||
Also it ensures that ``moc`` output files will compile correctly when the
|
||||
source and/or build directory is a symbolic link.
|
||||
|
||||
The ``moc`` path prefix generation behavior can be configured by setting
|
||||
the new :variable:`CMAKE_AUTOMOC_PATH_PREFIX` variable and/or
|
||||
:prop_tgt:`AUTOMOC_PATH_PREFIX` target property.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* :manual:`ctest(1)` now has the ability to schedule tests based on resource
|
||||
requirements for each test. See :ref:`ctest-resource-allocation` for
|
||||
details.
|
||||
|
||||
* A new test property, :prop_test:`SKIP_REGULAR_EXPRESSION`, has been added.
|
||||
This property is similar to :prop_test:`FAIL_REGULAR_EXPRESSION` and
|
||||
:prop_test:`PASS_REGULAR_EXPRESSION`, but with the same meaning as
|
||||
:prop_test:`SKIP_RETURN_CODE`. This is useful, for example, in cases where
|
||||
the user has no control over the return code of the test. For example, in
|
||||
Catch2, the return value is the number of assertion failed, therefore it is
|
||||
impossible to use it for :prop_test:`SKIP_RETURN_CODE`.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* :manual:`cpack(1)` learned support for multiple configurations for ``-C``
|
||||
option.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` is now able to format generic text
|
||||
(usually used as the description for multiple CPack generators) according
|
||||
to the `Debian Policy Manual`_. See the
|
||||
:variable:`CPACK_PACKAGE_DESCRIPTION_FILE` and
|
||||
:variable:`CPACK_DEBIAN_<COMPONENT>_DESCRIPTION` variables.
|
||||
|
||||
* The :cpack_gen:`CPack Archive Generator` learned to generate ``.tar.zst``
|
||||
packages with Zstandard compression.
|
||||
|
||||
.. _`Debian Policy Manual`: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* An explicit deprecation diagnostic was added for policy ``CMP0067``
|
||||
(``CMP0066`` and below were already deprecated).
|
||||
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
|
||||
of all policies are deprecated and that projects should port to the
|
||||
NEW behaviors.
|
||||
|
||||
* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` variable has been
|
||||
deprecated. Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable
|
||||
instead.
|
||||
|
||||
* The :module:`GetPrerequisites` module has been deprecated, as it has been
|
||||
superceded by :command:`file(GET_RUNTIME_DEPENDENCIES)`.
|
||||
|
||||
* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the
|
||||
new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The :manual:`cmake(1)` ``-C <initial-cache>`` option now evaluates the
|
||||
initial cache script with :variable:`CMAKE_SOURCE_DIR` and
|
||||
:variable:`CMAKE_BINARY_DIR` set to the top-level source and build trees.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool,
|
||||
when given the path to a symlink to a directory, now removes just
|
||||
the symlink. It no longer removes content of the linked directory.
|
||||
|
||||
* The :manual:`ctest(1)` ``--build-makeprogram`` command-line option now
|
||||
specifies the make program used when configuring a project with the
|
||||
:generator:`Ninja` generator or the :ref:`Makefile Generators`.
|
||||
|
||||
* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
|
||||
has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules.
|
||||
See policy :policy:`CMP0097`.
|
||||
|
||||
* The :module:`FindGTest` module has been updated to recognize
|
||||
MSVC build trees generated by GTest 1.8.1.
|
||||
|
||||
* The :command:`project` command no longer strips leading zeros in version
|
||||
components. See policy :policy:`CMP0096`.
|
||||
|
||||
* The Qt Compressed Help file is now named ``CMake.qch``, which no longer
|
||||
contains the release version in the file name. When CMake is upgraded
|
||||
in-place, the name and location of this file will remain constant.
|
||||
Tools such as IDEs, help viewers, etc. should now be able to refer to this
|
||||
file at a fixed location that remains valid across CMake upgrades.
|
||||
|
||||
* ``RPATH`` entries are properly escaped in the generated CMake scripts
|
||||
used for installation. See policy :policy:`CMP0095`.
|
||||
|
||||
* When using :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` on Windows the
|
||||
auto-generated exports are now updated only when the object files
|
||||
providing the symbols are updated.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.16.0 include the following.
|
||||
|
||||
3.16.2
|
||||
------
|
||||
|
||||
* CMake 3.16.0 and 3.16.1 processed ``.hh`` files with :prop_tgt:`AUTOMOC`.
|
||||
This was a behavior change from CMake 3.15 and below that can break
|
||||
existing projects, so it has been reverted as of 3.16.2.
|
||||
|
||||
3.16.5
|
||||
------
|
||||
|
||||
* The :module:`FindPython`, :module:`FindPython2`, and :module:`FindPython3`
|
||||
modules no longer create cache entries for ``Python{,2,3}_LIBRARY_RELEASE``
|
||||
and ``Python{,2,3}_LIBRARY_DEBUG``. Those values are always computed from
|
||||
other results and so should not be cached. The entries were created by
|
||||
CMake 3.16.0 through 3.16.4 but were always ``FORCE``-set and could not
|
||||
be meaningfully edited by users.
|
||||
|
||||
Additionally, the modules no longer expose their internal ``_Python*``
|
||||
cache entries publicly. CMake 3.16.0 through 3.16.4 accidentally
|
||||
made them visible as advanced cache entries.
|
||||
|
||||
3.16.7
|
||||
------
|
||||
|
||||
* Selection of the Objective C or C++ compiler now considers the
|
||||
:envvar:`CC` or :envvar:`CXX` environment variable if the
|
||||
:envvar:`OBJC` or :envvar:`OBJCXX` environment variable is not set.
|
||||
|
||||
* The :module:`FindPkgConfig` module now extracts include directories
|
||||
prefixed with ``-isystem`` into the ``*_INCLUDE_DIRS`` variables and
|
||||
:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target properties.
|
||||
Previously they would be places in ``*_CFLAGS_OTHER`` variables and
|
||||
:prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
|
|
@ -0,0 +1,348 @@
|
|||
CMake 3.17 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.16 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* :manual:`cmake(1)` gained a :generator:`Ninja Multi-Config` generator,
|
||||
which is similar to the :generator:`Ninja` generator but can be used to build
|
||||
multiple configurations at once.
|
||||
|
||||
* :ref:`Visual Studio Generators` learned to support per-config sources.
|
||||
Previously only :ref:`Command-Line Build Tool Generators` supported them.
|
||||
|
||||
* :ref:`Visual Studio Generators` for VS 2010 and above now support
|
||||
specifying the ``VCTargetsPath`` value for project files in
|
||||
:variable:`CMAKE_GENERATOR_TOOLSET` setting.
|
||||
|
||||
* :ref:`Visual Studio Generators` for VS 2010 and above learned to
|
||||
support .NET Standard and .NET Core. See the
|
||||
:prop_tgt:`DOTNET_TARGET_FRAMEWORK` target property and
|
||||
associated :variable:`CMAKE_DOTNET_TARGET_FRAMEWORK` variable.
|
||||
|
||||
Languages
|
||||
---------
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
now offers meta-features for the CUDA language standard levels
|
||||
(e.g. ``cuda_std_03``, ``cuda_std_14``). See
|
||||
:prop_gbl:`CMAKE_CUDA_KNOWN_FEATURES`.
|
||||
|
||||
Compilers
|
||||
---------
|
||||
|
||||
* The IBM XL Fortran compiler is now supported by the :generator:`Ninja`
|
||||
generator.
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* :manual:`cmake(1)` gained a ``--debug-find`` command-line option to
|
||||
enable additional human-readable output on where ``find_*`` commands search.
|
||||
|
||||
* :manual:`cmake(1)` gained a ``--trace-format`` command-line option that
|
||||
can be used to set the ``--trace`` output format. Currently, the old
|
||||
human readable and the new JSON format are supported. The new JSON format
|
||||
is easier to parse automatically than the existing format.
|
||||
|
||||
* :manual:`cmake(1)` gained a ``-E rm`` command-line tool that can be
|
||||
used to remove directories and files. This supersedes the existing
|
||||
``-E remove`` and ``-E remove_directory`` tools and has better semantics.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_custom_command` command learned to interpret paths in
|
||||
``DEPENDS`` arguments that are specified relative to the current
|
||||
binary directory.
|
||||
|
||||
* The :command:`foreach` command learned a new ``ZIP_LISTS`` option to iterate
|
||||
over multiple lists simultaneously.
|
||||
|
||||
* The :command:`load_cache(READ_WITH_PREFIX)` command mode is now allowed
|
||||
when using ``cmake -P`` to :ref:`Run a Script <Script Processing Mode>`.
|
||||
|
||||
* The :command:`message` command learned to output context provided in
|
||||
the :variable:`CMAKE_MESSAGE_CONTEXT` variable for log levels
|
||||
``NOTICE`` and below. Enable this output with the new ``--log-context``
|
||||
command-line option or :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` variable.
|
||||
|
||||
* The :command:`message` command gained new keywords ``CHECK_START``,
|
||||
``CHECK_PASS`` and ``CHECK_FAIL``.
|
||||
|
||||
* The :command:`target_compile_options` command now honors the ``BEFORE``
|
||||
keyword more consistently. See policy :policy:`CMP0101`.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_CTEST_ARGUMENTS` variable was added to specify a list
|
||||
of command-line arguments passed to CTest when running through the
|
||||
``test`` (or ``RUN_TESTS``) target of the generated build system.
|
||||
|
||||
* The following variables are now defined inside a :command:`function`:
|
||||
|
||||
- :variable:`CMAKE_CURRENT_FUNCTION`
|
||||
- :variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR`
|
||||
- :variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE`
|
||||
- :variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`
|
||||
|
||||
* The :variable:`CMAKE_CUDA_RUNTIME_LIBRARY` variable and
|
||||
:prop_tgt:`CUDA_RUNTIME_LIBRARY` target property were introduced to
|
||||
select the CUDA runtime library used when linking targets that
|
||||
use CUDA.
|
||||
|
||||
* The :variable:`CMAKE_FIND_DEBUG_MODE` variable was introduced to
|
||||
print extra ``find_*`` call information during the cmake run to standard
|
||||
error. Output is designed for human consumption and not for parsing.
|
||||
|
||||
* The :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` variable now takes its
|
||||
initial value from the :envvar:`CMAKE_EXPORT_COMPILE_COMMANDS` environment
|
||||
variable if no explicit configuration is given.
|
||||
|
||||
* The :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable, if not set
|
||||
explicitly, now takes its initial value from the
|
||||
:envvar:`CMAKE_<LANG>_COMPILER_LAUNCHER` environment variable.
|
||||
|
||||
* The :variable:`CMAKE_MESSAGE_LOG_LEVEL` variable can now be used
|
||||
to persist a log level between CMake runs, unlike the ``--log-level``
|
||||
command line option which only applies to that particular run.
|
||||
|
||||
* The :variable:`CMAKE_XCODE_SCHEME_ENVIRONMENT` variable was added
|
||||
to initialize the :prop_tgt:`XCODE_SCHEME_ENVIRONMENT` target property.
|
||||
|
||||
* The :variable:`CMAKE_XCODE_SCHEME_WORKING_DIRECTORY` variable and
|
||||
associated :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY` target property
|
||||
were added to tell the :generator:`Xcode` generator to set the value of
|
||||
the ``Custom Working Directory`` schema option.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`AIX_EXPORT_ALL_SYMBOLS` target property and associated
|
||||
:variable:`CMAKE_AIX_EXPORT_ALL_SYMBOLS` variable were created to
|
||||
optionally explicitly disable automatic export of symbols from shared
|
||||
libraries on AIX.
|
||||
|
||||
* The :prop_tgt:`DEPRECATION` target property was added to mark
|
||||
a target as deprecated. If a linked target is marked as
|
||||
deprecated, a warning with the deprecation message is issued
|
||||
at generate time.
|
||||
|
||||
* The :prop_tgt:`INSTALL_NAME_DIR` target property now supports
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
In particular, the ``$<INSTALL_PREFIX>`` generator expression can
|
||||
be used to set the directory relative to the install-time prefix.
|
||||
|
||||
* Target properties :prop_tgt:`MACHO_COMPATIBILITY_VERSION` and
|
||||
:prop_tgt:`MACHO_CURRENT_VERSION` were added to set the
|
||||
``compatibility_version`` and ``curent_version``, respectively,
|
||||
for Mach-O binaries. For backwards compatibility, if these properties
|
||||
are not set, :prop_tgt:`SOVERSION` and :prop_tgt:`VERSION`
|
||||
are used respectively as fallbacks.
|
||||
|
||||
* The :prop_tgt:`VS_DOTNET_DOCUMENTATION_FILE` target property was added
|
||||
to tell :ref:`Visual Studio Generators` to generate a ``DocumentationFile``
|
||||
reference in ``.csproj`` files.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`ExternalProject` module :command:`ExternalProject_Add`
|
||||
command gained a ``GIT_SUBMODULES_RECURSE`` option to specify whether
|
||||
Git submodules should be updated recursively. The default is on to
|
||||
preserve existing behavior.
|
||||
|
||||
* The :module:`FindCUDAToolkit` module was added to find the
|
||||
CUDA Toolkit without enabling CUDA as a language.
|
||||
|
||||
* The :module:`FindCURL` module learned to find CURL using
|
||||
the ``CURLConfig.cmake`` package configuration file generated by
|
||||
CURL's cmake buildsystem. It also gained a new ``CURL_NO_CURL_CMAKE``
|
||||
option to disable this behavior.
|
||||
|
||||
* The :module:`FindFLEX` module's ``FLEX_TARGET`` command now runs ``flex``
|
||||
with :variable:`CMAKE_CURRENT_BINARY_DIR` as the working directory.
|
||||
See policy :policy:`CMP0098`.
|
||||
|
||||
* The :module:`FindLibArchive` module now provides an imported target
|
||||
for libarchive.
|
||||
|
||||
* The :module:`FindPython` module has learned to find Python components
|
||||
in active virtual environments managed by ``conda``.
|
||||
|
||||
* The :module:`FindPython3` and :module:`FindPython` modules gained,
|
||||
respectively, variable ``Python3_SOABI`` and ``Python_SOABI`` giving
|
||||
the standard extension suffix for modules. Moreover, commands
|
||||
``Python3_add_library()`` and ``Python_add_library()`` gained the option
|
||||
``WITH_SOABI`` to prefix the library suffix with the value of ``SOABI``.
|
||||
|
||||
* The :module:`FindLibXml2` module now provides an imported target for the
|
||||
``xmllint`` executable.
|
||||
|
||||
Autogen
|
||||
-------
|
||||
|
||||
* :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` learned to process headers
|
||||
with a ``.hh`` extension. See policy :policy:`CMP0100`.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :variable:`CTEST_CONFIGURATION_TYPE` variable is now set from the
|
||||
command line when :manual:`ctest(1)` is invoked with ``-C <cfg>``.
|
||||
|
||||
* The :manual:`ctest(1)` tool gained support for Dr. Memory to run
|
||||
memcheck runs.
|
||||
|
||||
* The :manual:`ctest(1)` tool gained a ``--no-tests=<[error|ignore]>`` option
|
||||
to explicitly set and unify the behavior between direct invocation and
|
||||
script mode if no tests were found.
|
||||
|
||||
* The :manual:`ctest(1)` tool gained a ``--repeat <mode>:<n>`` option
|
||||
to specify conditions in which to repeat tests. This generalizes
|
||||
the existing ``--repeat-until-fail <n>`` option to add modes for
|
||||
``until-pass`` and ``after-timeout``.
|
||||
|
||||
* The :command:`ctest_test` command gained a ``REPEAT <mode>:<n>`` option
|
||||
to specify conditions in which to repeat tests.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack DragNDrop Generator` learned to use
|
||||
the :variable:`CPACK_DMG_<component>_FILE_NAME` variable
|
||||
to set a custom filename when packaging components into
|
||||
their own DMGs.
|
||||
|
||||
* The :cpack_gen:`CPack DragNDrop Generator` learned to handle
|
||||
RTF formatted license files. When :variable:`CPACK_DMG_SLA_DIR`
|
||||
variable is set, ``<language>.license.rtf`` is considered, but
|
||||
only as a fallback when the plaintext (``.txt``) file is not found
|
||||
in order to maintain backwards compatibility.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` gained a new variable
|
||||
:variable:`CPACK_NSIS_MUI_HEADERIMAGE` to set the header image.
|
||||
To not break existing setups, it still defaults to
|
||||
:variable:`CPACK_PACKAGE_ICON` if the new variable is not set.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` now supports
|
||||
:variable:`CPACK_NSIS_UNINSTALL_NAME`.
|
||||
This can be used to specify the name of the Uninstall program.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` now supports
|
||||
:variable:`CPACK_NSIS_WELCOME_TITLE` and
|
||||
:variable:`CPACK_NSIS_WELCOME_TITLE_3LINES`.
|
||||
These can be used to specify the welcome page title and display it in 3 lines.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` now supports
|
||||
:variable:`CPACK_NSIS_FINISH_TITLE` and
|
||||
:variable:`CPACK_NSIS_FINISH_TITLE_3LINES`.
|
||||
These can be used to specify the finish page title and display it in 3 lines.
|
||||
|
||||
* The :cpack_gen:`CPack productbuild Generator` gained support for a
|
||||
:variable:`CPACK_PRODUCTBUILD_BACKGROUND` variable to specify a background
|
||||
image for the macOS installer.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* :manual:`ccmake(1)` now displays cache values using colors
|
||||
based on the entry type if the terminal supports color.
|
||||
|
||||
* :manual:`ccmake(1)` now displays messages and a progress bar during
|
||||
configure and generate. It will keep the output displayed if any
|
||||
errors or warnings occurred.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* An explicit deprecation diagnostic was added for policy ``CMP0068``
|
||||
and policy ``CMP0069`` (``CMP0067`` and below were already deprecated).
|
||||
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
|
||||
of all policies are deprecated and that projects should port to the
|
||||
NEW behaviors.
|
||||
|
||||
* The :cpack_gen:`CPack PackageMaker Generator` generator has been
|
||||
deprecated because Xcode no longer distributes the PackageMaker tools.
|
||||
The undocumented ``OSXX11`` generator has also been deprecated.
|
||||
|
||||
* The :manual:`cmake(1)` command-line ``-E remove`` and ``-E remove_directory``
|
||||
tools are deprecated in favor of the new ``-E rm`` tool. The older tools
|
||||
always returned 0 if a named path did not exist even without the force
|
||||
option and cannot be fixed without breaking compatibility, and so have
|
||||
been superseded.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` now requires NSIS 3.0 or later.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The :manual:`file API <cmake-file-api(7)>` index file now emits a
|
||||
``multiConfig`` flag specifying whether or not the generator supports
|
||||
multiple output configurations.
|
||||
|
||||
* Target link properties :prop_tgt:`INTERFACE_LINK_OPTIONS`,
|
||||
:prop_tgt:`INTERFACE_LINK_DIRECTORIES` and
|
||||
:prop_tgt:`INTERFACE_LINK_DEPENDS` are now transitive over private
|
||||
dependencies on static libraries.
|
||||
See policy :policy:`CMP0099`.
|
||||
|
||||
* When using MinGW tools, the :command:`find_library` command no longer
|
||||
finds ``.dll`` files by default. Instead, it expects ``.dll.a`` import
|
||||
libraries to be available.
|
||||
|
||||
* The :generator:`MinGW Makefiles` generator no longer issues an error if
|
||||
``sh.exe`` is present in the environment's ``PATH``.
|
||||
|
||||
* The :generator:`Ninja` generator now prefers the first ninja build
|
||||
tool to appear in the ``PATH`` no matter whether it is called
|
||||
``ninja-build``, ``ninja``, or ``samu``. Previously the first
|
||||
of those names to appear anywhere in the ``PATH`` would be preferred.
|
||||
|
||||
* With SDCC the ``sdar`` tool is now preferred over ``sdcclib`` as librarian.
|
||||
The latter was deprecated by SDCC 3.2.0 and removed in SDCC 3.8.6.
|
||||
|
||||
* With SDCC the default flags no longer include any target-specific flags.
|
||||
Previously the default flags were hard-coded for 8051.
|
||||
|
||||
* The :variable:`CMAKE_VS_GLOBALS` variable value now applies during
|
||||
compiler identification and in targets created by the
|
||||
:command:`add_custom_target` command.
|
||||
|
||||
* The :generator:`Xcode` generator no longer hard-codes ``-Wmost``,
|
||||
``-Wno-four-char-constants``, and ``-Wno-unknown-pragmas`` warning flags.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.17.0 include the following.
|
||||
|
||||
3.17.1
|
||||
------
|
||||
|
||||
* CMake 3.17.0 updated the :cpack_gen:`CPack NSIS Generator` with changes
|
||||
that require NSIS 3.0 or later. CMake 3.17.1 now enforces the use
|
||||
of a sufficiently new version.
|
||||
|
||||
3.17.3
|
||||
------
|
||||
|
||||
* Selection of the Objective C or C++ compiler now considers the
|
||||
:envvar:`CC` or :envvar:`CXX` environment variable if the
|
||||
:envvar:`OBJC` or :envvar:`OBJCXX` environment variable is not set.
|
||||
|
||||
* The :module:`FindPkgConfig` module now extracts include directories
|
||||
prefixed with ``-isystem`` into the ``*_INCLUDE_DIRS`` variables and
|
||||
:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target properties.
|
||||
Previously they would be places in ``*_CFLAGS_OTHER`` variables and
|
||||
:prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
|
|
@ -0,0 +1,356 @@
|
|||
CMake 3.18 Release Notes
|
||||
************************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.17 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Languages
|
||||
---------
|
||||
|
||||
* The ``CUDA`` language can now be compiled using Clang on non-Windows
|
||||
platforms. Separable compilation is not yet supported on any platform.
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* :manual:`cmake(1)` gained support for profiling of CMake scripts through
|
||||
the parameters ``--profiling-output`` and ``--profiling-format``.
|
||||
|
||||
* :manual:`cmake(1)` gained a ``cat`` command line
|
||||
option that can be used to concatenate files and print them
|
||||
on standard output.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_library` and :command:`add_executable` commands
|
||||
learned to create :ref:`Alias Targets` referencing non-``GLOBAL``
|
||||
:ref:`Imported Targets`.
|
||||
|
||||
* The :command:`cmake_language()` command was added for meta-operations on
|
||||
scripted or built-in commands, starting with a mode to ``CALL`` other
|
||||
commands, and ``EVAL CODE`` to inplace evaluate a CMake script.
|
||||
|
||||
* The :command:`execute_process` command gained the ``ECHO_OUTPUT_VARIABLE``
|
||||
and ``ECHO_ERROR_VARIABLE`` options.
|
||||
|
||||
* The :command:`export` command now raise an error if used multiple times with
|
||||
same ``FILE`` without ``APPEND``. See policy :policy:`CMP0103`.
|
||||
|
||||
* The :command:`file` command gained the ``ARCHIVE_CREATE`` and
|
||||
``ARCHIVE_EXTRACT`` subcommands to expose the :manual:`cmake(1)` ``-E tar``
|
||||
functionality to CMake scripting code.
|
||||
|
||||
* The :command:`file(CONFIGURE)` subcommand was created in order to replicate
|
||||
the :command:`configure_file` functionality without resorting to a
|
||||
pre-existing file on disk as input. The content is instead passed as a
|
||||
string.
|
||||
|
||||
* The :command:`file(UPLOAD)` command gained ``TLS_VERIFY`` and ``TLS_CAINFO``
|
||||
options to control server certificate verification.
|
||||
|
||||
* The :command:`find_program`, :command:`find_library`, :command:`find_path`
|
||||
and :command:`find_file` commands gained a new ``REQUIRED`` option that will
|
||||
stop processing with an error message if nothing is found.
|
||||
|
||||
* The :command:`get_property` command with ``SOURCE`` scope gained the
|
||||
``DIRECTORY`` and ``TARGET_DIRECTORY`` options to get a property
|
||||
from the provided directory scope.
|
||||
|
||||
* The :command:`get_source_file_property` command gained the ``DIRECTORY``
|
||||
and ``TARGET_DIRECTORY`` options to get a property from the
|
||||
provided directory scope.
|
||||
|
||||
* The :command:`list` operation ``SORT`` gained the ``NATURAL`` sort
|
||||
option to sort using natural order (see ``strverscmp(3)`` manual).
|
||||
|
||||
* The :command:`set_property` command with the ``SOURCE`` scope gained the
|
||||
``DIRECTORY`` and ``TARGET_DIRECTORY`` options to set properties
|
||||
in the provided directory scopes.
|
||||
|
||||
* The :command:`set_source_files_properties` command gained the ``DIRECTORY``
|
||||
and ``TARGET_DIRECTORY`` options to set properties in the provided
|
||||
directory scopes.
|
||||
|
||||
* The :command:`string` command learned a new ``HEX`` sub-command, which
|
||||
converts strings into their hexadecimal representation.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_CUDA_ARCHITECTURES` variable was added to specify
|
||||
CUDA output architectures. Users are encouraged to use this instead of
|
||||
specifying options manually, as this approach is compiler-agnostic.
|
||||
The variable is initialized automatically when
|
||||
:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``.
|
||||
The variable is used to initialize the new :prop_tgt:`CUDA_ARCHITECTURES`
|
||||
target property. See policy :policy:`CMP0104`.
|
||||
|
||||
* The :variable:`CMAKE_PCH_WARN_INVALID` variable was added to initialize the
|
||||
:prop_tgt:`PCH_WARN_INVALID` target property to allow the removal of the
|
||||
precompiled header invalid warning.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`CUDA_ARCHITECTURES` target property was added to specify
|
||||
CUDA output architectures. Users are encouraged to use this instead of
|
||||
specifying options manually, as this approach is compiler-agnostic.
|
||||
The property is initialized by the new :variable:`CMAKE_CUDA_ARCHITECTURES`
|
||||
variable. See policy :policy:`CMP0104`.
|
||||
|
||||
* The :prop_tgt:`Fortran_PREPROCESS` target property and
|
||||
:prop_sf:`Fortran_PREPROCESS` source-file property were added to
|
||||
control preprocessing of Fortran source files.
|
||||
|
||||
* The :prop_tgt:`FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>` target property
|
||||
and associated :variable:`CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>`
|
||||
variable were created to allow adding a postfix to the name of a
|
||||
framework file name when using a multi-config generator.
|
||||
|
||||
* The :prop_sf:`OBJECT_OUTPUTS` source file property now supports
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :prop_tgt:`PCH_WARN_INVALID` target property was added to allow the
|
||||
removal of the precompiled header invalid warning.
|
||||
|
||||
* The :prop_tgt:`UNITY_BUILD_MODE` target property was added to tell
|
||||
generators which algorithm to use for grouping included source
|
||||
files.
|
||||
|
||||
* The :prop_tgt:`VS_SOURCE_SETTINGS_<tool>` target property was added
|
||||
to tell :ref:`Visual Studio Generators` for VS 2010 and above to add
|
||||
metadata to non-built source files using ``<tool>``.
|
||||
|
||||
* The :prop_sf:`VS_SETTINGS` source file property was added to tell
|
||||
:ref:`Visual Studio Generators` for VS 2010 and above to add
|
||||
metadata to a non-built source file.
|
||||
|
||||
* The :prop_tgt:`VS_PLATFORM_TOOLSET` target property was added to tell
|
||||
:ref:`Visual Studio Generators` for VS 2010 and above to override
|
||||
the platform toolset.
|
||||
|
||||
* The :prop_tgt:`VS_SOLUTION_DEPLOY` target property was added to tell
|
||||
:ref:`Visual Studio Generators` for VS 2010 and above to mark a
|
||||
target for deployment even when not building for Windows Phone/Store/CE.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`CheckLinkerFlag` module has been added to provide a
|
||||
facility to check validity of link flags.
|
||||
|
||||
* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
|
||||
gained a new ``GIT_REMOTE_UPDATE_STRATEGY`` keyword. This can be used to
|
||||
specify how failed rebase operations during a git update should be handled.
|
||||
The ``CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY`` variable was also added as a
|
||||
global default and is honored by both the :module:`ExternalProject` and
|
||||
:module:`FetchContent` modules.
|
||||
|
||||
* The :module:`FetchContent` module :command:`FetchContent_Declare` command
|
||||
now supports a ``SOURCE_SUBDIR`` option. It can be used to direct
|
||||
:command:`FetchContent_MakeAvailable` to look in a different location
|
||||
for the ``CMakeLists.txt`` file.
|
||||
|
||||
* The :module:`FindBLAS` module now provides an imported target.
|
||||
|
||||
* The :module:`FindCUDAToolkit` module:
|
||||
|
||||
* gained the variable
|
||||
``CUDAToolkit_LIBRARY_ROOT``, which is the directory containing the
|
||||
``nvvm`` directory and ``version.txt``.
|
||||
|
||||
* uses toolkit and library root found during ``CUDA`` compiler detection.
|
||||
|
||||
* The :module:`FindLAPACK` module now provides an imported target.
|
||||
|
||||
* The :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
|
||||
modules:
|
||||
|
||||
* gained the possibility to create per-artifact cache variables for
|
||||
interactive editing in :manual:`cmake-gui(1)` and :manual:`ccmake(1)`.
|
||||
|
||||
* gained sub-components ``Development.Module`` and
|
||||
``Development.Embed`` under the ``Development`` component.
|
||||
|
||||
* gained the capability to specify which Python implementations to find,
|
||||
including ``IronPython`` and ``PyPy``.
|
||||
|
||||
* The :module:`FindRuby` module input and output variables were all renamed
|
||||
from ``RUBY_`` to ``Ruby_`` for consistency with other find modules.
|
||||
Input variables of the old case will be honored if provided, and output
|
||||
variables of the old case are always provided.
|
||||
|
||||
* The :module:`FindSWIG` module now accepts target languages as ``COMPONENTS``
|
||||
and ``OPTIONAL_COMPONENTS`` arguments to ``find_package``.
|
||||
|
||||
* The :module:`GoogleTest` module :command:`gtest_discover_tests` command:
|
||||
|
||||
* gained a new ``DISCOVERY_MODE`` option to control when the test
|
||||
discovery step is run. It offers a new ``PRE_TEST`` setting to
|
||||
run the discovery at test time instead of build time. A new
|
||||
``CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE`` variable can be used
|
||||
to change the default globally.
|
||||
|
||||
* gained a new optional parameter ``XML_OUTPUT_DIR``. When set the
|
||||
JUnit XML test results are stored in that directory.
|
||||
|
||||
* The :module:`FindLibXslt` module now provides imported targets.
|
||||
|
||||
* The :module:`UseSWIG` module now supports Fortran as a target language if
|
||||
the ``SWIG_EXECUTABLE`` is SWIG-Fortran_.
|
||||
|
||||
.. _`SWIG-Fortran`: https://github.com/swig-fortran/swig
|
||||
|
||||
Generator Expressions
|
||||
---------------------
|
||||
|
||||
* The ``$<DEVICE_LINK:...>`` and ``$<HOST_LINK:...>``
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>` were added
|
||||
to manage device and host link steps.
|
||||
|
||||
* The ``$<LINK_LANGUAGE:...>`` and ``$<LINK_LANG_AND_ID:...>``
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>` were added.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* :manual:`ctest(1)` gained a new :variable:`CTEST_RESOURCE_SPEC_FILE`
|
||||
variable, which can be used to specify a
|
||||
:ref:`resource specification file <ctest-resource-specification-file>`.
|
||||
|
||||
* :manual:`ctest(1)` gained a ``--stop-on-failure`` option,
|
||||
which can be used to stop running the tests once one has failed.
|
||||
|
||||
* The :command:`ctest_test` command gained a ``STOP_ON_FAILURE`` option
|
||||
which can be used to stop running the tests once one has failed.
|
||||
|
||||
* The :module:`CTestCoverageCollectGCOV` module
|
||||
:command:`ctest_coverage_collect_gcov` command gained a
|
||||
``TARBALL_COMPRESSION`` option to control compression of the
|
||||
tarball of collected results.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack Archive Generator`'s ``TXZ`` format learned the
|
||||
:variable:`CPACK_ARCHIVE_THREADS` variable to enable parallel compression.
|
||||
Requires support in the ``liblzma`` used by CMake.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` gained a new variable
|
||||
:variable:`CPACK_NSIS_MANIFEST_DPI_AWARE` to declare that the
|
||||
installer is DPI-aware.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` gained
|
||||
:variable:`CPACK_RPM_PRE_TRANS_SCRIPT_FILE` and
|
||||
:variable:`CPACK_RPM_POST_TRANS_SCRIPT_FILE`
|
||||
variables to specify pre- and post-transaction scripts.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* :manual:`cmake-gui(1)` now populates its generator selection
|
||||
widget default value from the :envvar:`CMAKE_GENERATOR` environment
|
||||
variable. Additionally, environment variables
|
||||
:envvar:`CMAKE_GENERATOR_PLATFORM` and :envvar:`CMAKE_GENERATOR_TOOLSET`
|
||||
are used to populate their respective widget defaults.
|
||||
|
||||
* :manual:`ccmake(1)` learned to read a :envvar:`CCMAKE_COLORS`
|
||||
environment variable to customize colors.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of the availability of C11 features in MSVC 19.27 and above,
|
||||
including support for the ``c_restrict`` feature and the ``-std:c11`` flag.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* The :module:`Documentation` module has been deprecated via
|
||||
:policy:`CMP0106`. This module was essentially VTK code that CMake should
|
||||
not be shipping anymore.
|
||||
|
||||
* An explicit deprecation diagnostic was added for policy ``CMP0070``
|
||||
and policy ``CMP0071`` (``CMP0069`` and below were already deprecated).
|
||||
The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
|
||||
of all policies are deprecated and that projects should port to the
|
||||
NEW behaviors.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* On Windows, the :generator:`Ninja` and :generator:`Ninja Multi-Config`
|
||||
generators, when a compiler is not explicitly specified, now select
|
||||
the first compiler (of any name) found in directories listed by the
|
||||
``PATH`` environment variable.
|
||||
|
||||
* The :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target
|
||||
properties are now used for the device link step.
|
||||
See policy :policy:`CMP0105`.
|
||||
|
||||
* Creation of an ``ALIAS`` target overwriting an existing target now raises an
|
||||
error. See policy :policy:`CMP0107`.
|
||||
|
||||
* Linking a target to itself through an alias now raises an error.
|
||||
See policy :policy:`CMP0108`.
|
||||
|
||||
* The :module:`FindPackageHandleStandardArgs` module option ``REQUIRED_VARS``
|
||||
is now optional if ``HANDLE_COMPONENTS`` is specified.
|
||||
|
||||
* The :command:`source_group` command now also recognizes forward slashes
|
||||
as subgroup delimiters, not just backslashes.
|
||||
|
||||
* :manual:`ctest(1)` now logs environment variables that it sets for each test,
|
||||
either due to the :prop_test:`ENVIRONMENT` property or the
|
||||
:ref:`resource allocation <ctest-resource-allocation>` feature, and submits
|
||||
this log to CDash. It does not log environment variables that were set
|
||||
outside of CTest.
|
||||
|
||||
* When building CMake itself from source and not using a system-provided
|
||||
libcurl, HTTP/2 support is now enabled for commands supporting
|
||||
network communication via ``http(s)``, such as :command:`file(DOWNLOAD)`,
|
||||
:command:`file(UPLOAD)`, and :command:`ctest_submit`.
|
||||
The precompiled binaries provided on ``cmake.org`` now support HTTP/2.
|
||||
|
||||
* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
|
||||
been updated to 2.1.
|
||||
|
||||
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
|
||||
a new ``precompileHeaders`` field in the ``compileGroups`` objects.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.18.0 include the following.
|
||||
|
||||
3.18.1
|
||||
------
|
||||
|
||||
* The :generator:`Xcode` generator, when :variable:`CMAKE_OSX_ARCHITECTURES`
|
||||
is not defined, now selects ``$(NATIVE_ARCH_ACTUAL)`` as the default
|
||||
architecture (the Xcode ``ARCHS`` setting). This is needed for Xcode 12
|
||||
to select the host's architecture, which older versions of Xcode did
|
||||
by default.
|
||||
|
||||
* In CMake 3.18.0 the :command:`add_test` command learned to support
|
||||
special characters in test names. This was accidentally left out of
|
||||
its release notes. Unfortunately the fix breaks existing projects
|
||||
that were using manual quoting or escaping to work around the prior
|
||||
limitation. This fix has been reverted in 3.18.1, but may be
|
||||
re-introduced in future versions of CMake with a policy for compatibility.
|
||||
|
||||
3.18.2
|
||||
------
|
||||
|
||||
* The default value of :variable:`CMAKE_AUTOMOC_PATH_PREFIX` was changed to
|
||||
``OFF`` because this feature can break existing projects that have
|
||||
identically named header files in different include directories.
|
||||
This restores compatibility with behavior of CMake 3.15 and below.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
was updated for MSVC 19.27 as mentioned above.
|
|
@ -0,0 +1,277 @@
|
|||
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 <CMake Language Encoding>`
|
||||
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 <JOB_POOLS>`. 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 <Target 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 <ExternalData 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.
|
||||
|
||||
* The :module:`FindLATEX` module learned to support components.
|
||||
|
||||
* The :module:`FindMPI` module learned to find MS-MPI on Windows.
|
||||
|
||||
* 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 :cpack_gen:`CPack RPM Generator` learned options to set per-component
|
||||
descriptions and summaries. See the
|
||||
:variable:`CPACK_RPM_<component>_PACKAGE_DESCRIPTION` and
|
||||
:variable:`CPACK_RPM_<component>_PACKAGE_SUMMARY` variables.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` 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 :cpack_gen:`CPack RPM Generator` 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 :cpack_gen:`CPack RPM Generator` learned a new
|
||||
:variable:`CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX` variable to
|
||||
specify a component-specific value to use instead of
|
||||
:variable:`CPACK_PACKAGING_INSTALL_PREFIX`.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` 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=<file>`` 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=<date>`` option to specify the modification time
|
||||
recorded in tarball entries.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` 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 :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 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.
|
|
@ -0,0 +1,287 @@
|
|||
CMake 3.3 Release Notes
|
||||
***********************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.2 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :ref:`Makefile Generators` now add ``.DELETE_ON_ERROR`` to the
|
||||
makefiles that contain the actual build rules for files on disk.
|
||||
This tells GNU make to remove rule outputs when their recipe
|
||||
modifies an output but fails.
|
||||
|
||||
* The :ref:`Visual Studio Generators` learned to support ``.xaml``
|
||||
source files and automatically associate them with corresponding
|
||||
``.h`` and ``.cpp`` sources.
|
||||
|
||||
* A new experimental :generator:`Green Hills MULTI` generator was
|
||||
added on Windows. `Green Hills MULTI`_ is an IDE for embedded
|
||||
real-time systems.
|
||||
|
||||
.. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_dependencies` command learned to allow dependencies
|
||||
to be added to :ref:`interface libraries <Interface Libraries>`.
|
||||
Dependencies added to an interface library are followed transitively
|
||||
in its place since the target itself does not build.
|
||||
|
||||
* The :command:`execute_process` command learned to support specifying
|
||||
the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``.
|
||||
|
||||
* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands
|
||||
learned a new ``LIST_DIRECTORIES <bool>`` option to specify whether
|
||||
the glob result should include directories.
|
||||
|
||||
* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
|
||||
commands now search in installation prefixes derived from the ``PATH``
|
||||
environment variable.
|
||||
|
||||
* The :command:`if` command learned a new ``IN_LIST`` operator that
|
||||
evaluates to true if a given element is contained in a named list.
|
||||
|
||||
* The :command:`install(EXPORT)` and :command:`export()` commands
|
||||
learned to export targets that populate the :prop_tgt:`INTERFACE_SOURCES`
|
||||
target property.
|
||||
|
||||
* The :command:`install(TARGETS)` command learned to support
|
||||
generator expressions in the ``DESTINATION`` value.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* The version of some Fortran compilers is now detected and stored in the
|
||||
:variable:`CMAKE_Fortran_COMPILER_VERSION <CMAKE_<LANG>_COMPILER_VERSION>`
|
||||
variable.
|
||||
|
||||
* The :ref:`Visual Studio Generators` learned a new
|
||||
:variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option
|
||||
to put the ``INSTALL`` target in the default build of a
|
||||
solution (``.sln``) file.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting
|
||||
:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced
|
||||
to allow target platform binaries to run on the host during cross
|
||||
compiling.
|
||||
|
||||
* A :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property and supporting
|
||||
:variable:`CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable were introduced
|
||||
to tell the :ref:`Makefile Generators` and the :generator:`Ninja` generator
|
||||
to run ``include-what-you-use`` along with the compiler for ``C`` and
|
||||
``CXX`` languages.
|
||||
|
||||
* The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and
|
||||
:prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now
|
||||
affect compilation in sources of all target types. See
|
||||
policy :policy:`CMP0063`.
|
||||
|
||||
* The :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property learned
|
||||
to support generator expressions.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`CheckFortranCompilerFlag` module was introduced
|
||||
to check ``Fortran`` compiler flags, much like the
|
||||
:module:`CheckCCompilerFlag` module already does for ``C``.
|
||||
|
||||
* The :module:`ExternalData` module learned a new
|
||||
:variable:`ExternalData_NO_SYMLINKS` option to disable use of
|
||||
symbolic links to populate the real data files and use copies
|
||||
instead.
|
||||
|
||||
* The :module:`ExternalData` module learned a new ``RECURSE:``
|
||||
option in ``DATA{}`` references specifying directories.
|
||||
This allows an entire directory tree of associated files
|
||||
to be matched.
|
||||
|
||||
* The :module:`ExternalData` module learned a new URL template
|
||||
placeholder ``%(algo:<key>)`` to allow custom mapping from
|
||||
algorithm name to URL component through configuration of new
|
||||
:variable:`ExternalData_URL_ALGO_<algo>_<key>` variables.
|
||||
This allows more flexibility in remote URLs.
|
||||
|
||||
* The :module:`ExternalProject` module learned to replace tokens
|
||||
like ``<BINARY_DIR>`` in the ``BYPRODUCTS`` of each step.
|
||||
|
||||
* The :module:`ExternalProject` module APIs learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`
|
||||
when using ``LOG_*`` options and in CMake initial cache options.
|
||||
|
||||
* The :module:`FindBoost` module now tracks the directories containing
|
||||
libraries separately for RELEASE and DEBUG configurations.
|
||||
|
||||
* The :module:`FindCUDA` module now defaults to using the static
|
||||
CUDA runtime library if it is available. A new
|
||||
``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control
|
||||
this behavior.
|
||||
|
||||
* The :module:`FindMatlab` module was completely rewritten. It learned
|
||||
about versions and components and to find Matlab in a more precise and
|
||||
multiplatform way. The module now offers APIs to create mex extensions,
|
||||
documentation, and unit tests.
|
||||
|
||||
* The :module:`FindPackageHandleStandardArgs` module
|
||||
``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now
|
||||
always populates both the ``<PackageName>_FOUND``
|
||||
and ``<UPPERCASE_NAME>_FOUND`` variables (the latter
|
||||
for backwards compatibility). The ``FOUND_VAR``
|
||||
option is now ignored except to enforce its allowed
|
||||
values.
|
||||
|
||||
* The :module:`InstallRequiredSystemLibraries` module learned a new
|
||||
``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the
|
||||
installation component.
|
||||
|
||||
Generator Expressions
|
||||
---------------------
|
||||
|
||||
* A new ``COMPILE_LANGUAGE`` generator expression was introduced to
|
||||
allow specification of compile options for target files based on the
|
||||
:prop_sf:`LANGUAGE` of each source file. Due to limitations of the
|
||||
underlying native build tools, this feature has varying support across
|
||||
generators. See the :manual:`cmake-generator-expressions(7)` manual
|
||||
for details.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail <n>``
|
||||
option to help find sporadic test failures.
|
||||
|
||||
* The :module:`CTestCoverageCollectGCOV` module learned to support
|
||||
the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the
|
||||
:command:`ctest_coverage` command.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack IFW Generator` learned to support
|
||||
Qt Framework Installer 2.0 tools.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned a new
|
||||
:variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`
|
||||
variable to specify per-component use of ``dpkg-shlibdeps``.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned a new
|
||||
:variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS`
|
||||
option to specify per-component dependencies.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to package symbolic links
|
||||
more cleanly and now supports directory symlinks with recent
|
||||
``rpmbuild`` versions.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned a new
|
||||
:variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify
|
||||
directories containing man pages for the brp-compress RPM macro.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned a new
|
||||
:variable:`CPACK_RPM_<component>_PACKAGE_ARCHITECTURE` variable
|
||||
to specify a component-specific package architecture.
|
||||
|
||||
* The CPack WIX generator learned the new
|
||||
:prop_inst:`CPACK_START_MENU_SHORTCUTS`,
|
||||
:prop_inst:`CPACK_DESKTOP_SHORTCUTS` and
|
||||
:prop_inst:`CPACK_STARTUP_SHORTCUTS` installed file properties which can
|
||||
be used to install shorcuts in the Start Menu, on the Desktop and
|
||||
in the Startup Folder respectively.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of features supported by GNU compilers on Windows, versions
|
||||
4.4 through 5.0.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E tar`` command learned a new
|
||||
``--format<format>`` option to specify the archive format to
|
||||
be written.
|
||||
|
||||
* On OS X, CMake learned to create XCTest bundles to test Frameworks
|
||||
and App Bundles within Xcode. The :module:`FindXCTest` module
|
||||
provides convenience functions to handle :prop_tgt:`XCTEST` bundles.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* On OS X the :manual:`cmake-gui(1)` no longer has the
|
||||
``Install For Command Line Use`` menu item. Instead there
|
||||
is a ``How to Install For Command Line Use`` menu item
|
||||
that shows an informational dialog box explaining how to
|
||||
make the command line tools available. For example::
|
||||
|
||||
/Applications/CMake.app/Contents/bin/cmake-gui --install
|
||||
|
||||
* The :command:`ctest_build` and :command:`build_command` commands
|
||||
no longer tell ``make`` tools to ignore errors with the ``-i`` option.
|
||||
Previously this was done for :ref:`Makefile Generators` but not others.
|
||||
See policy :policy:`CMP0061`.
|
||||
|
||||
* The :generator:`Visual Studio 10 2010` generator no longer checks
|
||||
for running VS IDEs with the project open or asks them to reload.
|
||||
This was originally done for VS 10 because it had been done for
|
||||
VS 7 through 9 to avoid prompting for every project in a solution.
|
||||
Since VS >= 10 allow the whole solution to reload at once they
|
||||
do not need CMake to help them.
|
||||
|
||||
* The :generator:`Visual Studio 7` generator (.NET 2002) is now
|
||||
deprecated and will be removed in a future version of CMake.
|
||||
|
||||
* The :generator:`Visual Studio 6` generator is now deprecated
|
||||
and will be removed in a future version of CMake.
|
||||
|
||||
* The :command:`find_package` command no longer considers project
|
||||
build trees recently configured in a :manual:`cmake-gui(1)`.
|
||||
This was previously done only on Windows and is now never done.
|
||||
The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given
|
||||
and effectively always on.
|
||||
Projects may populate the :ref:`User Package Registry` to aid
|
||||
users building multiple dependent projects one after another.
|
||||
|
||||
* The :command:`add_definitions()` command no longer causes a
|
||||
:prop_dir:`DEFINITIONS` directory property to be populated. See policy
|
||||
:policy:`CMP0059`.
|
||||
|
||||
* With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)``
|
||||
placeholder no longer evaluates to the configuration name. Projects
|
||||
should use ``$(ConfigurationName)`` for that instead.
|
||||
|
||||
* Using the output of :command:`export()` with the :command:`install(FILES)`
|
||||
command is no longer allowed. See policy :policy:`CMP0062` for details.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The :generator:`Ninja` generator now requires that calls to the
|
||||
:command:`add_custom_command` and :command:`add_custom_target`
|
||||
commands use the ``BYPRODUCTS`` option to explicitly specify any
|
||||
files generated by the custom commands that are not listed as
|
||||
outputs (perhaps because their timestamps are allowed to be older
|
||||
than the inputs). See policy :policy:`CMP0058`.
|
||||
|
||||
* Build-time progress output of :ref:`Makefile Generators` has been improved.
|
||||
It no longer mixes progress and build rule messages during parallel builds.
|
||||
The link rule messages now have progress and are displayed as bold green
|
||||
instead of bold red (since red is often associated with an error message).
|
||||
|
||||
* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio
|
||||
7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``.
|
||||
This should have no effect on the intended use cases of the variable.
|
||||
|
||||
* Linking to library files by a full path in an implicit linker search
|
||||
directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to
|
||||
search for the library (e.g. ``-lfoo``) and now links by full path.
|
||||
See policy :policy:`CMP0060`.
|
|
@ -0,0 +1,273 @@
|
|||
CMake 3.4 Release Notes
|
||||
***********************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.3 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :generator:`Visual Studio 14 2015` generator learned to select
|
||||
a Windows 10 SDK based on the value of the :variable:`CMAKE_SYSTEM_VERSION`
|
||||
variable and the SDKs available on the host.
|
||||
|
||||
* CMake learned rudimentary support for the Apple Swift language. When using
|
||||
the :generator:`Xcode` generator with Xcode 6.1 or higher, one may enable
|
||||
the ``Swift`` language with the :command:`enable_language` command or the
|
||||
:command:`project` command (this is an error with other generators or when
|
||||
Xcode is too old). Then one may list ``.swift`` source files in targets
|
||||
for compilation.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`find_program` command learned a ``NAMES_PER_DIR``
|
||||
option to consider all given ``NAMES`` in each directory before
|
||||
moving on to the next directory.
|
||||
|
||||
* The :command:`get_filename_component` command learned a new ``BASE_DIR``
|
||||
subcommand. This is used to specify a base directory when calculating an
|
||||
absolute path from a relative path.
|
||||
|
||||
* The :command:`if` command learned a new ``TEST`` operator that evaluates
|
||||
to true if a given test name has been defined by the :command:`add_test`
|
||||
command. See policy :policy:`CMP0064`.
|
||||
|
||||
* The :command:`install(DIRECTORY)` command ``DESTINATION`` option learned to
|
||||
support :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :command:`install(FILES)` command ``DESTINATION`` option learned to
|
||||
support :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :command:`string` command learned a new ``APPEND`` subcommand.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* The :ref:`Makefile Generators` and the :generator:`Ninja` generator
|
||||
learned to add compiler launcher tools like distcc and ccache along
|
||||
with the compiler for ``C`` and ``CXX`` languages. See the
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
|
||||
:prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.
|
||||
|
||||
* New :variable:`CMAKE_LINK_SEARCH_START_STATIC` and
|
||||
:variable:`CMAKE_LINK_SEARCH_END_STATIC` variables were
|
||||
introduced to initialize the
|
||||
:prop_tgt:`LINK_SEARCH_START_STATIC` and
|
||||
:prop_tgt:`LINK_SEARCH_END_STATIC` target properties,
|
||||
respectively.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* :ref:`Visual Studio Generators` learned to support additional
|
||||
target properties to customize projects for NVIDIA Nsight
|
||||
Tegra Visual Studio Edition:
|
||||
|
||||
* :prop_tgt:`ANDROID_ANT_ADDITIONAL_OPTIONS`
|
||||
* :prop_tgt:`ANDROID_ARCH`
|
||||
* :prop_tgt:`ANDROID_ASSETS_DIRECTORIES`
|
||||
* :prop_tgt:`ANDROID_JAR_DEPENDENCIES`
|
||||
* :prop_tgt:`ANDROID_JAR_DIRECTORIES`
|
||||
* :prop_tgt:`ANDROID_JAVA_SOURCE_DIR`
|
||||
* :prop_tgt:`ANDROID_NATIVE_LIB_DEPENDENCIES`
|
||||
* :prop_tgt:`ANDROID_NATIVE_LIB_DIRECTORIES`
|
||||
* :prop_tgt:`ANDROID_PROCESS_MAX`
|
||||
* :prop_tgt:`ANDROID_PROGUARD`
|
||||
* :prop_tgt:`ANDROID_PROGUARD_CONFIG_PATH`
|
||||
* :prop_tgt:`ANDROID_SECURE_PROPS_PATH`
|
||||
* :prop_tgt:`ANDROID_SKIP_ANT_STEP`
|
||||
* :prop_tgt:`ANDROID_STL_TYPE`
|
||||
|
||||
* The :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY`,
|
||||
:prop_tgt:`LIBRARY_OUTPUT_DIRECTORY`, and
|
||||
:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target properties learned to
|
||||
support :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :prop_tgt:`SOURCE_DIR` and :prop_tgt:`BINARY_DIR` target properties
|
||||
were introduced to allow project code to query where a target is defined.
|
||||
|
||||
* The :prop_tgt:`OUTPUT_NAME` target property and its variants learned to
|
||||
support :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* A :prop_gbl:`TARGET_MESSAGES` global property was added to tell the
|
||||
:ref:`Makefile Generators` whether to generate commands to print output
|
||||
after each target is completed.
|
||||
|
||||
* On Windows with MS-compatible tools, CMake learned to optionally
|
||||
generate a module definition (``.def``) file for ``SHARED`` libraries.
|
||||
See the :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`ExternalProject` module :command:`ExternalProject_Add`
|
||||
function ``GIT_SUBMODULES`` option now also limits the set of
|
||||
submodules that are initialized in addition to the prior behavior
|
||||
of limiting the set of submodules that are updated.
|
||||
|
||||
* The :module:`ExternalProject` module learned new ``USES_TERMINAL``
|
||||
arguments for giving steps exclusive terminal access. This is
|
||||
useful with the :generator:`Ninja` generator to monitor CMake
|
||||
superbuild progress and prevent CPU oversubscription.
|
||||
|
||||
* The :module:`FindBISON` module ``BISON_TARGET`` macro learned a
|
||||
new ``DEFINES_FILE`` option to specify a custom output header
|
||||
to be generated.
|
||||
|
||||
* The :module:`FindHDF5` module learend a new ``HDF5_PREFER_PARALLEL``
|
||||
option allowing users to specify that a parallel HDF5 tool is
|
||||
preferred if both are available.
|
||||
|
||||
* The :module:`FindIce` module now provides imported targets.
|
||||
|
||||
* The :module:`FindJava` module learned to optionally find
|
||||
the ``idlj`` and ``jarsigner`` tools.
|
||||
|
||||
* The :module:`FindOpenSSL` module now provides imported targets.
|
||||
|
||||
* The :module:`FindOpenSSL` module learned a new ``OPENSSL_USE_STATIC_LIBS``
|
||||
option to search only for static libraries.
|
||||
|
||||
* The :module:`FindPkgConfig` learned a new :command:`pkg_get_variable`
|
||||
command which may be used to query for arbitrary variables from a package
|
||||
(such as for related tools or data and plugin install paths).
|
||||
|
||||
* The :module:`FindProtobuf` module gained a new
|
||||
:command:`protobuf_generate_python` function to generate python
|
||||
sources from ``.proto`` files.
|
||||
|
||||
* The :module:`FindTIFF` module learned to search separately for
|
||||
debug and release variants.
|
||||
|
||||
* The :module:`FindwxWidgets` module learned to support version requests.
|
||||
|
||||
* The :module:`FindXercesC` module learned to search separately for
|
||||
debug and release variants.
|
||||
|
||||
* The :module:`FindZLIB` module learned to search separately for
|
||||
debug and release variants.
|
||||
|
||||
* The :module:`GNUInstallDirs` module learned special default values
|
||||
for certain installation prefixes according to the `GNU Coding
|
||||
Standards`_ and the `Filesystem Hierarchy Standard`_.
|
||||
|
||||
* The :module:`UseJava` module ``add_jar`` function learned
|
||||
to support response files (e.g. ``@srcs.txt``) for source
|
||||
specification.
|
||||
|
||||
* The :module:`UseJava` module ``install_jar`` function learned
|
||||
new ``DESTINATION`` and ``COMPONENT`` options to specify
|
||||
the corresponding :command:`install` command options.
|
||||
|
||||
* The :module:`UseJava` module gained a new ``create_javah``
|
||||
function to create C headers from Java classes.
|
||||
|
||||
.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
|
||||
.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
|
||||
|
||||
Generator Expressions
|
||||
---------------------
|
||||
|
||||
* A new ``$<SHELL_PATH:...>``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
has been added.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* CTest learned to optionally measure the CPU load during parallel
|
||||
testing and avoid starting tests that may cause the load to exceed
|
||||
a given threshold. See the :manual:`ctest(1)` command ``--test-load``
|
||||
option, the ``TestLoad`` setting of the :ref:`CTest Test Step`,
|
||||
the :variable:`CTEST_TEST_LOAD` variable, and the ``TEST_LOAD``
|
||||
option of the :command:`ctest_test` command.
|
||||
|
||||
* :manual:`ctest(1)` learned options
|
||||
``--test-output-size-passed`` and ``--test-output-size-failed``
|
||||
to customize the limit on test output size submitted when
|
||||
running as a :ref:`Dashboard Client`.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned to set package dependencies
|
||||
per component. See variables:
|
||||
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS`
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS`
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES`
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS`
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES`
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS`
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES`
|
||||
* :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS`
|
||||
|
||||
* The :module:`CPack` module learned to package empty directories.
|
||||
|
||||
* The :module:`CPack` module gained a new setting, ``CPACK_VERBATIM_VARIABLES``,
|
||||
which can be used to ensure the cpack program receives the settings' values
|
||||
exactly as they were set, even if they contain CMake-special characters.
|
||||
For compatibility, it's off by default.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of features supported by GNU C compilers on Windows.
|
||||
|
||||
* CMake learned to honor ``*.manifest`` source files with MSVC tools.
|
||||
Manifest files named as sources of ``.exe`` and ``.dll`` targets
|
||||
will be merged with linker-generated manifests and embedded in the
|
||||
binary.
|
||||
|
||||
* The `Concurrent Fortran 77 <https://ccur.com>`__ compiler is now supported.
|
||||
Its :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` is ``CCur``.
|
||||
|
||||
* :manual:`cmake(1)` gained a new ``--trace-expand`` command line option
|
||||
that is like ``--trace`` but expands variable references in the output.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* The :module:`CMakeExpandImportedTargets` module is now documented
|
||||
as deprecated. See module documentation for an explanation.
|
||||
|
||||
* The :variable:`CMAKE_USE_RELATIVE_PATHS` variable no longer has any
|
||||
effect. Previously it was partially implemented and unreliable.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The :module:`CheckFunctionExists`, :module:`CheckLibraryExists`,
|
||||
:module:`CheckSymbolExists`, and :module:`FindThreads` modules learned to
|
||||
work in environments where only CXX is enabled.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` now correctly excludes symlinks
|
||||
during package checksum calculation.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` no longer uses fakeroot and
|
||||
system tar program for packaging.
|
||||
|
||||
* The :module:`CPack` module no longer mangles settings with CMake-special
|
||||
characters when they're used as defaults for other settings. The macro
|
||||
``cpack_set_if_not_set``, which was responsible for this, is now deprecated.
|
||||
|
||||
* CMake no longer links executables with flags to export symbols
|
||||
unless the :prop_tgt:`ENABLE_EXPORTS` target property is set.
|
||||
See policy :policy:`CMP0065`.
|
||||
|
||||
* The ``SONAME`` field is no longer set for ``MODULE`` libraries
|
||||
created with the :command:`add_library` command. ``MODULE``
|
||||
libraries are meant for explicit dynamic loading at runtime.
|
||||
They cannot be linked so ``SONAME`` is not useful.
|
||||
|
||||
* The internal :variable:`CMAKE_<LANG>_COMPILE_OBJECT` rule variable now
|
||||
substitutes compiler include flags in a separate ``<INCLUDES>`` placeholder
|
||||
instead of the main ``<FLAGS>`` placeholder.
|
|
@ -0,0 +1,187 @@
|
|||
CMake 3.5 Release Notes
|
||||
***********************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.4 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
GUI
|
||||
---
|
||||
|
||||
* The :manual:`cmake-gui(1)` gained options to control warnings about
|
||||
deprecated functionality.
|
||||
|
||||
* The :manual:`cmake-gui(1)` learned an option to set the toolset
|
||||
to be used with VS IDE and Xcode generators, much like the
|
||||
existing ``-T`` option to :manual:`cmake(1)`.
|
||||
|
||||
* The :manual:`cmake-gui(1)` gained a Regular Expression Explorer which
|
||||
may be used to create and evaluate regular expressions in real-time.
|
||||
The explorer window is available via the ``Tools`` menu.
|
||||
|
||||
Command-Line
|
||||
------------
|
||||
|
||||
* The ``-Wdev`` and ``-Wno-dev`` :manual:`cmake(1)` options now also enable
|
||||
and suppress the deprecated warnings output by default.
|
||||
|
||||
* The suppression of developer warnings as errors can now be controlled with
|
||||
the new ``-Werror=dev`` and ``-Wno-error=dev`` :manual:`cmake(1)` options.
|
||||
|
||||
* The :manual:`cmake(1)` ``-E`` command-line tools ``copy``,
|
||||
``copy_if_different``, ``copy_directory``, and ``make_directory``
|
||||
learned to support multiple input files or directories.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`cmake_parse_arguments` command is now implemented natively.
|
||||
The :module:`CMakeParseArguments` module remains as an empty placeholder
|
||||
for compatibility.
|
||||
|
||||
* The :command:`install(DIRECTORY)` command learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`
|
||||
in the list of directories.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* The :variable:`CMAKE_ERROR_DEPRECATED` variable can now be set using the
|
||||
``-Werror=deprecated`` and ``-Wno-error=deprecated`` :manual:`cmake(1)`
|
||||
options.
|
||||
|
||||
* The :variable:`CMAKE_WARN_DEPRECATED` variable can now be set using the
|
||||
``-Wdeprecated`` and ``-Wno-deprecated`` :manual:`cmake(1)` options.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* The :prop_tgt:`VS_GLOBAL_<variable>` target property is now implemented
|
||||
for VS 2010 and above. Previously it worked only in VS 2008 and below.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`ExternalProject` module learned a new ``GIT_REMOTE_NAME``
|
||||
option to control the ``git clone --origin`` value.
|
||||
|
||||
* The :module:`FindBoost` module now provides imported targets
|
||||
such as ``Boost::boost`` and ``Boost::filesystem``.
|
||||
|
||||
* The :module:`FindFLEX` module ``FLEX_TARGET`` macro learned a
|
||||
new ``DEFINES_FILE`` option to specify a custom output header
|
||||
to be generated.
|
||||
|
||||
* The :module:`FindGTest` module now provides imported targets.
|
||||
|
||||
* The :module:`FindGTK2` module, when ``GTK2_USE_IMPORTED_TARGETS`` is
|
||||
enabled, now sets ``GTK2_LIBRARIES`` to contain the list of imported
|
||||
targets instead of the paths to the libraries. Moreover it now sets
|
||||
a new ``GTK2_TARGETS`` variable containing all the targets imported.
|
||||
|
||||
* The :module:`FindOpenMP` module learned to support Clang.
|
||||
|
||||
* The :module:`FindOpenSSL` module gained a new
|
||||
``OPENSSL_MSVC_STATIC_RT`` option to search for libraries using
|
||||
the MSVC static runtime.
|
||||
|
||||
* The :module:`FindPNG` module now provides imported targets.
|
||||
|
||||
* The :module:`FindTIFF` module now provides imported targets.
|
||||
|
||||
* A :module:`FindXalanC` module was introduced to find the
|
||||
Apache Xalan-C++ XSL transform processing library.
|
||||
|
||||
* The :module:`FindXercesC` module now provides imported targets.
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* Support was added for the ARM Compiler (arm.com) with compiler id ``ARMCC``.
|
||||
|
||||
* A new platform file for cross-compiling in the Cray Linux Environment to
|
||||
target compute nodes was added. See
|
||||
:ref:`Cross Compiling for the Cray Linux Environment <Cray Cross-Compile>`
|
||||
for usage details.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of features supported by Clang compilers on Windows (MinGW).
|
||||
|
||||
* When building for embedded Apple platforms like iOS CMake learned to build and
|
||||
install combined targets which contain both a device and a simulator build.
|
||||
This behavior can be enabled by setting the :prop_tgt:`IOS_INSTALL_COMBINED`
|
||||
target property.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack DragNDrop Generator` learned new variable to
|
||||
specify AppleScript file run to customize appearance of ``DragNDrop``
|
||||
installer folder, including background image setting using supplied
|
||||
PNG or multi-resolution TIFF file.
|
||||
See the :variable:`CPACK_DMG_DS_STORE_SETUP_SCRIPT` and
|
||||
:variable:`CPACK_DMG_BACKGROUND_IMAGE` variables.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned to set the optional config
|
||||
file ``Source`` field using a monolithic or per-component variable.
|
||||
See :variable:`CPACK_DEBIAN_PACKAGE_SOURCE`.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned to set Package, Section
|
||||
and Priority control fields per-component.
|
||||
See variables :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION` and
|
||||
:variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY`.
|
||||
|
||||
* The :cpack_gen:`CPack DragNDrop Generator` learned to add
|
||||
multi-lingual SLAs to a DMG which is presented to the user when they try to
|
||||
mount the DMG. See the :variable:`CPACK_DMG_SLA_LANGUAGES` and
|
||||
:variable:`CPACK_DMG_SLA_DIR` variables for details.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` learned new variables to
|
||||
add bitmaps to the installer.
|
||||
See the :variable:`CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP`
|
||||
and :variable:`CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP` variables.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to set Name and Group
|
||||
control fields per-component.
|
||||
See :variable:`CPACK_RPM_<component>_PACKAGE_NAME`
|
||||
and :variable:`CPACK_RPM_<component>_PACKAGE_GROUP`.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* Warnings about deprecated functionality are now enabled by default.
|
||||
They may be suppressed with ``-Wno-deprecated`` or by setting the
|
||||
:variable:`CMAKE_WARN_DEPRECATED` variable to false.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* The :manual:`cmake(1)` ``-E time`` command now properly passes arguments
|
||||
with spaces or special characters through to the child process. This
|
||||
may break scripts that worked around the bug with their own extra
|
||||
quoting or escaping.
|
||||
|
||||
* The :generator:`Xcode` generator was fixed to escape backslashes in
|
||||
strings consistently with other generators. Projects that previously
|
||||
worked around the inconsistecy with an extra level of backslashes
|
||||
conditioned on the Xcode generator must be updated to remove the
|
||||
workaround for CMake 3.5 and greater.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The :generator:`Visual Studio 14 2015` generator learned to map the
|
||||
``/debug:fastlink`` linker flag to the ``.vcxproj`` file property.
|
||||
|
||||
* The :module:`FindGTK2` module now configures the ``GTK2::sigc++`` imported
|
||||
target to enable c++11 on its dependents when using sigc++ 2.5.1 or higher.
|
||||
|
||||
* The precompiled Windows binary provided on ``cmake.org`` is now a
|
||||
``.msi`` package instead of an installer executable. One may need
|
||||
to manually uninstall CMake versions lower than 3.5 before installing
|
||||
the new package.
|
|
@ -0,0 +1,318 @@
|
|||
CMake 3.6 Release Notes
|
||||
***********************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.5 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :generator:`Ninja` generator learned to produce phony targets
|
||||
of the form ``sub/dir/all`` to drive the build of a subdirectory.
|
||||
This is equivalent to ``cd sub/dir; make all`` with
|
||||
:ref:`Makefile Generators`.
|
||||
|
||||
* The :generator:`Ninja` generator now includes system header files in build
|
||||
dependencies to ensure correct re-builds when system packages are updated.
|
||||
|
||||
* The :generator:`Visual Studio 14 2015` generator learned to support the
|
||||
Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option.
|
||||
This feature is experimental.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_custom_command` and :command:`add_custom_target` commands
|
||||
learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable
|
||||
target property.
|
||||
|
||||
* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option
|
||||
to leave installation rules out of the default installation.
|
||||
|
||||
* The :command:`list` command gained a ``FILTER`` sub-command to filter
|
||||
list elements by regular expression.
|
||||
|
||||
* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
|
||||
commands gained support for the ``%s`` placeholder. This is
|
||||
the number of seconds since the UNIX Epoch.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable was introduced
|
||||
to tell :ref:`Makefile Generators` to limit dependency scanning only
|
||||
to files in the project source and build trees.
|
||||
|
||||
* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to
|
||||
indicate when CMake is running on an Oracle Solaris host.
|
||||
|
||||
* A :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable was
|
||||
added for use by toolchain files to specify system include directories
|
||||
to be appended to all compiler command lines.
|
||||
|
||||
* The :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES` variable is now documented.
|
||||
It is intended for use by toolchain files to specify system libraries to be
|
||||
added to all linker command lines.
|
||||
|
||||
* A :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable was introduced
|
||||
to tell the :generator:`Ninja` generator to configure the generated
|
||||
``build.ninja`` file for use as a ``subninja``.
|
||||
|
||||
* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was
|
||||
added for use by toolchain files to specify platform-specific
|
||||
variables that must be propagated by the :command:`try_compile`
|
||||
command into test projects.
|
||||
|
||||
* A :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable was added
|
||||
to optionally tell the :command:`try_compile` command to build
|
||||
a static library instead of an executable. This is useful for
|
||||
cross-compiling toolchains that cannot link binaries without
|
||||
custom flags or scripts.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* A :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property was introduced
|
||||
to tell the :generator:`Visual Studio 9 2008` and
|
||||
:generator:`Visual Studio 8 2005` generators to generate the "remote
|
||||
directory" for WinCE project deployment and debugger settings.
|
||||
|
||||
* A :prop_tgt:`<LANG>_CLANG_TIDY` target property and supporting
|
||||
:variable:`CMAKE_<LANG>_CLANG_TIDY` variable were introduced to tell the
|
||||
:ref:`Makefile Generators` and the :generator:`Ninja` generator to run
|
||||
``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages.
|
||||
|
||||
* A :prop_test:`TIMEOUT_AFTER_MATCH` test property was introduced to
|
||||
optionally tell CTest to enforce a secondary timeout after matching
|
||||
certain output from a test.
|
||||
|
||||
* A :prop_tgt:`VS_CONFIGURATION_TYPE` target property was introduced
|
||||
to specify a custom project file type for :ref:`Visual Studio Generators`
|
||||
supporting VS 2010 and above.
|
||||
|
||||
* A :prop_dir:`VS_STARTUP_PROJECT` directory property was introduced
|
||||
to specify for :ref:`Visual Studio Generators` the default startup
|
||||
project for generated solutions (``.sln`` files).
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* The :module:`CMakePushCheckState` module now pushes/pops/resets the variable
|
||||
``CMAKE_EXTRA_INCLUDE_FILE`` used in :module:`CheckTypeSize`.
|
||||
|
||||
* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1``
|
||||
option to perform a shallow clone of a Git repository.
|
||||
|
||||
* The :module:`ExternalProject` module learned to initialize Git submodules
|
||||
recursively and also to initialize new submodules on updates. Use the
|
||||
``GIT_SUBMODULES`` option to restrict which submodules are initialized and
|
||||
updated.
|
||||
|
||||
* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1``
|
||||
argument to skip extracting the file that is downloaded (e.g., for
|
||||
self-extracting shell installers or ``.msi`` files).
|
||||
|
||||
* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching
|
||||
from git repositories.
|
||||
|
||||
* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to
|
||||
support `OpenBLAS <http://www.openblas.net>`__.
|
||||
|
||||
* The :module:`FindCUDA` module learned to find the ``cublas_device`` library.
|
||||
|
||||
* The :module:`FindGTest` module ``gtest_add_tests`` function now causes
|
||||
CMake to automatically re-run when test sources change so that they
|
||||
can be re-scanned.
|
||||
|
||||
* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST
|
||||
library.
|
||||
|
||||
* The :module:`FindPkgConfig` module learned to optionally create imported
|
||||
targets for the libraries it has found.
|
||||
|
||||
* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION``
|
||||
variable and check the version number requested in a :command:`find_package`
|
||||
call.
|
||||
|
||||
* The :module:`InstallRequiredSystemLibraries` module learned a new
|
||||
``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment
|
||||
of the Windows Universal CRT libraries with Visual Studio 2015.
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* The Clang compiler is now supported on CYGWIN.
|
||||
|
||||
* Support was added for the Bruce C Compiler with compiler id ``Bruce``.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :command:`ctest_update` command now looks at the
|
||||
:variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether
|
||||
submodules should be updated or not before updating.
|
||||
|
||||
* The :command:`ctest_update` command will now synchronize submodules on an
|
||||
update. Updates which add submodules or change a submodule's URL will now be
|
||||
pulled properly.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned how to handle ``$ORIGIN``
|
||||
in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
|
||||
is used for dependency auto detection.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned how to generate
|
||||
``DEBIAN/shlibs`` contorl file when package contains shared libraries.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned how to generate
|
||||
``DEBIAN/postinst`` and ``DEBIAN/postrm`` files if the package installs
|
||||
libraries in ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned how to generate dependencies
|
||||
between Debian packages if multi-component setup is used and
|
||||
:variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
|
||||
For backward compatibility this feature is disabled by default.
|
||||
See :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned how to set custom package
|
||||
file names including how to generate properly-named Debian packages::
|
||||
|
||||
<PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
|
||||
|
||||
For backward compatibility this feature is disabled by default. See
|
||||
:variable:`CPACK_DEBIAN_FILE_NAME` and
|
||||
:variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned how to set the package
|
||||
release number (``DebianRevisionNumber`` in package file name when
|
||||
used in combination with ``DEB-DEFAULT`` value set by
|
||||
:variable:`CPACK_DEBIAN_FILE_NAME`).
|
||||
See :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned how to set the package
|
||||
architecture per-component.
|
||||
See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
|
||||
|
||||
* The :cpack_gen:`CPack DragNDrop Generator` learned a new option to skip the
|
||||
``/Applications`` symlink.
|
||||
See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.
|
||||
|
||||
* The :module:`CPackIFW` module gained a new
|
||||
:command:`cpack_ifw_update_repository` command to update a QtIFW-specific
|
||||
repository from a remote repository.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned how to set RPM ``dist`` tag
|
||||
as part of RPM ``Release:`` tag when enabled (mandatory on some Linux
|
||||
distributions for e.g. on Fedora).
|
||||
See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned how to set default values
|
||||
for owning user/group and file/directory permissions of package content.
|
||||
See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`,
|
||||
:variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`,
|
||||
:variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component
|
||||
counterparts.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned how to set user defined
|
||||
package file names, how to specify that rpmbuild should decide on file
|
||||
name format as well as handling of multiple rpm packages generated by a
|
||||
single user defined spec file.
|
||||
See :variable:`CPACK_RPM_PACKAGE_NAME` and
|
||||
:variable:`CPACK_RPM_<component>_PACKAGE_NAME`.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned how to correctly handle symlinks
|
||||
that are pointing outside generated packages.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of features supported by Intel C++ compilers versions 12.1
|
||||
through 16.0 on UNIX platforms.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* The :module:`CMakeForceCompiler` module and its macros are now deprecated.
|
||||
See module documentation for an explanation.
|
||||
|
||||
* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
|
||||
commands no longer search in installation prefixes derived from the ``PATH``
|
||||
environment variable on non-Windows platforms. This behavior was added in
|
||||
CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts.
|
||||
Users that keep some ``<prefix>/bin`` directories in the ``PATH`` just for
|
||||
their tools do not necessarily want any supporting ``<prefix>/lib``
|
||||
directories searched. One may set the ``CMAKE_PREFIX_PATH`` environment
|
||||
variable with a :ref:`semicolon-separated list <CMake Language Lists>` of prefixes that are
|
||||
to be searched.
|
||||
|
||||
* The :generator:`Visual Studio 7 .NET 2003` generator is now
|
||||
deprecated and will be removed in a future version of CMake.
|
||||
|
||||
* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been
|
||||
removed. It had been deprecated since CMake 3.3.
|
||||
|
||||
* The :generator:`Visual Studio 6` generator has been removed.
|
||||
It had been deprecated since CMake 3.3.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The precompiled OS X binary provided on ``cmake.org`` now requires
|
||||
OS X 10.7 or newer.
|
||||
|
||||
* On Linux and FreeBSD platforms, when building CMake itself from source and
|
||||
not using a system-provided libcurl, OpenSSL is now used by default if it is
|
||||
found on the system. This enables SSL/TLS support for commands supporting
|
||||
network communication via ``https``, such as :command:`file(DOWNLOAD)`,
|
||||
:command:`file(UPLOAD)`, and :command:`ctest_submit`.
|
||||
|
||||
* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple
|
||||
``--target`` options with an error instead of silently ignoring all but the
|
||||
last one.
|
||||
|
||||
* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source
|
||||
files in different directories use ``#include <moc_foo.cpp>`` with the
|
||||
same name (because the generated ``moc_foo.cpp`` files would collide).
|
||||
|
||||
* The :module:`FindBISON` module ``BISON_TARGET`` macro now supports
|
||||
special characters by passing the ``VERBATIM`` option to internal
|
||||
:command:`add_custom_command` calls. This may break clients that
|
||||
added escaping manually to work around the bug.
|
||||
|
||||
* The :module:`FindFLEX` module ``FLEX_TARGET`` macro now supports
|
||||
special characters by passing the ``VERBATIM`` option to internal
|
||||
:command:`add_custom_command` calls. This may break clients that
|
||||
added escaping manually to work around the bug.
|
||||
|
||||
* The :module:`FindProtobuf` module input and output variables were all renamed
|
||||
from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules.
|
||||
Input variables of the old case will be honored if provided, and output
|
||||
variables of the old case are always provided.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` now supports upper cased component
|
||||
names in per component CPackRPM specific variables.
|
||||
E.g. component named ``foo`` now expects component specific
|
||||
variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before
|
||||
it expected ``CPACK_RPM_foo_PACKAGE_NAME``.
|
||||
Upper cased component name part in variables is compatible
|
||||
with convention used for other CPack variables.
|
||||
For back compatibility old format of variables is still valid
|
||||
and preferred if both versions of variable are set, but the
|
||||
preferred future use is upper cased component names in variables.
|
||||
New variables that will be added to CPackRPM in later versions
|
||||
will only support upper cased component variable format.
|
||||
|
||||
* The CPack NSIS generator's configuration file template was fixed to
|
||||
quote the path to the uninstaller tool used by the
|
||||
:variable:`CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL` option.
|
||||
This avoids depending on an insecure Windows feature to run an
|
||||
uninstaller tool with a space in the path.
|
|
@ -0,0 +1,319 @@
|
|||
CMake 3.7 Release Notes
|
||||
***********************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.6 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* CMake now supports :ref:`Cross Compiling for Android` with simple
|
||||
toolchain files.
|
||||
|
||||
* The Clang compiler is now supported on AIX.
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :generator:`Ninja` generator learned to conditionally support
|
||||
Fortran when using a ``ninja`` tool that has the necessary features.
|
||||
See generator documentation for details.
|
||||
|
||||
* The :generator:`Ninja` generator learned to produce phony targets
|
||||
of the form ``sub/dir/{test,install,package}`` to drive the build
|
||||
of a subdirectory installation, test or packaging target.
|
||||
This is equivalent to ``cd sub/dir; make {test,install,package}``
|
||||
with :ref:`Makefile Generators`.
|
||||
|
||||
* The :generator:`Visual Studio 15 2017` generator was added. This is
|
||||
experimental and based on "Visual Studio 2017 RC" because this version
|
||||
of VS has not been released.
|
||||
|
||||
* :ref:`Visual Studio Generators` for VS 2010 and above learned to
|
||||
place ``.natvis`` source files into VS project files properly.
|
||||
|
||||
* The :generator:`Xcode` generator's rudimentary Swift language support
|
||||
learned to honor a new :variable:`CMAKE_Swift_LANGUAGE_VERSION` variable
|
||||
to tell Xcode what version of Swift is used by the source.
|
||||
|
||||
* The :generator:`CodeLite` generator gained a new
|
||||
:variable:`CMAKE_CODELITE_USE_TARGETS` option
|
||||
to change project creation from projects to targets.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_custom_command` command gained a new ``DEPFILE``
|
||||
option that works with the :generator:`Ninja` generator to provide
|
||||
implicit dependency information to the build tool.
|
||||
|
||||
* The :command:`cmake_parse_arguments` command gained a new ``PARSE_ARGV``
|
||||
mode to read arguments directly from ``ARGC`` and ``ARGV#``
|
||||
variables inside a :command:`function` body.
|
||||
|
||||
* The :command:`export` command gained an ``ANDROID_MK`` option
|
||||
to generate ``Android.mk`` files referencing CMake-built
|
||||
libraries as prebuilts for the Android NDK build system.
|
||||
|
||||
* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands gained
|
||||
``HTTPHEADER <HTTP-header>`` and ``USERPWD <username>:<password>`` options.
|
||||
|
||||
* The :command:`find_library` and :command:`find_package` commands learned
|
||||
to search in ``lib32/`` directories when the build targets a 32-bit
|
||||
architecture. See the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global
|
||||
property.
|
||||
|
||||
* The :command:`find_package` command gained the possibility of
|
||||
sorting compatible libraries by ``NAME`` or by ``NATURAL`` sorting by
|
||||
setting the two new variables :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`
|
||||
and :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION`.
|
||||
|
||||
* The :command:`if` command gained new boolean comparison operations
|
||||
``LESS_EQUAL``, ``GREATER_EQUAL``, ``STRLESS_EQUAL``, ``STRGREATER_EQUAL``,
|
||||
``VERSION_LESS_EQUAL``, and ``VERSION_GREATER_EQUAL``.
|
||||
|
||||
* The :command:`install` command gained an ``EXPORT_ANDROID_MK``
|
||||
subcommand to install ``Android.mk`` files referencing installed
|
||||
libraries as prebuilts for the Android NDK build system.
|
||||
|
||||
* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
|
||||
commands gained support for the ``%a`` and ``%b`` placeholders.
|
||||
These are the abbreviated weekday and month names.
|
||||
|
||||
* The :command:`try_compile` command source file signature now honors
|
||||
configuration-specific flags (e.g. :variable:`CMAKE_<LANG>_FLAGS_DEBUG`)
|
||||
in the generated test project. Previously only the default such flags
|
||||
for the current toolchain were used. See policy :policy:`CMP0066`.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` was added to control
|
||||
the sorting mode of the :command:`find_package` command.
|
||||
|
||||
* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION` was added to control
|
||||
the sorting direction the :command:`find_package` command.
|
||||
|
||||
* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set a
|
||||
:variable:`CMAKE_<LANG>_FLAGS_INIT` variable to initialize the
|
||||
:variable:`CMAKE_<LANG>_FLAGS` cache entry the first time a language is
|
||||
enabled in a build tree.
|
||||
|
||||
* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set
|
||||
:variable:`CMAKE_EXE_LINKER_FLAGS_INIT`,
|
||||
:variable:`CMAKE_SHARED_LINKER_FLAGS_INIT`, and
|
||||
:variable:`CMAKE_MODULE_LINKER_FLAGS_INIT` variables to initialize the
|
||||
:variable:`CMAKE_EXE_LINKER_FLAGS`,
|
||||
:variable:`CMAKE_SHARED_LINKER_FLAGS`, and
|
||||
:variable:`CMAKE_MODULE_LINKER_FLAGS` cache entries the first time
|
||||
a language is enabled in a build tree.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* On Apple platforms the :prop_tgt:`BUNDLE_EXTENSION` target property
|
||||
now also applies to Frameworks and App Bundles.
|
||||
|
||||
* A :prop_dir:`BINARY_DIR` directory property was added to get the
|
||||
absolute path to the binary directory corresponding to the source
|
||||
directory on which the property is read.
|
||||
|
||||
* A :prop_dir:`BUILDSYSTEM_TARGETS` directory property was added to
|
||||
get the list of logical buildsystem target names added by the
|
||||
project in a directory.
|
||||
|
||||
* A :prop_tgt:`LINK_WHAT_YOU_USE` target property and supporting
|
||||
:variable:`CMAKE_LINK_WHAT_YOU_USE` variable were introduced
|
||||
to detect (on UNIX) shared libraries that are linked but not
|
||||
needed by running ``ldd -r -u``.
|
||||
|
||||
* A :prop_dir:`SOURCE_DIR` directory property was added to get the
|
||||
absolute path to the source directory associated with a directory.
|
||||
|
||||
* A :prop_dir:`SUBDIRECTORIES` directory property was added to
|
||||
get the list of subdirectories added by a project in a directory.
|
||||
|
||||
* A :prop_tgt:`VS_SDK_REFERENCES` target property was added to tell
|
||||
:ref:`Visual Studio Generators` to reference the named SDKs.
|
||||
|
||||
* A :prop_sf:`VS_TOOL_OVERRIDE` source file property was created to tell
|
||||
:ref:`Visual Studio Generators` what tool to use for a source file.
|
||||
|
||||
* The :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property now applies
|
||||
to executable targets with the :prop_tgt:`ENABLE_EXPORTS` property set.
|
||||
|
||||
* A :prop_sf:`XCODE_FILE_ATTRIBUTES` source file property was
|
||||
added to tell the :generator:`Xcode` generator to generate
|
||||
custom content in the Xcode project attributes for the file.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* An :module:`AndroidTestUtilities` module was added to manage transfer
|
||||
of test data to an Android device.
|
||||
|
||||
* The :module:`CheckFortranSourceCompiles` module macro
|
||||
``CHECK_Fortran_SOURCE_COMPILES`` gained a ``SRC_EXT`` option
|
||||
to specify a custom test Fortran source file extension.
|
||||
|
||||
* The :module:`ExternalProject` module gained ``HTTP_USERNAME`` and
|
||||
``HTTP_PASSWORD`` options to set http download credentials.
|
||||
|
||||
* The :module:`ExternalProject` module gained a ``HTTP_HEADER``
|
||||
option to add http download headers.
|
||||
|
||||
* The :module:`FindBISON` module ``BISON_TARGET`` macro learned a new
|
||||
``REPORT_FILE`` option to specify the bison ``--report-file=`` option.
|
||||
|
||||
* The :module:`FindBZip2` module now provides imported targets.
|
||||
|
||||
* A :module:`FindICU` module was introduced to find the International
|
||||
Components for Unicode (ICU) libraries and programs.
|
||||
|
||||
* The :module:`FindMatlab` module learned to find the SIMULINK and MAT
|
||||
components.
|
||||
|
||||
* The :module:`FindMatlab` module :command:`matlab_add_mex` command learned
|
||||
to add executables and modules.
|
||||
|
||||
* The :module:`FindMatlab` module :command:`matlab_add_unit_test` command
|
||||
learned to support inline Matlab test code.
|
||||
|
||||
* The :module:`FindOpenCL` module now provides imported targets.
|
||||
|
||||
* The :module:`FindOpenMP` module learned to detect the OpenMP
|
||||
version (specification date) from the compiler.
|
||||
|
||||
* A :module:`FindVulkan` module was added.
|
||||
|
||||
* The :module:`GenerateExportHeader` module learned a new
|
||||
``CUSTOM_CONTENT_FROM_VARIABLE`` option to specify a variable
|
||||
containing custom content for inclusion in the generated header.
|
||||
|
||||
* The :module:`GNUInstallDirs` module gained a new
|
||||
:command:`GNUInstallDirs_get_absolute_install_dir` command.
|
||||
|
||||
* The :module:`UseJava` module gained APIs to "export" jar targets
|
||||
for use by external CMake projects. See the ``install_jar_exports``
|
||||
and ``export_jars`` functions.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* CTest now supports test fixtures through the new :prop_test:`FIXTURES_SETUP`,
|
||||
:prop_test:`FIXTURES_CLEANUP` and :prop_test:`FIXTURES_REQUIRED` test
|
||||
properties. When using regular expressions or ``--rerun-failed`` to limit
|
||||
the tests to be run, a fixture's setup and cleanup tests will automatically
|
||||
be added to the execution set if any test requires that fixture.
|
||||
|
||||
* The :command:`ctest_configure`, :command:`ctest_build`,
|
||||
:command:`ctest_test`, :command:`ctest_coverage`, and :command:`ctest_upload`
|
||||
commands gained a new ``CAPTURE_CMAKE_ERROR`` option to capture any errors
|
||||
that occur as the commands run into a variable and avoid affecting the return
|
||||
code of the :manual:`ctest(1)` process.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* CPack gained a :cpack_gen:`CPack productbuild Generator` on OS X.
|
||||
|
||||
* CPack gained a new :variable:`CPACK_PACKAGE_CHECKSUM` variable to
|
||||
enable generation of a checksum file for each package file.
|
||||
|
||||
* The :cpack_gen:`CPack DEB Generator` learned to support long file names
|
||||
when archive format is set to GNU tar.
|
||||
See :variable:`CPACK_DEBIAN_ARCHIVE_TYPE`
|
||||
|
||||
* The :module:`CPackIFW` module gained a new
|
||||
:command:`cpack_ifw_add_package_resources` command to include additional
|
||||
resources in the installer binary.
|
||||
|
||||
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
|
||||
:command:`cpack_ifw_configure_component_group` commands gained a new
|
||||
``USER_INTERFACES`` option to add a list of additional pages to the IFW
|
||||
installer.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to generate debuginfo
|
||||
packages on demand. See :variable:`CPACK_RPM_DEBUGINFO_PACKAGE`
|
||||
and its per component version.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to generate source rpm
|
||||
(SRPM) packages on demand. See :variable:`CPACK_RPM_PACKAGE_SOURCES`,
|
||||
:variable:`CPACK_RPM_SOURCE_PKG_BUILD_PARAMS` and
|
||||
:variable:`CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX`.
|
||||
|
||||
* The :cpack_gen:`CPack NSIS Generator` now supports
|
||||
:variable:`CPACK_NSIS_<compName>_INSTALL_DIRECTORY`.
|
||||
This can be used to set component specific installation directories.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` now supports
|
||||
:variable:`CPACK_WIX_SKIP_PROGRAM_FOLDER` to allow specification
|
||||
of a custom absolute installation prefix outside
|
||||
of the ProgramFiles folders.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` now supports
|
||||
:variable:`CPACK_COMPONENT_<compName>_DISABLED`.
|
||||
This can be used to deselect a component from being installed by default.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` now supports
|
||||
:variable:`CPACK_WIX_PATCH_FILE` fragments for Feature elements.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` now supports
|
||||
:variable:`CPACK_WIX_ROOT_FEATURE_TITLE` and
|
||||
:variable:`CPACK_WIX_ROOT_FEATURE_DESCRIPTION` to allow the specification
|
||||
of a custom title and description for the root feature element.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* :manual:`cmake(1)` gained a ``-E capabilities`` option to provide a
|
||||
machine-readable (JSON) description of the capabilities of the
|
||||
cmake tool (available generators, etc.).
|
||||
|
||||
* A new :manual:`cmake-server(7)` mode was added to provide semantic
|
||||
information about a CMake-generated buildsystem to clients through
|
||||
a JSON protocol. Currently all protocols are experimental and subject
|
||||
to change.
|
||||
|
||||
* The :manual:`cmake(1)` command learned a ``--trace-source=<file>`` option.
|
||||
|
||||
* :manual:`ccmake(1)` learned to support vim-like navigation bindings.
|
||||
|
||||
* :manual:`cmake-gui(1)` gained a button to open the generated project file
|
||||
for :ref:`Visual Studio Generators` and the :generator:`Xcode` generator.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* We no longer provide Linux i386 binaries for download from ``cmake.org``
|
||||
for new versions of CMake.
|
||||
|
||||
* Vim support files ``cmake-indent.vim``, ``cmake-syntax.vim``, and
|
||||
``cmake-help.vim`` have been removed in favor of the files now provided
|
||||
from the `vim-cmake-syntax`_ project.
|
||||
|
||||
* Support for building CMake itself with some compilers was dropped:
|
||||
|
||||
* Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above
|
||||
* MinGW.org mingw32 -- superseded by MSYS2 mingw32 and mingw64
|
||||
|
||||
CMake still supports generating build systems for other projects using
|
||||
these compilers.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* The Fortran dependency scanner learned to support the syntax of
|
||||
`Fortran Submodules`_.
|
||||
|
||||
* Vim support files ``indent/cmake.vim`` and ``syntax/cmake.vim``
|
||||
from the `vim-cmake-syntax`_ project are now distributed with CMake.
|
||||
|
||||
.. _`Fortran Submodules`: http://fortranwiki.org/fortran/show/Submodules
|
||||
.. _`vim-cmake-syntax`: https://github.com/pboettch/vim-cmake-syntax
|
|
@ -0,0 +1,417 @@
|
|||
CMake 3.8 Release Notes
|
||||
***********************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.7 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Languages
|
||||
---------
|
||||
|
||||
C#
|
||||
^^
|
||||
|
||||
* CMake learned to support ``CSharp`` (C#) as a first-class language that
|
||||
can be enabled via the :command:`project` and :command:`enable_language`
|
||||
commands. It is currently supported by the :ref:`Visual Studio Generators`
|
||||
for VS 2010 and above.
|
||||
|
||||
C# assemblies and programs can be added just like common C++ targets using
|
||||
the :command:`add_library` and :command:`add_executable` commands.
|
||||
References between C# targets in the same source tree may be specified by
|
||||
:command:`target_link_libraries` like for C++. References to system or
|
||||
3rd-party assemblies may be specified by the target properties
|
||||
:prop_tgt:`VS_DOTNET_REFERENCE_<refname>` and
|
||||
:prop_tgt:`VS_DOTNET_REFERENCES`.
|
||||
|
||||
* More fine tuning of C# targets may be done using target and source
|
||||
file properties. Specifically the target properties related to
|
||||
Visual Studio (``VS_*``) are worth a look (for setting toolset
|
||||
versions, root namespaces, assembly icons, ...).
|
||||
|
||||
CUDA
|
||||
^^^^
|
||||
|
||||
* CMake learned to support ``CUDA`` as a first-class language that can be
|
||||
enabled via the :command:`project` and :command:`enable_language` commands.
|
||||
|
||||
* ``CUDA`` is currently supported by the :ref:`Makefile Generators`
|
||||
and the :generator:`Ninja` generator on Linux, macOS, and Windows.
|
||||
Support for the Visual Studio IDE is under development but not
|
||||
included in this release.
|
||||
|
||||
* The NVIDIA CUDA Toolkit compiler (``nvcc``) is supported.
|
||||
|
||||
C & C++
|
||||
^^^^^^^
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
now offers meta-features that request compiler modes for specific language
|
||||
standard levels (e.g. ``cxx_std_11``). See
|
||||
:prop_gbl:`CMAKE_C_KNOWN_FEATURES` and :prop_gbl:`CMAKE_CXX_KNOWN_FEATURES`.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of C++ 17. No specific features are yet enumerated besides
|
||||
the ``cxx_std_17`` meta-feature.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of the availability of C99 in gcc since version 3.4.
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
* A new minimal platform file for ``Fuchsia`` was added.
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* The :generator:`CodeBlocks` extra generator may now be used to
|
||||
generate with :generator:`NMake Makefiles JOM`.
|
||||
|
||||
* The :ref:`Visual Studio Generators` for VS 2013 and above learned to
|
||||
support a ``host=x64`` option in the :variable:`CMAKE_GENERATOR_TOOLSET`
|
||||
value (e.g. via the :manual:`cmake(1)` ``-T`` option) to request use
|
||||
of a VS 64-bit toolchain on 64-bit hosts.
|
||||
|
||||
* The :ref:`Visual Studio Generators` learned to treat files passed to
|
||||
:command:`target_link_libraries` whose names end in ``.targets``
|
||||
as MSBuild "targets" files to be imported into generated project files.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_custom_command` and :command:`add_custom_target` commands
|
||||
learned the option ``COMMAND_EXPAND_LISTS`` which causes lists in the
|
||||
``COMMAND`` argument to be expanded, including lists created by generator
|
||||
expressions.
|
||||
|
||||
* The :command:`execute_process` command gained an ``ENCODING`` option to
|
||||
specify on Windows which encoding is used for output from child process.
|
||||
|
||||
* The :command:`math(EXPR)` command gained support for unary
|
||||
``+`` and ``-`` operators.
|
||||
|
||||
* The :command:`source_group` command gained ``TREE`` and ``PREFIX``
|
||||
options to add groups following source tree directory structure.
|
||||
|
||||
* The :command:`string(TIMESTAMP)` command learned to treat ``%%``
|
||||
as a way to encode plain ``%``.
|
||||
|
||||
* The :command:`string(TIMESTAMP)` command will now honor the
|
||||
``SOURCE_DATE_EPOCH`` environment variable and use its value
|
||||
instead of the current time.
|
||||
|
||||
* The :command:`try_compile` command source file signature gained new options
|
||||
to specify the language standard to use in the generated test project.
|
||||
|
||||
* The :command:`try_compile` command source file signature now honors
|
||||
language standard variables like :variable:`CMAKE_CXX_STANDARD`.
|
||||
See policy :policy:`CMP0067`.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_CODELITE_USE_TARGETS` variable was added to tell the
|
||||
:generator:`CodeLite` extra generator to change the generated project
|
||||
to have target-centric organization.
|
||||
The ``build``, ``rebuild``, and ``clean`` operations within ``CodeLite``
|
||||
then work on a selected target rather than the whole workspace.
|
||||
(Note that the :generator:`Ninja` clean operation on a target
|
||||
includes its dependencies, though.)
|
||||
|
||||
* The :variable:`CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS` variable was added to
|
||||
tell the :generator:`Sublime Text 2` extra generator to place specified
|
||||
environment variables in the generated ``.sublime-project``.
|
||||
|
||||
* The :variable:`CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE` variable was added
|
||||
to tell the :generator:`Sublime Text 2` extra generator whether to exclude
|
||||
the build tree from the ``.sublime-project`` when it is inside the source
|
||||
tree.
|
||||
|
||||
* A :variable:`CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD` variable was
|
||||
added to tell :ref:`Visual Studio Generators` for VS 2010 and above
|
||||
to include the ``PACKAGE`` target in the default build, similar to
|
||||
the existing :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD`
|
||||
variable for the ``INSTALL`` target.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* A :prop_tgt:`BUILD_RPATH` target property and corresponding
|
||||
:variable:`CMAKE_BUILD_RPATH` variable were added to support custom
|
||||
``RPATH`` locations to be added to binaries in the build tree.
|
||||
|
||||
* The :prop_sf:`COMPILE_FLAGS` source file property learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
* The :prop_tgt:`FRAMEWORK` target property may now also be applied to
|
||||
static libraries on Apple targets. It will result in a proper
|
||||
Framework but with a static library inside.
|
||||
|
||||
* :ref:`Imported <Imported Targets>` :ref:`Interface Libraries` learned new
|
||||
:prop_tgt:`IMPORTED_LIBNAME` and :prop_tgt:`IMPORTED_LIBNAME_<CONFIG>`
|
||||
target properties to specify a link library name since interface libraries
|
||||
do not build their own library files.
|
||||
|
||||
* A :prop_tgt:`<LANG>_CPPLINT` target property and supporting
|
||||
:variable:`CMAKE_<LANG>_CPPLINT` variable were introduced to tell
|
||||
the :ref:`Makefile Generators` and the :generator:`Ninja` generator to
|
||||
run the ``cpplint`` style checker along with the compiler for ``C`` and
|
||||
``CXX`` languages.
|
||||
|
||||
* A :prop_tgt:`MANUALLY_ADDED_DEPENDENCIES` target property has been added.
|
||||
It provides a read-only list of dependencies that have been added with
|
||||
the :command:`add_dependencies` command.
|
||||
|
||||
* The :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property learned
|
||||
to interpret empty list elements as referring to the configuration-less
|
||||
imported location specified by :prop_tgt:`IMPORTED_LOCATION`.
|
||||
|
||||
* The :prop_tgt:`NO_SYSTEM_FROM_IMPORTED` target property is now supported
|
||||
on :ref:`Imported <Imported Targets>` :ref:`Interface Libraries`.
|
||||
|
||||
* New source file properties :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC`,
|
||||
:prop_sf:`SKIP_AUTORCC`, and :prop_sf:`SKIP_AUTOGEN` were added to allow
|
||||
source files to be excluded from processing by :prop_tgt:`AUTOMOC`,
|
||||
:prop_tgt:`AUTOUIC`, and :prop_tgt:`AUTORCC` target properties.
|
||||
|
||||
* A :prop_sf:`VS_COPY_TO_OUT_DIR` source file property was added to
|
||||
tell :ref:`Visual Studio Generators` for VS 2010 and above whether
|
||||
or not a file should e copied to the output directory.
|
||||
|
||||
* A :prop_tgt:`VS_DEBUGGER_WORKING_DIRECTORY` target property was added
|
||||
to tell :ref:`Visual Studio Generators` for VS 2010 and above what
|
||||
debugger working directory should be set for the target.
|
||||
|
||||
* A :prop_tgt:`VS_DOTNET_REFERENCES_COPY_LOCAL` target property was added
|
||||
to specify whether to copy referenced assemblies to the output directory.
|
||||
|
||||
* A :prop_tgt:`VS_DOTNET_REFERENCE_<refname>` target property was added
|
||||
to tell :ref:`Visual Studio Generators` for VS 2010 and above to add
|
||||
a .NET reference with a given hint path.
|
||||
|
||||
* A :prop_sf:`VS_INCLUDE_IN_VSIX` source file property was added to
|
||||
tell :ref:`Visual Studio Generators` for VS 2010 and above whether
|
||||
to include the file in a Visual Studio extension package.
|
||||
|
||||
* A :prop_sf:`VS_RESOURCE_GENERATOR` source file property was added to
|
||||
give :ref:`Visual Studio Generators` for VS 2010 and above a setting
|
||||
for the resource generator (``C#`` only).
|
||||
|
||||
* A :prop_tgt:`VS_USER_PROPS` target property was added to tell
|
||||
:ref:`Visual Studio Generators` for VS 2010 and above to use a
|
||||
custom MSBuild user ``.props`` file.
|
||||
|
||||
* A :prop_gbl:`XCODE_EMIT_EFFECTIVE_PLATFORM_NAME` global property was
|
||||
added to tell the :generator:`Xcode` generator whether to emit the
|
||||
``EFFECTIVE_PLATFORM_NAME`` variable. This is useful when building
|
||||
with multiple SDKs like ``macosx`` and ``iphoneos`` in parallel.
|
||||
|
||||
* New :prop_tgt:`XCODE_PRODUCT_TYPE` and :prop_tgt:`XCODE_EXPLICIT_FILE_TYPE`
|
||||
target properties were created to tell the :generator:`Xcode` generator
|
||||
to use custom values of the corresponding attributes for a target in the
|
||||
generated Xcode project.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* A :module:`CSharpUtilities` module was added to aid parameterization of
|
||||
Visual Studio C# targets. It provides functions to allow automated
|
||||
setting of source file properties to support Windows Forms, WPF/XAML or
|
||||
other technologies as needed.
|
||||
|
||||
* The :module:`ExternalData` module learned to support multiple
|
||||
content links for one data file using different hashes, e.g.
|
||||
``img.png.sha256`` and ``img.png.sha1``. This allows objects
|
||||
to be fetched from sources indexed by different hash algorithms.
|
||||
|
||||
* The :module:`ExternalProject` module gained the ``GIT_PROGRESS`` option to
|
||||
force Git to show progress when cloning repositories.
|
||||
|
||||
* The :module:`ExternalProject` module gained a ``GIT_CONFIG`` option
|
||||
to pass ``--config`` options to Git when cloning repositories.
|
||||
|
||||
* The :module:`FeatureSummary` module :command:`feature_summary` command now
|
||||
accepts a new ``QUIET_ON_EMPTY`` option that suppresses the output when
|
||||
the list of packages that belong to the selected category is empty.
|
||||
|
||||
* The :module:`FeatureSummary` module :command:`add_feature_info` command
|
||||
now accepts lists of dependencies for deciding whether a feature is enabled
|
||||
or not.
|
||||
|
||||
* The package types accepted by the :module:`FeatureSummary` module can now
|
||||
be tweaked by changing the :variable:`FeatureSummary_PKG_TYPES`,
|
||||
:variable:`FeatureSummary_REQUIRED_PKG_TYPES` and
|
||||
:variable:`FeatureSummary_DEFAULT_PKG_TYPE` global properties.
|
||||
|
||||
* The :module:`FindOpenGL` module now provides imported targets
|
||||
``OpenGL::GL`` and ``OpenGL::GLU`` when the libraries are found.
|
||||
|
||||
* The :module:`UseSWIG` module gained a ``swig_add_library`` command
|
||||
to give more flexibility over the old ``swig_add_module`` command.
|
||||
|
||||
* The :module:`UseSWIG` module ``swig_add_source_to_module`` command
|
||||
learned a new ``SWIG_OUTFILE_DIR`` option to control the output
|
||||
file location (``swig -o``).
|
||||
|
||||
* The :module:`WriteCompilerDetectionHeader` module gained the
|
||||
``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` options
|
||||
that allow creation of headers that will work also with unknown or old
|
||||
compilers by simply assuming they do not support any of the requested
|
||||
features.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :command:`ctest_memcheck` command gained a ``DEFECT_COUNT <var>``
|
||||
option to capture the number of memory defects detected.
|
||||
|
||||
* The :command:`ctest_memcheck` command learned to read the location of
|
||||
suppressions files for sanitizers from the
|
||||
:variable:`CTEST_MEMORYCHECK_SUPPRESSIONS_FILE` variable.
|
||||
|
||||
* The :command:`ctest_memcheck` command learned to support ``LeakSanitizer``
|
||||
independently from ``AddressSanitizer``.
|
||||
|
||||
* The :command:`ctest_update` command ``CDASH_UPLOAD`` signature was taught
|
||||
to honor the ``RETRY_COUNT``, ``RETRY_DELAY``, and ``QUIET`` options.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :module:`CPackIFWConfigureFile` module was added to define a new
|
||||
:command:`cpack_ifw_configure_file` command to configure file templates
|
||||
prepared in QtIFW/SDK/Creator style.
|
||||
|
||||
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
|
||||
:command:`cpack_ifw_configure_component_group` commands gained a new
|
||||
``DEFAULT``, ``VIRTUAL``, ``FORCED_INSTALLATION``, ``REQUIRES_ADMIN_RIGHTS``,
|
||||
``DISPLAY_NAME``, ``UPDATE_TEXT``, ``DESCRIPTION``, ``RELEASE_DATE``,
|
||||
``AUTO_DEPEND_ON`` and ``TRANSLATIONS`` options to more specific
|
||||
configuration.
|
||||
|
||||
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component`
|
||||
command gained a new ``DEPENDENCIES`` alias for ``DEPENDS`` option.
|
||||
|
||||
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component_group`
|
||||
command gained a new ``DEPENDS`` option. The ``DEPENDENCIES`` alias also
|
||||
added.
|
||||
|
||||
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
|
||||
:command:`cpack_ifw_configure_component_group` commands ``PRIORITY``
|
||||
option now is deprecated and will be removed in a future version of CMake.
|
||||
Please use new ``SORTING_PRIORITY`` option instead.
|
||||
|
||||
* The :cpack_gen:`CPack IFW Generator` gained new
|
||||
:variable:`CPACK_IFW_PACKAGE_WATERMARK`,
|
||||
:variable:`CPACK_IFW_PACKAGE_BANNER`,
|
||||
:variable:`CPACK_IFW_PACKAGE_BACKGROUND`,
|
||||
:variable:`CPACK_IFW_PACKAGE_WIZARD_STYLE`,
|
||||
:variable:`CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH`,
|
||||
:variable:`CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT`, and
|
||||
:variable:`CPACK_IFW_PACKAGE_TITLE_COLOR`
|
||||
variables to customize a QtIFW installer look.
|
||||
|
||||
* The :cpack_gen:`CPack productbuild Generator` gained options to sign packages.
|
||||
See the variables :variable:`CPACK_PRODUCTBUILD_IDENTITY_NAME`,
|
||||
:variable:`CPACK_PRODUCTBUILD_KEYCHAIN_PATH`,
|
||||
:variable:`CPACK_PKGBUILD_IDENTITY_NAME`, and
|
||||
:variable:`CPACK_PKGBUILD_KEYCHAIN_PATH`.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to omit tags that are not
|
||||
supported by provided ``rpmbuild`` tool. If unsupported tags are set they
|
||||
are ignored and a developer warning is printed out.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to generate main component
|
||||
package which forces generation of a rpm for defined component without
|
||||
component suffix in filename and package name.
|
||||
See :variable:`CPACK_RPM_MAIN_COMPONENT` variable.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to generate a single
|
||||
``debuginfo`` package on demand even if components packaging is used.
|
||||
See :variable:`CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE` variable.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to support
|
||||
multiple directives per file when using
|
||||
:variable:`CPACK_RPM_USER_FILELIST` variable.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* CMake functionality using cryptographic hashes now supports SHA-3 algorithms.
|
||||
|
||||
* A new generator expression ``$<IF:cond,true-value,false-value>`` was added.
|
||||
It resolves to the true-value if the condition is ``1`` and resolves to
|
||||
the false-value if the condition is ``0``.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* The :module:`FeatureSummary` module commands :command:`set_package_info`,
|
||||
:command:`set_feature_info`, :command:`print_enabled_features`, and
|
||||
:command:`print_disabled_features` are now deprecated.
|
||||
|
||||
* The :module:`UseSWIG` module ``swig_add_module`` command is now
|
||||
deprecated in favor of ``swig_add_library``.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* If a command specified by the :prop_tgt:`<LANG>_CLANG_TIDY` target property
|
||||
returns non-zero at build time this is now treated as an error instead of
|
||||
silently ignored.
|
||||
|
||||
* The :command:`ctest_memcheck` command no longer automatically adds
|
||||
``leak_check=1`` to the options used by ``AddressSanitizer``. The default
|
||||
behavior of ``AddressSanitizer`` is to run `LeakSanitizer` to check leaks
|
||||
unless ``leak_check=0``.
|
||||
|
||||
* The :command:`ctest_memcheck` command was fixed to correctly append extra
|
||||
sanitizer options read from the
|
||||
:variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS` variable to the environment
|
||||
variables used internally by the sanitizers.
|
||||
|
||||
* The :module:`FeatureSummary` module :command:`set_package_properties`
|
||||
command no longer forces the package type to ``OPTIONAL`` when the type
|
||||
is not explicitly set.
|
||||
|
||||
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
|
||||
is now aware of features supported by Intel C++ compilers versions 12.1
|
||||
through 17.0 on UNIX and Windows platforms.
|
||||
|
||||
* Calls to the :module:`FindPkgConfig` module :command:`pkg_check_modules`
|
||||
command following a successful call learned to re-evaluate the cached values
|
||||
for a given prefix after changes to the parameters to the command for that
|
||||
prefix.
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, generated
|
||||
``moc_*``, ``*.moc`` and ``ui_*`` are placed in the
|
||||
``<CMAKE_CURRENT_BINARY_DIR>/<TARGETNAME>_autogen/include`` directory which
|
||||
is automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
|
||||
It is therefore not necessary anymore to have
|
||||
:variable:`CMAKE_CURRENT_BINARY_DIR` in the target's
|
||||
:prop_tgt:`INCLUDE_DIRECTORIES`.
|
||||
|
||||
* The :generator:`Sublime Text 2` generator no longer runs the native
|
||||
build command (e.g. ``ninja`` or ``make``) with verbose build output
|
||||
enabled.
|
||||
|
||||
* The :command:`try_compile` command source file signature now
|
||||
honors the :variable:`CMAKE_WARN_DEPRECATED` variable value
|
||||
in the generated test project.
|
||||
|
||||
* The :ref:`Visual Studio Generators` for VS 2010 and above now place
|
||||
per-source file flags after target-wide flags when they are classified
|
||||
as raw flags with no project file setting (``AdditionalOptions``).
|
||||
This behavior is more consistent with the ordering of flags produced
|
||||
by other generators, and allows flags on more-specific properties
|
||||
(per-source) to override those on more general ones (per-target).
|
||||
|
||||
* The precompiled Windows binary MSI package provided on ``cmake.org`` now
|
||||
records the installation directory in the Windows Registry under the key
|
||||
``HKLM\Software\Kitware\CMake`` with a value named ``InstallDir``.
|
|
@ -0,0 +1,343 @@
|
|||
CMake 3.9 Release Notes
|
||||
***********************
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. contents::
|
||||
|
||||
Changes made since CMake 3.8 include the following.
|
||||
|
||||
New Features
|
||||
============
|
||||
|
||||
Languages
|
||||
---------
|
||||
|
||||
* ``CUDA`` is now supported by the :ref:`Visual Studio Generators`
|
||||
for VS 2010 and above. This complements the existing support by the
|
||||
:ref:`Makefile Generators` and the :generator:`Ninja` generator.
|
||||
CUDA 8.0.61 or higher is recommended due to known bugs in the VS
|
||||
integration by earlier versions.
|
||||
|
||||
* CMake is now aware of the :prop_tgt:`C++ standards <CXX_STANDARD>` and
|
||||
:prop_tgt:`C standards <C_STANDARD>` and their associated meta-features for
|
||||
the following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>`: ``Cray``,
|
||||
``PGI``, and ``XL``.
|
||||
|
||||
Generators
|
||||
----------
|
||||
|
||||
* :ref:`Visual Studio Generators` for VS 2010 and above learned to support
|
||||
the ``ASM_NASM`` language when ``nasm`` is installed.
|
||||
|
||||
* The :generator:`Xcode` generator learned to create Xcode schema files.
|
||||
This is an experimental feature and can be activated by setting the
|
||||
:variable:`CMAKE_XCODE_GENERATE_SCHEME` variable to a ``TRUE`` value.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
* The :command:`add_library` command ``IMPORTED`` option learned to support
|
||||
:ref:`Object Libraries`.
|
||||
|
||||
* The :command:`find_library` command learned to search ``libx32`` paths
|
||||
when the build targets the ``x32`` ABI. See the
|
||||
:prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS` global property.
|
||||
|
||||
* The :command:`include_external_msproject` command learned to use
|
||||
the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property
|
||||
to map current configurations to the external configurations.
|
||||
|
||||
* The :command:`install(TARGETS)` command learned a new ``OBJECTS`` option to
|
||||
specify where to install :ref:`Object Libraries`.
|
||||
|
||||
* The :command:`install(EXPORT)` command learned how to export
|
||||
:ref:`Object Libraries`.
|
||||
|
||||
* The :command:`project` command learned an optional ``DESCRIPTION``
|
||||
parameter to set the :variable:`PROJECT_DESCRIPTION` variable.
|
||||
|
||||
* The :command:`separate_arguments` command gained a ``NATIVE_COMMAND`` mode
|
||||
that performs argument separation depending on the host operating system.
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_ANDROID_NDK_DEPRECATED_HEADERS` variable was added
|
||||
for use when :ref:`Cross Compiling for Android with the NDK` to request
|
||||
use of the deprecated headers even when unified headers are available.
|
||||
The default is now to use unified headers if available.
|
||||
|
||||
* A :variable:`CMAKE_AUTOMOC_DEPEND_FILTERS` variable was introduced to
|
||||
allow :variable:`CMAKE_AUTOMOC` to extract additional dependency file names
|
||||
for ``moc`` from the contents of source files.
|
||||
|
||||
* A :variable:`CMAKE_AUTOUIC_SEARCH_PATHS` variable was introduced to
|
||||
allow :variable:`CMAKE_AUTOUIC` to search for ``foo.ui`` in more
|
||||
places than the vicinity of the file including ``ui_foo.h``.
|
||||
|
||||
* A :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable was added to
|
||||
tell the :command:`find_library` command to search in a ``lib<suffix>``
|
||||
directory before each ``lib`` directory that would normally be searched.
|
||||
|
||||
* A :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION` variable was added to
|
||||
initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` property on all
|
||||
targets.
|
||||
|
||||
* A :variable:`CMAKE_<LANG>_COMPILER_AR` variable was added to hold
|
||||
the path to the GCC/Clang wrapper of ``ar``.
|
||||
|
||||
* A :variable:`CMAKE_<LANG>_COMPILER_RANLIB` variable was added to hold
|
||||
the path to the GCC/Clang wrapper of ``ranlib``.
|
||||
|
||||
* The :variable:`CMAKE_SYSROOT_COMPILE` and :variable:`CMAKE_SYSROOT_LINK`
|
||||
variables were added to use separate sysroots for compiling and linking.
|
||||
|
||||
Properties
|
||||
----------
|
||||
|
||||
* A new :prop_tgt:`AUTOGEN_BUILD_DIR` target property was introduced to set
|
||||
a custom output directory for :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC`,
|
||||
and :prop_tgt:`AUTORCC`.
|
||||
|
||||
* A new :prop_tgt:`AUTOMOC_DEPEND_FILTERS` target property was introduced to
|
||||
allow :prop_tgt:`AUTOMOC` to extract additional dependency file names
|
||||
for ``moc`` from the contents of source files.
|
||||
|
||||
* A new :prop_tgt:`AUTOUIC_SEARCH_PATHS` target property was introduced to
|
||||
allow :prop_tgt:`AUTOUIC` to search for ``foo.ui`` in more
|
||||
places than the vicinity of the file including ``ui_foo.h``.
|
||||
|
||||
* Global properties :prop_gbl:`AUTOGEN_SOURCE_GROUP`,
|
||||
:prop_gbl:`AUTOMOC_SOURCE_GROUP` and
|
||||
:prop_gbl:`AUTORCC_SOURCE_GROUP` were
|
||||
introduced to allow files generated by :prop_tgt:`AUTOMOC` or
|
||||
:prop_tgt:`AUTORCC` to be placed in a :command:`source_group`.
|
||||
|
||||
* A :prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR` target property and corresponding
|
||||
:variable:`CMAKE_BUILD_WITH_INSTALL_NAME_DIR` variable were added to
|
||||
control whether to use the :prop_tgt:`INSTALL_NAME_DIR` target property
|
||||
value for binaries in the build tree. This is for macOS ``install_name``
|
||||
as :prop_tgt:`BUILD_WITH_INSTALL_RPATH` is for ``RPATH``.
|
||||
|
||||
* A :prop_tgt:`CUDA_PTX_COMPILATION` target property was added to
|
||||
:ref:`Object Libraries` to support compiling to ``.ptx`` files
|
||||
instead of host object files.
|
||||
|
||||
* A :prop_gbl:`GENERATOR_IS_MULTI_CONFIG` global property was
|
||||
added to determine whether the current generator is a multi-configuration
|
||||
generator (such as :ref:`Visual Studio Generators` or :generator:`Xcode`).
|
||||
|
||||
* The :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property is now enforced
|
||||
when enabled. CMake will add IPO flags unconditionally or produce an error
|
||||
if it does not know the flags for the current compiler. The project is now
|
||||
responsible to use the :module:`CheckIPOSupported` module to check for IPO
|
||||
support before enabling the target property. See policy :policy:`CMP0069`.
|
||||
|
||||
* The :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property may now
|
||||
be used in combination with explicit ``.def`` files in order to
|
||||
export all symbols from the object files within a target plus
|
||||
an explicit list of symbols that the linker finds in dependencies
|
||||
(e.g. ``msvcrt.lib``).
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
* A :module:`CheckIPOSupported` module was added to help projects
|
||||
check whether interprocedural optimization (IPO) is supported by
|
||||
the current toolchain and CMake version.
|
||||
|
||||
* The :module:`CMakeFindDependencyMacro` module ``find_dependency`` macro
|
||||
now forwards all arguments to the underlying :command:`find_package`
|
||||
call. Existing uses will continue to function as before, but callers can
|
||||
now access the full suite of arguments that :command:`find_package` accepts.
|
||||
|
||||
* The :module:`FeatureSummary` module :command:`feature_summary` command now
|
||||
accepts the new ``DEFAULT_DESCRIPTION`` option that will print the default
|
||||
title for the selected package type.
|
||||
|
||||
* The :module:`FeatureSummary` module gained a new
|
||||
:variable:`FeatureSummary_<TYPE>_DESCRIPTION` variable that can be defined
|
||||
for each ``<TYPE>`` to replace the type name with the specified string
|
||||
whenever the package type is used in an output string by the module.
|
||||
|
||||
* The :module:`FindDoxygen` module learned to control Doxygen behavior using
|
||||
CMake variables and generate documentation via the newly added
|
||||
:command:`doxygen_add_docs` function. The Doxygen input file (``Doxyfile``)
|
||||
is automatically generated and doxygen is run as part of a custom target.
|
||||
Additional components can be specified to find optional tools: ``dot``,
|
||||
``mscgen`` and ``dia``.
|
||||
|
||||
* The :module:`FindMPI` module now provides imported targets.
|
||||
|
||||
* The :module:`FindProtobuf` module :command:`protobuf_generate_cpp`
|
||||
command gained an ``EXPORT_MACRO`` option to specify the name of
|
||||
a DLL export markup macro.
|
||||
|
||||
* The :module:`FindProtobuf` module now supports usage of static libraries
|
||||
for Unix via a new ``Protobuf_USE_STATIC_LIBS`` input variable.
|
||||
|
||||
* The :module:`FindProtobuf` module now provides imported targets
|
||||
when the libraries are found.
|
||||
|
||||
* A new :module:`GoogleTest` module was added to provide the
|
||||
:command:`gtest_add_tests` function independently of the :module:`FindGTest`
|
||||
module. The function was also updated to support keyword arguments, with
|
||||
functionality expanded to allow a test name prefix and suffix to be
|
||||
specified, the dependency on the source files to be optional and the list of
|
||||
discovered test cases to be returned to the caller.
|
||||
|
||||
CTest
|
||||
-----
|
||||
|
||||
* The :command:`ctest_submit` command gained a ``HTTPHEADER`` option
|
||||
to specify custom headers to send during submission.
|
||||
|
||||
* The :manual:`ctest(1)` executable gained new options which allow the
|
||||
developer to disable automatically adding tests to the test set to satisfy
|
||||
fixture dependencies. ``-FS`` prevents adding setup tests for fixtures
|
||||
matching the provided regular expression, ``-FC`` prevents adding cleanup
|
||||
tests for matching fixtures and ``-FA`` prevents adding any test for matching
|
||||
fixtures.
|
||||
|
||||
* A :prop_test:`DISABLED` test property was added to mark tests that
|
||||
are configured but explicitly disabled so they do not run.
|
||||
|
||||
CPack
|
||||
-----
|
||||
|
||||
* The :cpack_gen:`CPack Archive Generator` learned to modify the filename
|
||||
per-component. See the :variable:`CPACK_ARCHIVE_FILE_NAME` variable and
|
||||
its per-component version :variable:`CPACK_ARCHIVE_<component>_FILE_NAME`.
|
||||
|
||||
* The :module:`CPackComponent` module :command:`cpack_add_component` command
|
||||
gained a new ``PLIST <filename>`` option to specify the ``pkgbuild``
|
||||
``--component-plist`` argument when using the
|
||||
:module:`productbuild <CPackProductBuild>` generator.
|
||||
|
||||
* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
|
||||
:command:`cpack_ifw_configure_component_group` commands gained
|
||||
internationalization support for ``DISPLAY_NAME`` and ``DESCRIPTION``
|
||||
options.
|
||||
|
||||
* The :cpack_gen:`CPack IFW Generator` learned the new hint
|
||||
:variable:`CPACK_IFW_ROOT` variable for finding the QtIFW tool suite
|
||||
installed in a non-standard place.
|
||||
|
||||
* The :cpack_gen:`CPack productbuild Generator` gained a new
|
||||
:variable:`CPACK_PRODUCTBUILD_RESOURCES_DIR` variable to
|
||||
specify resources to be copied into the ``Resources``
|
||||
directory.
|
||||
|
||||
* The :cpack_gen:`CPack RPM Generator` learned to modify the ``debuginfo``
|
||||
package name. See the :variable:`CPACK_RPM_DEBUGINFO_FILE_NAME` variable.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` patching system now has the
|
||||
ability to set additional attributes. This can be done by specifying
|
||||
attributes with the ``CPackWiXFragment`` XML tag after the ``Id`` attribute.
|
||||
See the :variable:`CPACK_WIX_PATCH_FILE` variable.
|
||||
|
||||
* The :cpack_gen:`CPack WIX Generator` implemented a new
|
||||
:variable:`CPACK_WIX_ROOT_FOLDER_ID` variable which allows
|
||||
using a custom root folder ID instead of the default
|
||||
``ProgramFilesFolder`` / ``ProgramFiles64Folder``.
|
||||
|
||||
Other
|
||||
-----
|
||||
|
||||
* Interprocedural optimization (IPO) is now supported for GNU and Clang
|
||||
compilers using link time optimization (LTO) flags. See the
|
||||
:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property and
|
||||
:module:`CheckIPOSupported` module.
|
||||
|
||||
* The ``TARGET_OBJECTS``
|
||||
:manual:`generator expression <cmake-generator-expressions(7)>`
|
||||
is now supported by the :command:`add_custom_command` and
|
||||
:command:`file(GENERATE)` commands.
|
||||
|
||||
* Two new informational generator expressions to retrieve Apple Bundle
|
||||
directories have been added. The first one ``$<TARGET_BUNDLE_DIR:tgt>``
|
||||
outputs the full path to the Bundle directory, the other one
|
||||
``$<TARGET_BUNDLE_CONTENT_DIR:tgt>`` outputs the full path to the
|
||||
``Contents`` directory of macOS Bundles and App Bundles. For all other
|
||||
bundle types and SDKs it is identical with ``$<TARGET_BUNDLE_DIR:tgt>``.
|
||||
The new expressions are helpful to query Bundle locations independent of
|
||||
the different Bundle types and layouts on macOS and iOS.
|
||||
|
||||
Deprecated and Removed Features
|
||||
===============================
|
||||
|
||||
* An explicit deprecation diagnostic was added for policies ``CMP0036``
|
||||
and below. The :manual:`cmake-policies(7)` manual explains that the
|
||||
OLD behaviors of all policies are deprecated and that projects should
|
||||
always port to the NEW behaviors as soon as possible.
|
||||
|
||||
* The :generator:`Visual Studio 8 2005` generator is now deprecated
|
||||
and will be removed in a future version of CMake.
|
||||
|
||||
* The :generator:`Visual Studio 7 .NET 2003` generator has been removed.
|
||||
|
||||
* The :generator:`Xcode` generator dropped support for Xcode versions
|
||||
older than 3.
|
||||
|
||||
* The :module:`FindDoxygen` module has deprecated several variables.
|
||||
|
||||
* The version of curl bundled with CMake no longer accepts URLs of the form
|
||||
``file://c:/...`` on Windows due to a change in upstream curl 7.52. Use
|
||||
the form ``file:///c:/...`` instead to work on all versions.
|
||||
|
||||
Other Changes
|
||||
=============
|
||||
|
||||
* When using :prop_tgt:`AUTOMOC`, CMake now scans for the presence of the
|
||||
``Q_PLUGIN_METADATA`` macro and reruns moc when the file from the
|
||||
macro's ``FILE`` argument changes.
|
||||
|
||||
* When :prop_tgt:`AUTOMOC` detects an include statement of the form
|
||||
``#include "moc_<basename>.cpp"`` the search for the respective header file
|
||||
now looks in the :prop_tgt:`INCLUDE_DIRECTORIES` of the target as well.
|
||||
|
||||
* When running tests, CTest learned to treat skipped tests (using the
|
||||
:prop_test:`SKIP_RETURN_CODE` property) the same as tests with the new
|
||||
:prop_test:`DISABLED` property. Due to this change, CTest will not indicate
|
||||
failure when all tests are either skipped or pass.
|
||||
|
||||
* The :generator:`Ninja` generator has loosened the dependencies of object
|
||||
compilation. Object compilation now depends only on custom targets
|
||||
and custom commands associated with libraries on which the object's target
|
||||
depends and no longer depends on the libraries themselves. Source files
|
||||
in dependent targets may now compile without waiting for their targets'
|
||||
dependencies to link.
|
||||
|
||||
* On macOS, ``RPATH`` settings such as :prop_tgt:`BUILD_WITH_INSTALL_RPATH`
|
||||
no longer affect the ``install_name`` field. See policy :policy:`CMP0068`.
|
||||
|
||||
* The :generator:`Visual Studio 14 2015` generator has been taught about
|
||||
a change to the ``v140`` toolset made by a VS 2015 update. VS changed
|
||||
the set of values it understands for the ``GenerateDebugInformation``
|
||||
linker setting that produces the ``-DEBUG`` linker flag variants.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.9.0 include the following.
|
||||
|
||||
3.9.1
|
||||
-----
|
||||
|
||||
* The ``find_`` command ``PACKAGE_ROOT`` search path group added by
|
||||
CMake 3.9.0 has been removed for the 3.9 series due to regressions
|
||||
caused by new use of ``<PackageName>_ROOT`` variables. The behavior
|
||||
may be re-introduced in the future in a more-compatible way.
|
||||
|
||||
3.9.2
|
||||
-----
|
||||
|
||||
* On macOS, the default application bundle ``Info.plist`` file no longer
|
||||
enables Hi-DPI support as it did in 3.9.0 and 3.9.1. The change had
|
||||
to be reverted because it broke iOS applications.
|
||||
|
||||
* The Xcode generator no longer adds "outputPaths" to custom script
|
||||
build phases as it did in 3.9.0 and 3.9.1. This was added in an
|
||||
attempt to support Xcode 9's new build system, but broke incremental
|
||||
rebuilds for both the old and new Xcode build systems.
|
|
@ -0,0 +1,16 @@
|
|||
..
|
||||
This file should be included by the adjacent "index.rst"
|
||||
in development versions but not in release versions.
|
||||
|
||||
Changes Since Release
|
||||
=====================
|
||||
|
||||
The following noteworthy changes have been made in this development
|
||||
version since the preceding release but have not yet been consolidated
|
||||
into notes for a specific release version:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
dev/*
|
|
@ -0,0 +1,34 @@
|
|||
:orphan:
|
||||
|
||||
CMake Release Notes
|
||||
*******************
|
||||
|
||||
..
|
||||
This file should include the adjacent "dev.txt" file
|
||||
in development versions but not in release versions.
|
||||
|
||||
Releases
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
3.18 <3.18>
|
||||
3.17 <3.17>
|
||||
3.16 <3.16>
|
||||
3.15 <3.15>
|
||||
3.14 <3.14>
|
||||
3.13 <3.13>
|
||||
3.12 <3.12>
|
||||
3.11 <3.11>
|
||||
3.10 <3.10>
|
||||
3.9 <3.9>
|
||||
3.8 <3.8>
|
||||
3.7 <3.7>
|
||||
3.6 <3.6>
|
||||
3.5 <3.5>
|
||||
3.4 <3.4>
|
||||
3.3 <3.3>
|
||||
3.2 <3.2>
|
||||
3.1 <3.1>
|
||||
3.0 <3.0>
|
Loading…
Add table
Add a link
Reference in a new issue