diff options
Diffstat (limited to 'Help/release/3.1.0.rst')
-rw-r--r-- | Help/release/3.1.0.rst | 425 |
1 files changed, 0 insertions, 425 deletions
diff --git a/Help/release/3.1.0.rst b/Help/release/3.1.0.rst deleted file mode 100644 index 97a63f9..0000000 --- a/Help/release/3.1.0.rst +++ /dev/null @@ -1,425 +0,0 @@ -CMake 3.1.0 Release Notes -************************* - -.. only:: html - - .. contents:: - -Changes made since CMake 3.0.0 include the following. - -Documentation Changes -===================== - -* A new :manual:`cmake-compile-features(7)` manual was added. - -New Features -============ - -Generators ----------- - -* The :generator:`Visual Studio 14 2015` generator was added. - -Windows Phone and Windows Store -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* Generators for Visual Studio 11 (2012) and above learned to generate - projects for Windows Phone and Windows Store. One may set the - :variable:`CMAKE_SYSTEM_NAME` variable to ``WindowsPhone`` - or ``WindowsStore`` on the :manual:`cmake(1)` command-line - or in a :variable:`CMAKE_TOOLCHAIN_FILE` to activate these platforms. - Also set :variable:`CMAKE_SYSTEM_VERSION` to ``8.0`` or ``8.1`` to - specify the version of Windows to be targeted. - -NVIDIA Nsight Tegra -^^^^^^^^^^^^^^^^^^^ - -* Generators for Visual Studio 10 (2010) and above learned to generate - projects for NVIDIA Nsight Tegra Visual Studio Edition. One may set - the :variable:`CMAKE_SYSTEM_NAME` variable to ``Android`` on the - :manual:`cmake(1)` command-line or in a :variable:`CMAKE_TOOLCHAIN_FILE` - to activate this platform. - -Syntax ------- - -* The :manual:`cmake-language(7)` syntax for :ref:`Variable References` and - :ref:`Escape Sequences` was simplified in order to allow a much faster - implementation. See policy :policy:`CMP0053`. - -* The :command:`if` command no longer automatically dereferences - variables named in quoted or bracket arguments. See policy - :policy:`CMP0054`. - -Commands --------- - -* The :command:`add_custom_command` command learned to interpret - :manual:`cmake-generator-expressions(7)` in arguments to ``DEPENDS``. - -* The :command:`export(PACKAGE)` command learned to check the - :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable to skip - exporting the package. - -* The :command:`file(STRINGS)` command gained a new ``ENCODING`` - option to enable extraction of ``UTF-8`` strings. - -* The :command:`find_package` command learned to check the - :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` and - :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` - variables to skip searching the package registries. - -* The :command:`get_property` command learned a new ``INSTALL`` scope - for properties. - -* The :command:`install` command learned a ``MESSAGE_NEVER`` option - to avoid output during installation. - -* The :command:`set_property` command learned a new ``INSTALL`` scope - for properties. - -* The :command:`string` command learned a new ``GENEX_STRIP`` subcommand - which removes - :manual:`generator expression <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 :module:`CPackIFW` module. - -* :manual:`cpack(1)` gained ``7Z`` and ``TXZ`` generators supporting - lzma-compressed archives. - -* The :module:`CPackDeb` module learned a new - :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` variable to set the - tarball compression type. - -* The :manual:`cpack(1)` ``WiX`` generator learned to support - a :prop_inst:`CPACK_WIX_ACL` installed file property to - specify an Access Control List. - -Other ------ - -* The :manual:`cmake(1)` ``-E`` option learned a new ``env`` command. - -* The :manual:`cmake(1)` ``-E tar`` command learned to support - lzma-compressed files. - -* :ref:`Object Libraries` may now have extra sources that do not - compile to object files so long as they would not affect linking - of a normal library (e.g. ``.dat`` is okay but not ``.def``). - -* Visual Studio generators for VS 8 and later learned to support - the ``ASM_MASM`` language. - -* The Visual Studio generators learned to treat ``.hlsl`` source - files as High Level Shading Language sources (using ``FXCompile`` - in ``.vcxproj`` files). Source file properties - :prop_sf:`VS_SHADER_TYPE`, :prop_sf:`VS_SHADER_MODEL`, and - :prop_sf:`VS_SHADER_ENTRYPOINT` were added added to specify the - shader type, model, and entry point name. - -New Diagnostics -=============== - -* Policy :policy:`CMP0052` introduced to control directories in the - :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of exported targets. - -Deprecated and Removed Features -=============================== - -* In CMake 3.0 the :command:`target_link_libraries` command - accidentally began allowing unquoted arguments to use - :manual:`generator expressions <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. |