123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- 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 :module:`CPackRPM` module 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 :module:`CPackRPM` module learned options to specify
- requirements for pre- and post-install scripts. See the
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_PRE` and
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_POST` variables.
- * The :module:`CPackRPM` module learned options to specify
- requirements for pre- and post-uninstall scripts. See the
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_PREUN` and
- :variable:`CPACK_RPM_PACKAGE_REQUIRES_POSTUN` variables.
- * The :module:`CPackRPM` module learned a new
- :variable:`CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX` variable to
- specify a component-specific value to use instead of
- :variable:`CPACK_PACKAGING_INSTALL_PREFIX`.
- * The :module:`CPackRPM` module learned a new
- :variable:`CPACK_RPM_RELOCATION_PATHS` variable to
- specify multiple relocation prefixes for a single rpm package.
- Other
- -----
- * The :manual:`cmake(1)` ``-E tar`` command now supports creating
- ``.xz``-compressed archives with the ``J`` flag.
- * The :manual:`cmake(1)` ``-E tar`` command learned a new
- ``--files-from=<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.
|