diff options
author | Brad King <brad.king@kitware.com> | 2014-02-19 13:42:01 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-02-19 14:30:00 (GMT) |
commit | db68dd2454372e676cc482f0e722576feb5e28ae (patch) | |
tree | 5ad5564feb49bbf978ed5c6ba8b7483afde38ada /Help/release/3.0.rst | |
parent | d30e4fa703f8c72559e0f8e6ff92b0b957c95d39 (diff) | |
download | CMake-db68dd2454372e676cc482f0e722576feb5e28ae.zip CMake-db68dd2454372e676cc482f0e722576feb5e28ae.tar.gz CMake-db68dd2454372e676cc482f0e722576feb5e28ae.tar.bz2 |
Help: Rename 3.0 release notes to 3.0.0
Bug-fix releases 3.0.x may have their own notes so this will look more
consistent.
Diffstat (limited to 'Help/release/3.0.rst')
-rw-r--r-- | Help/release/3.0.rst | 462 |
1 files changed, 0 insertions, 462 deletions
diff --git a/Help/release/3.0.rst b/Help/release/3.0.rst deleted file mode 100644 index 4532444..0000000 --- a/Help/release/3.0.rst +++ /dev/null @@ -1,462 +0,0 @@ -CMake 3.0 Release Notes -*********************** - -.. only:: html - - .. contents:: - -Changes made since CMake 2.8.12.2 include the following. - -Documentation Changes -===================== - -* The CMake documentation has been converted to reStructuredText and - now transforms via Sphinx (`<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 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:`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 libraies with the ``g`` tag (for MS debug runtime) with - a new ``Boost_USE_DEBUG_RUNTIME`` option. It is ``ON`` by - default to preserve existing behavior. - -* The :module:`FindJava` and :module:`FindJNI` modules learned - to use a ``JAVA_HOME`` CMake variable or environment variable, - and then try ``/usr/libexec/java_home`` on OS X. - -* The :module:`UseJava` module ``add_jar`` function learned a new - ``MANIFEST`` option to pass the ``-m`` option to ``jar``. - -* A new :module:`CMakeFindDependencyMacro` module was introduced with - a ``find_dependency`` macro to find transitive dependencies in - a :manual:`package configuration file <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. - -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 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>`. |