CMake/ChangeLog: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
No edit summary
Line 1: Line 1:
<pre>
<pre>
Changes in CMake 2.8.12.2 (since 2.8.12.1)
------------------------------------------
Brad King (3):
      VS: Map /Fd to ProgramDataBaseFileName for VS 7,8,9 (#14577)
      Replace <OBJECT_DIR> rule placeholder consistently (#14667)
      VS: Convert include path to backslashes for VS >= 10


Robert Maynard (1):
CMake 3.0.0 Release Notes
      Ninja: Avoid re-running CMake on next build after regeneration
*************************


Rolf Eike Beer (1):
Changes made since CMake 2.8.12.2 include the following.
      FindOpenMP: fix detecting compilers that do not need any special flag (#14567)


Ruslan Baratov (1):
      Xcode: Fix storyboard view


Ted Kremenek (1):
Documentation Changes
      CMakeDetermineCompilerId: Fix compiler line match for Xcode 5.1
=====================


Changes in CMake 2.8.12.1 (since 2.8.12)
* The CMake documentation has been converted to reStructuredText and
----------------------------------------
  now transforms via Sphinx (http://sphinx-doc.org) into man and html
Brad King (9):
  pages.  This allows the documentation to be properly indexed and to
      MSVC: Add /FS flag for cl >= 18 to allow parallel compilation (#14492)
  contain cross-references.
      Genex: Reject $ for object libraries (#14532)
      Check for OBJECT_LIBRARY source files at start of generation
      CMP0022: Plain target_link_libraries must populate link interface
      Do not export INTERFACE_LINK_LIBRARIES from non-linkable targets
      CMP0022: Warn about a given target at most once
      Fix summary documentation of INTERFACE_LINK_LIBRARIES
      file(GENERATE): Clear internal records between configures
      cmake: Validate -E cmake_automoc argument count (#14545)


Modestas Vainius (1):
  Conversion from the old internal documentation format was done by an
      Fix spelling in INTERFACE_LINK_LIBRARIES documentation (#14542)
  automatic process so some documents may still contain artifacts.
  They will be updated incrementally over time.


Stephen Kelly (5):
  A basic reStructuredText processor has been implemented to support
      CMP0022: Output link interface mismatch for static library warning
  "cmake --help-command" and similar command-line options.
      Don't add invalid content to static lib INTERFACE_LINK_LIBRARIES.
      CMP0022: Add unit test for null pointer check and message.
      CMP0022: Add test for target_link_libraries plain signature
      Automoc: Add directory-level COMPILE_DEFINITIONS to command line (#14535)


Vladislav Vinogradov (1):
* New manuals were added:
      FindCUDA: Fix NPP library search for CUDA 5.5


Changes in CMake 2.8.12 (since 2.8.12-rc4)
  * "cmake-buildsystem(7)"
----------------------------------------------
Brad King (4):
      Xcode: Fix test architecture selection for Xcode >= 5
      Xcode: Teach Tests/BuildDepends to allow LINK_DEPENDS_NO_SHARED failure
      Xcode: Drop XCODE_DEPEND_HELPER for Xcode >= 5
      Xcode: Fix OBJECT library support for Xcode 5 (#14254)


Stephen Kelly (1):
  * "cmake-commands(7)", replacing "cmakecommands(1)" and
      Genex: Fix processing multiple include directories for relative paths
    "cmakecompat(1)"


Changes in CMake 2.8.12-rc4 (since 2.8.12-rc3)
  * "cmake-developer(7)"
----------------------------------------------
Brad King (8):
      VS: Future-proof Intel project format selection
      MSVC: Drop /link from executable link lines with Ninja
      FindCUDA: Always list custom command outputs in their targets
      FindPNG: Honor old PNG_LIBRARY if provided (#14398)
      FindHDF5: Fix regression in per-configuration library selection
      bash-completion: Future-proof --help-*-list "cXXXX version" filtering
      OS X: Search system SDKs for frameworks
      Use first custom command for the same output (#14446)


Patrick Gansterer (3):
  * "cmake-generator-expressions(7)"
      MSVC: Fix version test for linking corelibc on Windows CE (#14420)
      MSVC: Fix WinCE arch family preprocessor symbol (#14436)
      VS: Use version-specific subsystem for WinCE compiler id (#14440)


Rolf Eike Beer (1):
  * "cmake-generators(7)"
      bootstrap: try better workaround for builds on Linux/HPPA


Stephen Kelly (3):
  * "cmake-language(7)"
      Add differing target property content to policy CMP0022 warning
      Fix CMP0022 warning when no old-style property is set
      genex: Fix preprocessing with incomplete content (#14410).


Changes in CMake 2.8.12-rc3 (since 2.8.12-rc2)
  * "cmake-modules(7)", replacing "cmakemodules(1)"
----------------------------------------------
Robert Maynard (1):
      cmMakefile: Do not track CMake temporary files.


Changes in CMake 2.8.12-rc2 (since 2.8.12-rc1)
  * "cmake-packages(7)"
----------------------------------------------
Brad King (2):
      Fix RunCMake.Configure test expectation newline matching
      Clean up install rules of CMake itself (#14371)


Clinton Stimpson (1):
  * "cmake-policies(7)", replacing "cmakepolicies(1)"
      OSX: Allow an empty INSTALL_NAME_DIR to override MACOSX_RPATH.


Eric Bélanger (1):
  * "cmake-properties(7)", replacing "cmakeprops(1)"
      FindImageMagick: Find libraries named with HDRI support (#14348)


Raphael Kubo da Costa (1):
  * "cmake-qt(7)"
      FindTCL: Add BSD paths for Tcl/Tk 8.6


Robert Maynard (2):
  * "cmake-toolchains(7)"
      VS: Generate ToolsVersion matching each VS version
      cmMakefile: Do not track configured files known to be temporary


Rolf Eike Beer (1):
  * "cmake-variables(7)", replacing "cmakevars(1)"
      CheckC*CompilerFlag: add documentation what to expect from a positive result


Stephen Kelly (6):
* Release notes for CMake 3.0.0 and above will now be included with
      Fix OLD behavior of CMP0021.
  the html documentation.
      try_compile: Extract IMPORTED targets from LINK_DEPENDENT_LIBRARIES
      try_compile: Extract IMPORTED targets from INTERFACE_LINK_LIBRARIES
      Genex: Fix evaluation of MAP_IMPORTED_CONFIG_<CONFIG>
      Fix some whitespace errors in docs.
      Normalize system directories from the interface target property


Yury G. Kudryashov (1):
      CPack: Fix a typo in documentation


Zack Galbreath (1):
New Features
      CTest: Fix GTM coverage parsing line offset bug
============


Changes in CMake 2.8.12-rc1 (since 2.8.11.2)
--------------------------------------------
Adam J. Weigold (1):
      CPackWIX: Add support for custom WiX templates


Alex Neundorf (12):
Syntax
      CMakeSystem: include toolchain file after setting CMAKE_HOST_ (#13796)
------
      Add support files for C, C++ and ASM for the IAR toolchain.
      Add regexps for the IAR toolchain to the vendor list.
      Add IAR to the CMakeDetectC(XX)CompilerID.c(pp).in
      cmake-gui: use shortcut F only for "Find in Output"
      Eclipse: fix #14204 and #14205: no file links to directories
      automoc: add a global AUTOMOC_TARGETS_FOLDER property
      install: do not strip dll import libraries (#14123)
      ExportTargets: add one more comment to the generated file.
      Add documentation for the --graphviz support
      graphvizoptions: add copyright notice
      add macros cmake_print_properties() and cmake_print_variables()


Alexander Mohr (1):
* The CMake language has been extended with *Bracket Argument* and
      VS: Detect MSVC compiler id on ARM toolchain
  *Bracket Comment* syntax inspired by Lua long brackets:


Andreas Mohr (10):
    set(x [===[bracket argument]===] #[[bracket comment]])
      Fix spelling and typos (affecting users)
      Fix spelling and typos (affecting binary data / module messages)
      Fix spelling and typos (non-binary)
      Fix spelling and typos (product names)
      FindwxWidgets: add DOC strings with usual style
      Explain distribution of Win9x binary on all Windows versions.
      VS10: add detailed comment about MIDL processing
      Docs: Update description of CMAKE_(BUILD_TYPE|CONFIGURATION_TYPES)
      Docs: Clarify that CMAKE_*_(PREFIX|SUFFIX) affect filenames
      Docs: Clarify wording "flag used" => "flag (to|will) be used"


Ben Boeckel (12):
  Content between equal-length open- and close-brackets is taken
      set_property: Do not remove a property when APPENDing nothing
  literally with no variable replacements.
      Tests/RunCMake: Document stripping of expected output
      export: Error when exporting a target without a language
      variable_watch: Store client data as pointers
      variable_watch: Add a deleter for the client data
      variable_watch: Match client_data when finding duplicates
      variable_watch: Allow specifying the data to match in RemoveWatch
      variable_watch: Prevent making extra entries in the watch map
      variable_watch: Fix a typo in the error message
      variable_watch: Don't share memory for callbacks
      variable_watch: Check newValue for NULL
      variable_watch: Add test for watching a variable multiple times


Bill Hoffman (1):
  Warning: This syntax change could not be made in a fully
      Do not set CMAKE_MATCH_ variables when not neeeded
    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.


Bjoern Thiel (1):
      SelectLibraryConfigurations: Fix for cached <base>_LIBRARY


Brad King (91):
Generators
      VS: Separate compiler and linker PDB files (#11899, #14062)
----------
      MSVC: Invoke 'link' directly for executables
      Ninja: Fix OBJECT_DIR placeholder path conversion
      VS 10: Escape ; as %3B in preprocessor definitions (#14073)
      CTest: Simplify ctest_* command source/build dir lookup
      get_filename_component: Add explicit unit tests
      get_filename_component: Add DIRECTORY option (#14091)
      Xcode: Use explicitFileType to mark source types (#14093)
      Check{C,CXX}CompilerFlag: Test using C locale (#14102)
      Windows: Search '/' prefix only when cross compiling (#10994)
      Recognize ld with toolchain prefix (#13960)
      VS: Always initialize CMAKE_CONFIGURATION_TYPES in IDE generators
      Begin post-2.8.11 development
      Sanitize linker name to parse implicit link line (#14154)
      VS: Allow /Fa to set AssemblerListingLocation (#14153)
      Tests/IncludeDirectories: Avoid shared library with no symbols
      if: Add test for IS_DIRECTORY
      try_compile: Add test for bad call error cases
      try_compile: Refactor argument processing
      variable_watch: Add test for MODIFIED_ACCESS report
      bootstrap: Compile KWSys SystemTools with UTIME(S|NSAT) values
      variable_watch: Remove leftover debugging code (#14187)
      variable_watch: Print accesses as "CMake Debug Log" messages
      Docs: Clarify CMAKE_PARENT_LIST_FILE (#14194)
      get_filename_component: Test ABSOLUTE of .. after root component
      try_compile: Add signature to allow multiple SOURCES
      enable_language: Clarify documentation
      Split cmBootstrapCommands.cxx into two sources
      Document CMAKE_INSTALL_PREFIX in CMAKE_SYSTEM_PREFIX_PATH
      cmake: Document "-E tar" support for .zip (#14225)
      FindBoost: Clarify failure on missing 'static' libs (#14235)
      CMakeDetermineVSServicePack: Improve documentation
      CMakeDetermineVSServicePack: Add VS 11 update 1 and 2 (#14239)
      Document ENV syntax as a "variable" (#14245)
      Embarcadero: Use response files only for includes, objects, and libs
      Escape target flags taken from COMPILE_OPTIONS
      Refactor target COMPILE_OPTIONS and COMPILE_FLAGS handling
      CMakeDetermineVSServicePack: Add VS 11 update 3
      Document removal of 'register' from flex/bison output
      VS12: Find proper MSBuild for VSProjectInSubdir test
      Fortran: Use explicit type in Fortran 90 check
      project: Document top-level CMakeLists.txt requirement
      ExternalProject: Document multiple COMMAND lines
      include: Clarify variable access scope for included file
      VS: Fix /MAP:mapfile flag mapping (#14282)
      cmake: On configure error suggest looking at CMake*.log files
      try_compile: Escape CMAKE_<lang>_FLAGS in test projects (#14268)
      try_compile: Add COPY_FILE_ERROR option to capture failure
      FindPNG: Add versioned library names for 1.6 (#14289)
      cmake: Fix resource leak reported by cppcheck
      VS,Xcode: Drop incorrect legacy dependency trace (#14291)
      OS X: Add copyright notices to Darwin-*-Fortran.cmake
      VS: Avoid leaking child process output back to IDE (#14266)
      Fix ExportImport test cmp0022NEW build on Watcom
      add_test: Document test name restrictions (#14298)
      UseJava: Update notice of copyright by Kitware
      add_custom_command: Manage backtrace memory correctly (#14299)
      Teach compiler ABI check to tolerate try_compile COPY_FILE failure
      Test COMPILE_DEFINITIONS target property get/set/get round-trip
      Check*CompilerFlag: Document use of CMAKE_REQUIRED_DEFINITIONS (#14309)
      sha2: Avoid type-punned pointer dereference (#14314)
      VS 6: Tell BuildDepends test to tolerate ninjadep failure
      cmMakefile: Do not track configured files known to be temporary
      libarchive: Update README-CMake.txt for new snapshot
      libarchive: Include cm_zlib.h to get zlib used by CMake
      libarchive: Silence API deprecation warnings
      libarchive: Avoid struct init with variable
      libarchive: Remove build options not used by CMake
      libarchive: Backport to CMake 2.8.2
      VS10: Honor user-specified /SUBSYSTEM: flag (#14326)
      VS10: Escape include paths in XML project files (#14331)
      OS X: Search for SDK based on deployment target (#14324)
      bootstrap: Do not suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysroot (#14324)
      OS X: Enable command-line build without tools in PATH
      VS 6,7: Refactor local generators to avoid GetSourceFileWithOutput
      cmake-gui: Fix build rules for Qt5 on Windows
      Include cmMakefile.h before cm*Lexer.h to get stdint.h first
      Skip CTestLimitDashJ test on Borland
      Add RunCMake.Syntax test to cover argument parsing
      cmListFileLexer: Fix line number after backslash in string
      cmListFileLexer: Split normal and legacy unquoted arguments
      cmListFileArgument: Generalize 'Quoted' bool to 'Delimeter' enum
      Add RunCMake.Syntax test cases for command invocation styles
      cmListFileCache: Convert CMake language parser to class
      Warn about arguments not separated by whitespace
      Warn about unquoted arguments that look like long brackets
      cmListFileLexer: Modify flex output to avoid Borland warning
      Cygwin: Avoid legacy warnings in RunCMake.* tests
      Update version introducing CMP0021, CMP0022, and CMP0023
      OS X: Do not default to non-existent deployment target SDK
      Do not warn about left paren not separated by a space


Christian Maaser (1):
* A new "CodeLite" extra generator is available for use with the
      VS: Add support for .NET target framework version
  Makefile or Ninja generators.


Clinton Stimpson (12):
* A new "Kate" extra generator is available for use with the
      Improve documentation for CPACK_PACKAGE_INSTALL_REGISTRY_KEY.
  Makefile or Ninja generators.
      Refactor how bundles and frameworks are supported.
      Xcode: Add support for shared library versioning
      OS X:  Fix getting of CFBundle LOCATION property.
      OS X: Add RPATH support for Mac.
      Xcode: Add rpath support in Xcode generator.
      OS X: Add support for @rpath in export files.
      OS X: Add test for rpaths on Mac.
      OS X: Improvements for getting install name of dylib.
      OS X: Enable rpath support on Mac OS X when find_library() is used.
      OS X: Fix regression handling frameworks for Ninja
      OS X: If necessary, use xcrun to help find otool used to query install names.


Cédric OCHS (1):
* The "Ninja" generator learned to use "ninja" job pools when
      Xcode: Support XCODE_ATTRIBUTE_ with [variant=<config>] (#12532)
  specified by a new "JOB_POOLS" global property.


Daniele E. Domenichelli (15):
      FindGTK2: Move check for pangocairo in gtk module
      FindGTK2: Detect gthread library
      FindFreetype: Detect Freetype installed by GtkMM installer for win
      FindGTK2: Do not fail on MSVC11 if vc100 libraries are available
      FindGTK2: Add GTK2_DEFINITIONS variable
      SelectLibraryConfigurations: Do not cache the _LIBRARY variable
      SelectLibraryConfigurations: Use -NOTFOUND instead of copying the vars
      FindGTK2: Use GTK_XXX_LIBRARY_DEBUG libraries in debug mode
      FindGTK2: Append _LIBRARY to var name in _GTK2_FIND_LIBRARY
      FindGTK2: Append _INCLUDE_DIR to var name in _GTK2_FIND_INCLUDE_DIR
      FindGTK2: Update local changelog
      FindGTK2: Remove GTK2_SKIP_MARK_AS_ADVANCED option
      FindGTK2: gthread-2.0 folder does not exist
      FindGTK2: Detect gmodule library
      FindGTK2: Detect pangoft2 and pangoxft libraries


David Coppa (1):
Commands
      OpenBSD: Enable ELF parsing and editing (#14241)
--------


David Golub (1):
* The "add_library()" command learned a new "INTERFACE" library
      CPack/NSIS: Obtain path from which to uninstall from registry (#14124)
  type. Interface libraries have no build rules but may have
  properties defining "usage requirements" and may be installed,
  exported, and imported.  This is useful to create header-only
  libraries that have concrete link dependencies on other libraries.


Eric NOULARD (5):
* The "export()" command learned a new "EXPORT" mode that retrieves
      Add support for componentized USER spec file
  the list of targets to export from an export set configured by the
      CPackRPM add mechanism to remove path from generated list of file in RPM spec.
  "install(TARGETS)" command "EXPORT" option.  This makes it easy to
      CPackRPM add /usr/lib64 to the list of builtin to-be-excluded path
  export from the build tree the same targets that are exported from
      CPackRPM protect '@' character in filename processed in the spec file.
  the install tree.
      CPackRPM make the changelog line conform to expected format


Fredrik Axelsson (1):
* The "export()" command learned to work with multiple dependent
      CPackWIX: Handle CPACK_PACKAGE_EXECUTABLES (#13967)
  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 "include()" the generated targets file later during
  project configuration because it will not be available. Use *Alias
  Targets* instead.  See policy "CMP0024".


Funda Wang (1):
* The "install(FILES)" command learned to support "generator
      FindImageMagick: Find v6 include dir (#14174)
  expressions" in the list of files.


Graham Markall (2):
* The "project()" command learned to set some version variables to
      OS X: Add Fortran library version flags (#14249)
  values specified by the new "VERSION" option or to empty strings.
      UseJava: Pass sources to javac using response file (#13028)
  See policy "CMP0048".


Gregoire Lejeune (1):
* The "string()" command learned a new "CONCAT" mode. It is
      Allow using Java in a cross-compilation toolchain
  particularly useful in combination with the new *Bracket Argument*
  syntax.


Ian Monroe (2):
* The "unset()" command learned a "PARENT_SCOPE" option matching
      Ninja: use cd /D to set directory on Windows
  that of the "set()" command.
      CPackWIX: Fix MSI package layout regression from parent


Igor Murzov (2):
* The "include_external_msproject()" command learned to handle
      bash-completion: Add -S,-SP options arguments completion
  non-C++ projects like ".vbproj" or ".csproj".
      bash-completion: Fix/improve generator names extraction


Jack O'Connor (1):
* The "ctest_update()" command learned to update work trees managed
      Eclipse: Add a missing space in the documentation
  by the Perforce (p4) version control tool.


Jason Spiro (1):
* The "message()" command learned a "DEPRECATION" mode. Such
      MinGW: Find mingw32-make included with Code::Blocks IDE (#14302)
  messages are not issued by default, but may be issued as a warning
  if "CMAKE_WARN_DEPRECATED" is enabled, or as an error if
  "CMAKE_ERROR_DEPRECATED" is enabled.


John Farrier (2):
* The "target_link_libraries()" command now allows repeated use of
      VS: Add Windows Forms Support
  the "LINK_PUBLIC" and "LINK_PRIVATE" keywords.
      VS: Add VS_GLOBAL_ROOTNAMESPACE target property


Jonas Andersen (1):
      VS: Add Resx configuration to the vcxproj file


LibArchive Upstream (1):
Variables
      libarchive 3.1.2 (reduced)
---------


Marc Bartholomaeus (4):
* Variable "CMAKE_FIND_NO_INSTALL_PREFIX" has been introduced to
      cmake-gui: Add search functions for Output window (#9733)
  tell CMake not to add the value of "CMAKE_INSTALL_PREFIX" to the
      cmake-gui: Add search functions to the context menu of the Output widget
  "CMAKE_SYSTEM_PREFIX_PATH" variable by default. This is useful when
      cmake-gui: Change shortcut of the search field from Ctrl-F to Alt-E
  building a project that installs some of its own dependencies to
      cmake-gui: Add function for going to next error message in Output window
  avoid finding files it is about to replace.


Marcel Loose (1):
* Variable "CMAKE_STAGING_PREFIX" was introduced for use when cross-
      FindCUDA: Remove duplicate entries from INCLUDE_DIRECTORIES.
  compiling to specify an installation prefix on the host system that
  differs from a "CMAKE_INSTALL_PREFIX" value meant for the target
  system.


Marius Schamschula (1):
* Variable "CMAKE_SYSROOT" was introduced to specify the toolchain
      FindX11: Search in /opt/X11 for OS X 10.8 (#14232)
  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.


Mathias Gaunard (1):
* Variable "CMAKE_<LANG>_COMPILER_TARGET" was introduced for use
      FindCUDA: CUDA_COMPUTE_BUILD_PATH uses relative paths to binary dir.
  when cross-compiling to specify the target platform in the
  *toolchain file* specified by the "CMAKE_TOOLCHAIN_FILE" variable.
  This is used to pass an option such as "--target=<triple>" to some
  cross- compiling compiler drivers.


Matt McCormick (1):
* Variable "CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>" has been introduced
      ExternalProject: Allow blank SVN_USERNAME/SVN_PASSWORD (#14128)
  to optionally initialize the "MAP_IMPORTED_CONFIG_<CONFIG>" target
  property.


Matthew Bentham (1):
      Xcode: Honor CMAKE_(MODULE|SHARED)_LINKER_FLAGS_<CONFIG> (#14161)


Matthew Woehlke (3):
Properties
      UseJava.cmake: fully use cmake_parse_arguments in add_jar
----------
      FindProtobuf: also find pthread
      UseJava.cmake: document add_jar compat shim


Nicolas Despres (1):
* The "ADDITIONAL_MAKE_CLEAN_FILES" directory property learned to
      Optimize custom command full-path dependency lookup
  support "generator expressions".


Nils Gladitz (1):
* A new directory property "CMAKE_CONFIGURE_DEPENDS" was introduced
      Add cmake_host_system_information command
  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
  "configure_file()" command.


Patrick Gansterer (20):
* A new *AUTORCC* feature replaces the need to invoke
      Add option to use stdout/stderr of original terminal in cmake --build
  "qt4_add_resources()" by allowing ".qrc" files to be listed as
      Unify the way the flags of a static library are read
  target sources.
      Add support for CMAKE_STATIC_LINKER_FLAGS
      Add CMAKE_STATIC_LINKER_FLAGS to CMakeCommonLanguageInclude
      Add documentation for the missing CMAKE_*_LINKER_FLAGS_* variables
      Add additonal tests for the linker flags
      VS6: Add handling of CMAKE_*_LINKER_FLAGS_<CONFIG> variables
      VS6: Hardcode id_machine_6 for compiler detection
      VS10: Do not set the TargetMachine when detecting the compiler
      VS: Set CMAKE_VS_PLATFORM_NAME for VS7 and VS71 too
      VS: Replace ArchitectureId with PlatformName
      VS12: Remove duplicated overload of UseFolderProperty()
      Fix detection of WinCE SDKs with 64bit verion of CMake
      VS: Unify how the name of the generator is specified
      VS10: Add support for assembler code (#11536)
      WIN: Use COFF file header header for architecture detection (#14083)
      Improve const-correctness in cmVisualStudioGeneratorOptions
      Fix setting of the entry point symbol for Windows CE (#14088)
      Add support for new Windows CE compiler
      VS11: Add support for Windows CE SDKs


Paul Kunysch (1):
* A new *AUTOUIC* feature replaces the need to invoke
      CTest: Add test for running many tests in parallel
  "qt4_wrap_ui()".


Pavel Shramov (1):
* Test properties learned to support "generator expressions". This
      cmDependsC: Collapse relative include paths
  is useful to specify per-configuration values for test properties
  like "REQUIRED_FILES" and "WORKING_DIRECTORY".


Petr Kmoch (5):
* A new "SKIP_RETURN_CODE" test property was introduced to tell
      Add projectDir parameter to GenerateBuildCommand
  "ctest(1)" to treat a particular test return code as if the test
      VS: Create parser for Visual Studio .sln files
  were not run.  This is useful for test drivers to report that
      VS: Use .sln parser to build targets in subdirs with msbuild (#13623)
  certain test requirements were not available.
      VS: Add test for building MSBuild project in subdir
      ctest_build: Pass projectDir to GenerateBuildCommand


Reid Kleckner (1):
* New types of *Compatible Interface Properties* were introduced,
      Ninja: Make cmcldeps depfile output more consistent with 'ninja -t msvc'
  namely the "COMPATIBLE_INTERFACE_NUMBER_MAX" and
  "COMPATIBLE_INTERFACE_NUMBER_MIN" for calculating numeric maximum
  and minimum values respectively.


Richard Ulrich (3):
      CPackWIX: Handle multiple shortcuts in the start menu
      CPackWIX: Add option to specify the language(s) of the installer
      CMakeCPack: Provide an upgrade guid for WiX


Robert Maynard (9):
Modules
      cmMakefile: Refactor AddCMakeDependFile  and AddCMakeOutputFile.
-------
      Ninja: Track configured files so we can regenerate them.
      cmMakefile: Track configured files so we can regenerate them (#13582)
      Add a test to expose a bug with add_custom_command and ninja.
      Ninja: GlobalNinjaGenerator WriteBuild and WritePhonyBuild non static
      Ninja: Custom Command file depends don't need to exist before building
      FindCUDA: Search for libraries in <prefix>/lib/<arch>/nvidida-current.
      Ninja: Properly convert all paths to unix style before we do set intersection.
      Ninja: Update BuildDepends test to verify cmcldeps depfiles.


Robin Lee (1):
* The "CheckTypeSize" module "check_type_size" macro and the
      FindOpenSSL: Fix spelling of CMAKE_CROSSCOMPILING (#14075)
  "CheckStructHasMember" module "check_struct_has_member" macro
  learned a new "LANGUAGE" option to optionally check C++ types.


Rolf Eike Beer (25):
* The "ExternalData" module learned to work with no URL templates if
      FindOpenGL: simplify OS selection code
  a local store is available.
      FindOpenGL: require headers to be found on non-Windows platforms (#13746)
      Tests: create output files for all memory checkers
      CTest: use an output file for Valgrind (#14110)
      CTest: remove unreachable code and CTestTestMemcheckUnknown test
      Tests: remove code duplication in CTestTestMemCheck tests
      Tests: verify that memory checker output files are always present
      CTest: drop suppression for gcc 2.9.6 errors from default Valgrind flags
      Tests: add test for non-existent Valgrind suppression file
      CTest: fix comment documenting cmBoundsCheckerParser class
      Tests: add a test with custom options passed to valgrind
      CTest: make sure never to report negative test times (#14132)
      Doc: fix example for FAIL_REGULAR_EXPRESSION
      CTest: break after first regex match on output
      Tests: ignore Guard Malloc messages in MemChecker tests
      CTest: avoid useless changing of directory
      Tests: fix build of dummy memtester on AIX
      wizard: fix warnings
      wizard: simplify control flow
      cmTarget: drop the unused local typedef LinkLine
      Tests: ignore GuardMalloc messages on all Apple build, not just XCode ones
      replace string(... MATCHES "^const$) with string(... STREQUAL "const")
      Revert "CTest: fix pre and post test commands with spaces" (#13887)
      FindPNG: improve library detection (#14301)
      CTest: create one output file per memcheck (#14303)


Sean McBride (1):
* The "ExternalProject" function "ExternalProject_Add" learned a new
      Remove some uses of obsolete 'register' storage specifier
  "GIT_SUBMODULES" option to specify a subset of available submodules
  to checkout.


Sebastian Leske (1):
* A new "FindBacktrace" module has been added to support
      Document CMAKE_<LANG>_FLAGS variable (#14305)
  "find_package(Backtrace)" calls.


Stephen Kelly (126):
* A new "FindLua" module has been added to support
      Make the QtAutomoc test compile with either Qt 4 or Qt 5
  "find_package(Lua)" calls.
      Add a test for Qt5Automoc
      Remove an endif() followed by an if() for the same condition.
      Fix some copyastos in the DetermineRCCompiler file.
      Test transitive includes from setting the LINK_LIBRARIES property.
      Test the use of target transitive compile definitions with moc.
      Fix handling of commas in arbitrary content in genexes.
      Fix style.
      Remove unused marker for a variable which is now used.
      Extract the ProcessArbitraryContent method.
      Rename the method determining if a genex accepts arbitrary content.
      Make it possible for any genex to have arbitrary content at the end.
      Add the JOIN generator expression.
      Test that linking using the debug keyword to tll works.
      automoc: Read target defines unconditionally
      Remove unused typedef.
      Fix brace indentation.
      Add EXPORT_NAME property.
      Remove unused vector population.
      Sublime: Honor source-level COMPILE_FLAGS property
      Docs: cmake -G selects a "build system" generator
      Recognize shared library files with a numerical suffix
      FindQt4: Fix QUIET failure with Qt 5 but not Qt 4
      Error on relative path in INCLUDE_DIRECTORIES target property.
      include_directories: Fix handling of empty or space-only entries
      CTest: Read CTEST_PARALLEL_LEVEL from environment
      string: Add MAKE_C_IDENTIFIER subcommand
      GenerateExportHeader: Add newlines to separate the compiler output.
      GenerateExportHeader: Allow use of of this macro with MODULEs.
      file: Add GENERATE command to produce files at generate time
      Tests/Module/GenerateExportHeader: Test exported free-function
      Add $<LINK_LANGUAGE> generator expression
      GenerateExportHeader: Generate only C identifiers as defines
      Tests/CompileDefinitions: Avoid spaces in defines on VS 6
      Use the qt5::moc imported target instead of a variable.
      QtAutomoc: Get the Qt version through the target link interface
      Fix indentation.
      VS6: Rename some variables to correspond to config values.
      Add cmLocalGenerator::GetCompileOptions.
      Add <LANG>_COMPILER_ID generator expressions.
      cmTarget: Rename struct to be more re-usable.
      cmTarget: Rename LinkInterfaceIncludeDirectoriesEntries
      Add COMPILE_OPTIONS target property.
      Add target_compile_options command.
      Introduce target property <LANG>_VISIBILITY_PRESET
      Add a COMPILE_OPTION for a VISIBILITY_INLINES_HIDDEN target property.
      Qt4Macros: Allow specifying a TARGET in invokations of macros.
      Introduce add_compile_options command.
      Remove unused cmAddDefinitionsCommand::ParseDefinition method.
      Add some spaces to the INCLUDE_DIRECTORIES documentation.
      CLI: Suppress the unused warning if the key value pair is cached.
      Use --sysroot when cross compiling.
      Add missing 'seen' check for evaluating COMPILE_OPTIONS.
      Find targets in INTERFACE_COMPILE_OPTIONS when exporting for try_compile.
      Use a preprocessor loop to manage the valid transitive properties.
      Generate INTERFACE_COMPILE_OPTIONS on export.
      Genex: Fix indentation in docs.
      cmSystemTools: Fix typo in comment.
      Style: Don't put an else after a return.
      Add compiler target compile options.
      QtAutomoc: Fix handling of list separator for compile definitions.
      QtAutomoc: Use config-dependent compile definitions and includes.
      De-duplicate version comparison code.
      Add generator expressions for version comparision.
      Don't run the WarnUnusedCliUnused test on Windows.
      Add whitespace after colons in error messages.
      Add missing return after error report.
      Genex: Make LINK_LANGUAGE report an error when evaluating link libraries.
      Genex: Extend EvaluatingLinkLibraries to also check the top target name.
      Genex: Report error if a target file is needed to evaluate link libraries.
      Add generator expressions for compiler versions.
      Split the GeneratorExpression test into a third part.
      Remove unused variable.
      Add Target API to determine if an include is a system include.
      Store system include directories in the cmTarget.
      Extend the cmTargetPropCommandBase interface property handling.
      Add a SYSTEM parameter to target_include_directories (#14180)
      Add entire link interface transitive closure as target depends.
      Test non-IMPORTED libraries in the INTERFACE of IMPORTED libraries.
      GenexEval: Add abstracted access to link interface for a target.
      Introduce the LINK_ONLY generator expression.
      Introduce the INTERFACE_LINK_LIBRARIES property.
      Export: Generate INTERFACE_LINK_LIBRARIES property on targets.
      TLL: Don't populate old link interface if CMP0022 is NEW.
      Overload cmLocalGenerator::AppendDefines to add a list.
      Add an overload of cmIDEOptions::AddDefines taking a vector of strings.
      Refactor cmTarget::GetCompileDefinitions to use an out-vector, not a string.
      Document some variables for deprecation control.
      Genex: Make CMP0021 and CMP0022 usable with TARGET_POLICY
      Revert "Use --sysroot when cross compiling."
      Add target property debugging for COMPILE_DEFINITIONS
      Mark qt4_use_modules and qt4_automoc as obsolete.
      Add the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property.
      Don't add trailing whitespace to error message.
      Remove TODO to uniq COMPILE_OPTIONS
      Remove the LINK_LANGUAGE generator expression.
      Genex: Fix $<CONFIG> with IMPORTED targets and multiple locations.
      FindQt4: Don't use Qt component _FOUND vars before they're defined (#14286)
      Add a convenient way to add the includes install dir to the INTERFACE.
      Use linked frameworks as a source of include directories.
      target_link_libraries: Add PUBLIC/PRIVATE/INTERFACE keyword signature
      FindQt4: Re-add QAxServer to the QT_MODULES.
      FindQt4: Populate the INTERFACE_LINK_LIBRARIES of IMPORTED targets.
      Genex: Allow relative paths in INSTALL_INTERFACE.
      cmTarget: Fix property name typo in docs.
      Docs: Document file(GENERATE) CONDITION as optional.
      Qt4Macros: Remove unneeded generate CONDITION.
      Qt4Macros: Remove undefined varible use.
      Qt4Macros: Simplify some variable population.
      Docs: Document existing target property debugging options.
      Docs: Trim trailing whitespace in generated doc.
      Docs: Generalize and de-duplicate VISIBILITY_PREFIX docs.
      Docs: Document variables for default visibility values.
      Export: Fix typo of LINK_INTERFACE_LIBRARIES.
      cmTarget: Remove duplicates when printing traces of tll signatures
      cmTarget: Fix iface libraries and languages for static libraries.
      Genex: Disallow LINKER_LANGUAGE only when used on a static library.
      install: Remove error condition using INCLUDES DESTINATION without EXPORT.
      Fix crash on export of target with empty INTERFACE_INCLUDE_DIRECTORIES.
      Allow target commands to be invoked with no items (#14325).
      Docs: Fix typo in CMAKE_DEBUG_TARGET_PROPERTIES
      cmTarget: Add NAME property
      Export: Process generator expressions from INCLUDES DESTINATION.
      Add the ALIAS target concept for libraries and executables.
      Revert "Add compiler target compile options."
      Genex: Fix segfault when parsing ends with parameter expectation.


Vadim Zhukov (1):
* The "FindBoost" module learned a new "Boost_NAMESPACE" option to
      Add cmake_reset_check_state() macro
  change the "boost" prefix on library names.


Victor Zverovich (1):
* The "FindBoost" module learned to control search for libraies with
      Use GmakeErrorParser instead of deprecated MakeErrorParser (fixes bug 0013699)
  the "g" tag (for MS debug runtime) with a new
  "Boost_USE_DEBUG_RUNTIME" option.  It is "ON" by default to preserve
  existing behavior.


Yichao Yu (1):
* The "FindJava" and "FindJNI" modules learned to use a "JAVA_HOME"
      variable_watch: Add missing string enumeration entry (#14188)
  CMake variable or environment variable, and then try
  "/usr/libexec/java_home" on OS X.


Ömer Fadıl USTA (3):
* The "UseJava" module "add_jar" function learned a new "MANIFEST"
      ccmake: Add missing initializers reported by cppcheck
  option to pass the "-m" option to "jar".
      libarchive: Fix free() order to avoid accessing freed memory
 
      cmcurl: Fix resource leak reported by cppcheck
* A new "CMakeFindDependencyMacro" module was introduced with a
  "find_dependency" macro to find transitive dependencies in a
  "package configuration file".  Such dependencies are omitted by the
  listing of the "FeatureSummary" module.
 
* The "FindQt4" module learned to create *Imported Targets* for Qt
  executables.  This helps disambiguate when using multiple "Qt
  versions" in the same buildsystem.
 
 
Generator Expressions
---------------------
 
* New "$<PLATFORM_ID>" and "$<PLATFORM_ID:...>" "generator
  expressions" have been added.
 
* The "$<CONFIG>" "generator expression" now has a variant which
  takes no argument.  This is equivalent to the "$<CONFIGURATION>"
  expression.
 
* New "$<UPPER_CASE:...>" and "$<LOWER_CASE:...>" "generator
  expressions" generator expressions have been added.
 
* A new "$<MAKE_C_IDENTIFIER:...>" "generator expression" has been
  added.
 
 
Other
-----
 
* The "cmake(1)" "-E" option learned a new "sleep" command.
 
* The "ccmake(1)" dialog learned to honor the "STRINGS" cache entry
  property to cycle through the enumerated list of possible values.
 
* The "cmake-gui(1)" dialog learned to remember window settings
  between sessions.
 
* The "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 "INTERFACE_INCLUDE_DIRECTORIES" target
  property of imported targets linked conditionally by a "generator
  expression" were not checked for existence.  Now they are checked.
  See policy "CMP0027".
 
* Build target names must now match a validity pattern and may no
  longer conflict with CMake-defined targets.  See policy "CMP0037".
 
* Build targets that specify themselves as a link dependency were
  silently accepted but are now diagnosed.  See "CMP0038".
 
* The "target_link_libraries()" command used to silently ignore
  calls specifying as their first argument build targets created by
  "add_custom_target()" but now diagnoses this mistake. See policy
  "CMP0039".
 
* The "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 "CMP0040".
 
* Relative paths in the "INTERFACE_INCLUDE_DIRECTORIES" target
  property used to be silently accepted if they contained a "generator
  expression" but are now rejected.  See policy "CMP0041".
 
* The "get_target_property()" command learned to reject calls
  specifying a non-existent target.  See policy "CMP0045".
 
* The "add_dependencies()" command learned to reject calls
  specifying a dependency on a non-existent target. See policy
  "CMP0046".
 
* Link dependency analysis learned to assume names containing "::"
  refer to *Alias Targets* or *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 "CMP0028".
 
* When the "project()" or "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
  "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 "add_library()" or
  "add_executable()" command learned to reject items which require an
  undocumented extra layer of variable expansion. See policy
  "CMP0049".
 
* Use of "add_custom_command()" undocumented "SOURCE" signatures now
  results in an error.  See 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 "CMP0029" disallows "subdir_depends()"
 
  * Policy "CMP0030" disallows "use_mangled_mesa()"
 
  * Policy "CMP0031" disallows "load_command()"
 
  * Policy "CMP0032" disallows "output_required_files()"
 
  * Policy "CMP0033" disallows "export_library_dependencies()"
 
  * Policy "CMP0034" disallows "utility_source()"
 
  * Policy "CMP0035" disallows "variable_requires()"
 
  * Policy "CMP0036" disallows "build_name()"
 
* The "cmake(1)" "-i" wizard mode has been removed. Instead use an
  interactive dialog such as "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 "cmake(1)" "--help-custom-
  modules" option now produces a warning at runtime and generates a
  minimal document that reports the limitation.
 
* The "COMPILE_DEFINITIONS_<CONFIG>" directory properties and the
  "COMPILE_DEFINITIONS_<CONFIG>" target properties have been
  deprecated.  Instead set the corresponding "COMPILE_DEFINITIONS"
  directory property or "COMPILE_DEFINITIONS" target property and use
  "generator expressions" like "$<CONFIG:...>" to specify per-
  configuration definitions. See policy "CMP0043".
 
* The "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 "CMP0026".
 
* The "COMPILE_FLAGS" target property is now documented as
  deprecated, though no warning is issued.  Use the "COMPILE_OPTIONS"
  target property or the "target_compile_options()" command instead.
 
* The "GenerateExportHeader" module "add_compiler_export_flags"
  function is now deprecated.  It has been superseded by the
  "<LANG>_VISIBILITY_PRESET" and "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 "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" -> "Visual Studio 10 2010"
 
  * "Visual Studio 11" -> "Visual Studio 11 2012"
 
  * "Visual Studio 12" -> "Visual Studio 12 2013"
 
  This clarifies which generator goes with each Visual Studio version.
  The old names are recognized for compatibility.
 
* The "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 "CMP0025".
 
* The "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 "CMP0047".
 
* On 64-bit OS X the "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
  "MACOSX_RPATH" target property by default.  This activates use of
  "@rpath" for runtime shared library searches. See policy "CMP0042".
 
* The "build_command()" command now returns a "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 "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 "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:...>" "generator
  expressions" used to perform case-insensitive comparison but have
  now been corrected to perform case-sensitive comparison. See policy
  "CMP0044".
 
* The builtin "edit_cache" target will no longer select "ccmake(1)"
  by default when no interactive terminal will be available (e.g. with
  "Ninja" or an IDE generator). Instead "cmake-gui(1)" will be
  preferred if available.
 
* The "ExternalProject" download step learned to re-attempt download
  in certain cases to be more robust to temporary network failure.
 
* The "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
  "INTERFACE_INCLUDE_DIRECTORIES" of *Imported Targets* are treated as
  "SYSTEM" includes by default when handled as *usage requirements*.


</pre>
</pre>

Revision as of 15:38, 28 February 2014


CMake 3.0.0 Release Notes
*************************

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:

  * "cmake-buildsystem(7)"

  * "cmake-commands(7)", replacing "cmakecommands(1)" and
    "cmakecompat(1)"

  * "cmake-developer(7)"

  * "cmake-generator-expressions(7)"

  * "cmake-generators(7)"

  * "cmake-language(7)"

  * "cmake-modules(7)", replacing "cmakemodules(1)"

  * "cmake-packages(7)"

  * "cmake-policies(7)", replacing "cmakepolicies(1)"

  * "cmake-properties(7)", replacing "cmakeprops(1)"

  * "cmake-qt(7)"

  * "cmake-toolchains(7)"

  * "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 *Bracket Argument* and
  *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 "CodeLite" extra generator is available for use with the
  Makefile or Ninja generators.

* A new "Kate" extra generator is available for use with the
  Makefile or Ninja generators.

* The "Ninja" generator learned to use "ninja" job pools when
  specified by a new "JOB_POOLS" global property.


Commands
--------

* The "add_library()" command learned a new "INTERFACE" library
  type. Interface libraries have no build rules but may have
  properties defining "usage requirements" and may be installed,
  exported, and imported.  This is useful to create header-only
  libraries that have concrete link dependencies on other libraries.

* The "export()" command learned a new "EXPORT" mode that retrieves
  the list of targets to export from an export set configured by the
  "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 "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 "include()" the generated targets file later during
  project configuration because it will not be available. Use *Alias
  Targets* instead.  See policy "CMP0024".

* The "install(FILES)" command learned to support "generator
  expressions" in the list of files.

* The "project()" command learned to set some version variables to
  values specified by the new "VERSION" option or to empty strings.
  See policy "CMP0048".

* The "string()" command learned a new "CONCAT" mode. It is
  particularly useful in combination with the new *Bracket Argument*
  syntax.

* The "unset()" command learned a "PARENT_SCOPE" option matching
  that of the "set()" command.

* The "include_external_msproject()" command learned to handle
  non-C++ projects like ".vbproj" or ".csproj".

* The "ctest_update()" command learned to update work trees managed
  by the Perforce (p4) version control tool.

* The "message()" command learned a "DEPRECATION" mode. Such
  messages are not issued by default, but may be issued as a warning
  if "CMAKE_WARN_DEPRECATED" is enabled, or as an error if
  "CMAKE_ERROR_DEPRECATED" is enabled.

* The "target_link_libraries()" command now allows repeated use of
  the "LINK_PUBLIC" and "LINK_PRIVATE" keywords.


Variables
---------

* Variable "CMAKE_FIND_NO_INSTALL_PREFIX" has been introduced to
  tell CMake not to add the value of "CMAKE_INSTALL_PREFIX" to the
  "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 "CMAKE_STAGING_PREFIX" was introduced for use when cross-
  compiling to specify an installation prefix on the host system that
  differs from a "CMAKE_INSTALL_PREFIX" value meant for the target
  system.

* 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 "CMAKE_<LANG>_COMPILER_TARGET" was introduced for use
  when cross-compiling to specify the target platform in the
  *toolchain file* specified by the "CMAKE_TOOLCHAIN_FILE" variable.
  This is used to pass an option such as "--target=<triple>" to some
  cross- compiling compiler drivers.

* Variable "CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>" has been introduced
  to optionally initialize the "MAP_IMPORTED_CONFIG_<CONFIG>" target
  property.


Properties
----------

* The "ADDITIONAL_MAKE_CLEAN_FILES" directory property learned to
  support "generator expressions".

* A new directory property "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
  "configure_file()" command.

* A new *AUTORCC* feature replaces the need to invoke
  "qt4_add_resources()" by allowing ".qrc" files to be listed as
  target sources.

* A new *AUTOUIC* feature replaces the need to invoke
  "qt4_wrap_ui()".

* Test properties learned to support "generator expressions". This
  is useful to specify per-configuration values for test properties
  like "REQUIRED_FILES" and "WORKING_DIRECTORY".

* A new "SKIP_RETURN_CODE" test property was introduced to tell
  "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 *Compatible Interface Properties* were introduced,
  namely the "COMPATIBLE_INTERFACE_NUMBER_MAX" and
  "COMPATIBLE_INTERFACE_NUMBER_MIN" for calculating numeric maximum
  and minimum values respectively.


Modules
-------

* The "CheckTypeSize" module "check_type_size" macro and the
  "CheckStructHasMember" module "check_struct_has_member" macro
  learned a new "LANGUAGE" option to optionally check C++ types.

* The "ExternalData" module learned to work with no URL templates if
  a local store is available.

* The "ExternalProject" function "ExternalProject_Add" learned a new
  "GIT_SUBMODULES" option to specify a subset of available submodules
  to checkout.

* A new "FindBacktrace" module has been added to support
  "find_package(Backtrace)" calls.

* A new "FindLua" module has been added to support
  "find_package(Lua)" calls.

* The "FindBoost" module learned a new "Boost_NAMESPACE" option to
  change the "boost" prefix on library names.

* The "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 "FindJava" and "FindJNI" modules learned to use a "JAVA_HOME"
  CMake variable or environment variable, and then try
  "/usr/libexec/java_home" on OS X.

* The "UseJava" module "add_jar" function learned a new "MANIFEST"
  option to pass the "-m" option to "jar".

* A new "CMakeFindDependencyMacro" module was introduced with a
  "find_dependency" macro to find transitive dependencies in a
  "package configuration file".  Such dependencies are omitted by the
  listing of the "FeatureSummary" module.

* The "FindQt4" module learned to create *Imported Targets* for Qt
  executables.  This helps disambiguate when using multiple "Qt
  versions" in the same buildsystem.


Generator Expressions
---------------------

* New "$<PLATFORM_ID>" and "$<PLATFORM_ID:...>" "generator
  expressions" have been added.

* The "$<CONFIG>" "generator expression" now has a variant which
  takes no argument.  This is equivalent to the "$<CONFIGURATION>"
  expression.

* New "$<UPPER_CASE:...>" and "$<LOWER_CASE:...>" "generator
  expressions" generator expressions have been added.

* A new "$<MAKE_C_IDENTIFIER:...>" "generator expression" has been
  added.


Other
-----

* The "cmake(1)" "-E" option learned a new "sleep" command.

* The "ccmake(1)" dialog learned to honor the "STRINGS" cache entry
  property to cycle through the enumerated list of possible values.

* The "cmake-gui(1)" dialog learned to remember window settings
  between sessions.

* The "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 "INTERFACE_INCLUDE_DIRECTORIES" target
  property of imported targets linked conditionally by a "generator
  expression" were not checked for existence.  Now they are checked.
  See policy "CMP0027".

* Build target names must now match a validity pattern and may no
  longer conflict with CMake-defined targets.  See policy "CMP0037".

* Build targets that specify themselves as a link dependency were
  silently accepted but are now diagnosed.  See "CMP0038".

* The "target_link_libraries()" command used to silently ignore
  calls specifying as their first argument build targets created by
  "add_custom_target()" but now diagnoses this mistake. See policy
  "CMP0039".

* The "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 "CMP0040".

* Relative paths in the "INTERFACE_INCLUDE_DIRECTORIES" target
  property used to be silently accepted if they contained a "generator
  expression" but are now rejected.  See policy "CMP0041".

* The "get_target_property()" command learned to reject calls
  specifying a non-existent target.  See policy "CMP0045".

* The "add_dependencies()" command learned to reject calls
  specifying a dependency on a non-existent target. See policy
  "CMP0046".

* Link dependency analysis learned to assume names containing "::"
  refer to *Alias Targets* or *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 "CMP0028".

* When the "project()" or "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
  "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 "add_library()" or
  "add_executable()" command learned to reject items which require an
  undocumented extra layer of variable expansion. See policy
  "CMP0049".

* Use of "add_custom_command()" undocumented "SOURCE" signatures now
  results in an error.  See 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 "CMP0029" disallows "subdir_depends()"

  * Policy "CMP0030" disallows "use_mangled_mesa()"

  * Policy "CMP0031" disallows "load_command()"

  * Policy "CMP0032" disallows "output_required_files()"

  * Policy "CMP0033" disallows "export_library_dependencies()"

  * Policy "CMP0034" disallows "utility_source()"

  * Policy "CMP0035" disallows "variable_requires()"

  * Policy "CMP0036" disallows "build_name()"

* The "cmake(1)" "-i" wizard mode has been removed. Instead use an
  interactive dialog such as "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 "cmake(1)" "--help-custom-
  modules" option now produces a warning at runtime and generates a
  minimal document that reports the limitation.

* The "COMPILE_DEFINITIONS_<CONFIG>" directory properties and the
  "COMPILE_DEFINITIONS_<CONFIG>" target properties have been
  deprecated.  Instead set the corresponding "COMPILE_DEFINITIONS"
  directory property or "COMPILE_DEFINITIONS" target property and use
  "generator expressions" like "$<CONFIG:...>" to specify per-
  configuration definitions. See policy "CMP0043".

* The "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 "CMP0026".

* The "COMPILE_FLAGS" target property is now documented as
  deprecated, though no warning is issued.  Use the "COMPILE_OPTIONS"
  target property or the "target_compile_options()" command instead.

* The "GenerateExportHeader" module "add_compiler_export_flags"
  function is now deprecated.  It has been superseded by the
  "<LANG>_VISIBILITY_PRESET" and "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 "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" -> "Visual Studio 10 2010"

  * "Visual Studio 11" -> "Visual Studio 11 2012"

  * "Visual Studio 12" -> "Visual Studio 12 2013"

  This clarifies which generator goes with each Visual Studio version.
  The old names are recognized for compatibility.

* The "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 "CMP0025".

* The "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 "CMP0047".

* On 64-bit OS X the "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
  "MACOSX_RPATH" target property by default.  This activates use of
  "@rpath" for runtime shared library searches. See policy "CMP0042".

* The "build_command()" command now returns a "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 "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 "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:...>" "generator
  expressions" used to perform case-insensitive comparison but have
  now been corrected to perform case-sensitive comparison. See policy
  "CMP0044".

* The builtin "edit_cache" target will no longer select "ccmake(1)"
  by default when no interactive terminal will be available (e.g. with
  "Ninja" or an IDE generator). Instead "cmake-gui(1)" will be
  preferred if available.

* The "ExternalProject" download step learned to re-attempt download
  in certain cases to be more robust to temporary network failure.

* The "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
  "INTERFACE_INCLUDE_DIRECTORIES" of *Imported Targets* are treated as
  "SYSTEM" includes by default when handled as *usage requirements*.