"Fossies" - the Fresh Open Source Software Archive
Member "cmake-3.7.1-win32-x86/share/cmake-3.7/Help/release/3.0.rst" (30 Nov 2016, 20412 Bytes) of archive /windows/misc/cmake-3.7.1-win32-x86.zip:
As a special service "Fossies" has tried to format the requested source page into HTML format (assuming markdown format).
Alternatively you can here view
the uninterpreted source code file.
A member file download can also be achieved by clicking within a package contents listing on the according byte size field.
CMake 3.0 Release Notes
Changes made since CMake 2.8.12 include the following.
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-commands(7), replacing
- cmake-modules(7), replacing
- cmake-policies(7), replacing
- cmake-properties(7), replacing
- cmake-variables(7), replacing
- Release notes for CMake 3.0.0 and above will now be included with the html documentation.
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.
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.
- 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 :prop_gbl:JOB_POOLS global property.
- The add_library command learned a new
INTERFACE library type. Interface libraries have no build rules but may have properties defining usage requirements <cmake-buildsystem(7)> and may be installed, exported, and imported. This is useful to create header-only libraries that have concrete link dependencies on other libraries.
- The 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 <cmake-generator-expressions(7)> 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
- 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
- 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
- Variable CMAKE_<LANG>_COMPILER_TARGET was introduced for use when cross-compiling to specify the target platform in the toolchain file <Cross Compiling Toolchain> 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 :prop_tgt:MAP_IMPORTED_CONFIG_<CONFIG> target property.
- The :prop_dir:ADDITIONAL_MAKE_CLEAN_FILES directory property learned to support generator expressions <cmake-generator-expressions(7)>.
- A new directory property :prop_dir:CMAKE_CONFIGURE_DEPENDS was introduced to allow projects to specify additional files on which the configuration process depends. CMake will re-run at build time when one of these files is modified. Previously this was only possible to achieve by specifying such files as the input to a configure_file command.
- A new Qt AUTORCC feature replaces the need to invoke
qt4_add_resources() by allowing
.qrc files to be listed as target sources.
- A new Qt AUTOUIC feature replaces the need to invoke
- Test properties learned to support generator expressions <cmake-generator-expressions(7)>. This is useful to specify per-configuration values for test properties like :prop_test:REQUIRED_FILES and :prop_test:WORKING_DIRECTORY.
- A new :prop_test:SKIP_RETURN_CODE test property was introduced to tell 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 :prop_tgt:COMPATIBLE_INTERFACE_NUMBER_MAX and :prop_tgt:COMPATIBLE_INTERFACE_NUMBER_MIN for calculating numeric maximum and minimum values respectively.
- 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
- A new CMakeFindDependencyMacro module was introduced with a
find_dependency macro to find transitive dependencies in a package configuration file <cmake-packages(7)>. 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 <cmake-qt(7)> in the same buildsystem.
- The FindRuby module learned to search for Ruby 2.0 and 2.1.
$<PLATFORM_ID:...> generator expressions <cmake-generator-expressions(7)> have been added.
$<CONFIG> generator expression <cmake-generator-expressions(7)> now has a variant which takes no argument. This is equivalent to the
$<LOWER_CASE:...> generator expressions <cmake-generator-expressions(7)> generator expressions have been added.
- A new
$<MAKE_C_IDENTIFIER:...> generator expression <cmake-generator-expressions(7)> has been added.
- The cmake(1)
-E option learned a new
- The ccmake(1) dialog learned to honor the :prop_cache: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.
- Directories named in the :prop_tgt:INTERFACE_INCLUDE_DIRECTORIES target property of imported targets linked conditionally by a generator expression <cmake-generator-expressions(7)> 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 :prop_tgt:INTERFACE_INCLUDE_DIRECTORIES target property used to be silently accepted if they contained a generator expression <cmake-generator-expressions(7)> 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-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 :prop_dir:COMPILE_DEFINITIONS_<CONFIG> directory properties and the :prop_tgt:COMPILE_DEFINITIONS_<CONFIG> target properties have been deprecated. Instead set the corresponding :prop_dir:COMPILE_DEFINITIONS directory property or :prop_tgt:COMPILE_DEFINITIONS target property and use generator expressions <cmake-generator-expressions(7)> like
$<CONFIG:...> to specify per-configuration definitions. See policy CMP0043.
- The :prop_tgt:LOCATION target property should no longer be read from non-IMPORTED targets. It does not make sense in multi-configuration generators since the build configuration is not known while configuring the project. It has been superseded by the
$<TARGET_FILE> generator expression. See policy CMP0026.
- The :prop_tgt:COMPILE_FLAGS target property is now documented as deprecated, though no warning is issued. Use the :prop_tgt:COMPILE_OPTIONS target property or the target_compile_options command instead.
- The GenerateExportHeader module
add_compiler_export_flags function is now deprecated. It has been superseded by the :prop_tgt:<LANG>_VISIBILITY_PRESET and :prop_tgt:VISIBILITY_INLINES_HIDDEN target properties.
- 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
- On OS X, CMake learned to enable behavior specified by the :prop_tgt:MACOSX_RPATH target property by default. This activates use of
@rpath for runtime shared library searches. See policy 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.
$<CXX_COMPILER_ID:...> generator expressions <cmake-generator-expressions(7)> 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.
cmake-mode.el major Emacs editing mode has been cleaned up and enhanced in several ways.
- Include directories specified in the :prop_tgt:INTERFACE_INCLUDE_DIRECTORIES of Imported Targets are treated as
SYSTEM includes by default when handled as usage requirements <Include Directories and Usage Requirements>.