CMake Changelog

What's new in CMake 3.18.3

September 23, 2020
  • Alexandru Croitor (1):
  • AutoGen: Fix moc and uic dependencies when building Qt itself
  • Ben McMorran (1):
  • foreach: Fix crash parsing integer out of range
  • Brad King (5):
  • gitlab-ci: Prefer MR rules for any pipeline associated with a MR
  • Help: Update 3.18.2 release notes to mention 3.16.9 and 3.17.5
  • gitlab-ci: update macOS jobs to use Xcode 11.7
  • Check*CompilerFlag: Do not set result as a normal variable too
  • CMake 3.18.3
  • Cristian Adam (2):
  • PCH: Mark CMake PCH source files as -x -header
  • PCH: Fix 30s wait for VS2008 when used via -Tv90
  • Joerg Bornemann (2):
  • AutoMoc: Restore support for re-running after project file changes
  • AutoMoc: Re-run moc if a dependency is missing
  • Josef Angstenberger (1):
  • file(GENERATE): Create output file structures for all directories first
  • Kyle Edwards (5):
  • Tests: Pass additional Qt information to Ninja and NMC tests
  • Ninja Multi-Config: Fix clean:all target
  • Ninja Multi-Config: Fix cleaning of utility targets with commands
  • Ninja Multi-Config: Fix dependencies of utility targets
  • Ninja Multi-Config: Fix dependencies of custom commands
  • Malcolm Parsons (1):
  • FindJNI: Add arm64 support
  • Marc Chevrier (4):
  • UseSWIG: Update option -interface usage
  • FindPython: enhance ABI checks against include directory
  • FindPython: CMP0012 must be set to NEW
  • ARMClang: Fix link line generation after addition of armlink support
  • Michael Hirsch (1):
  • FindMatlab: add R2020b => 9.9
  • Raul Tambre (1):
  • MSVC: Record support for c_static_assert
  • Robert Maynard (1):
  • CUDA: Support setting CUDA14/17 when using MSVC
  • Sumit Bhardwaj (1):
  • Implement cm::static_reference_cast by declval

New in CMake 3.18.2 (August 21, 2020)

  • Alexandru Croitor (2):
  • AutoGen: Fix over-specified direct dependencies of custom command
  • AutoGen: Add test to check for correct AutoMoc dependencies
  • Axel Huebl (1):
  • FindMPI: Fix regression in pthread guard
  • Ben Boeckel (1):
  • FPHSA: detect inclusion between find modules
  • Brad King (8):
  • Tests: Isolate RunCMake.FindPkgConfig from caller environment
  • FindRuby: Restore compatibility variable RUBY_INCLUDE_PATH
  • Xcode: Explicitly turn off signing in try_compile projects
  • PCH: Avoid Apple-specific architecture flags on other platforms
  • gitlab-ci: add 'cmake' tag to all jobs
  • Tests: Fix RunCMake.try_compile test for C standards with MSVC 19.27
  • gitlab-ci: Update Windows builds to MSVC 19.27
  • CMake 3.18.2
  • Craig Scott (2):
  • ExternalProject: Stop patch target from always appearing out-of-date
  • ExternalProject: Stop configure target from always appearing out-of-date
  • Cristian Adam (1):
  • PCH: Avoid unnecessary 30s delay on MSBuild Generator with REUSE_FROM
  • Daniele E. Domenichelli (1):
  • FindRuby: Add documentation for deprecated variables
  • Joerg Bornemann (2):
  • Autogen: Turn off moc path prefix generation by default
  • Help: Add 3.18.2 release note about AUTOMOC_PATH_PREFIX default change
  • Kyle Edwards (1):
  • Ninja: Restore shorter path to response files
  • Laurits Riple (1):
  • GoogleTest: Restore support for list arguments in TEST_EXECUTOR
  • Marc Chevrier (3):
  • FindPython: ensure user's policies are respected
  • FindPython: manage SOABI for all Python versions
  • FindPython: enhance robustness of version extraction from library name
  • Raul Tambre (1):
  • MSVC: Record support for C11 and c_restrict
  • Robert Maynard (1):
  • CMakeFindBinUtils: Always consider plain binutils when not cross-compiling
  • Seth R Johnson (1):
  • FindHDF5: fix compiler detection when HL is disabled
  • Thomas Bernard (1):
  • llvm-rc: Fix quoting of path to cmake in CMAKE_RC_COMPILE_OBJECT

New in CMake 3.18.1 (August 12, 2020)

  • Ben Boeckel (1):
  • gitlab-ci: avoid failing dependent steps
  • Brad King (16):
  • cmGlobalXCodeGenerator: Save CMAKE_SYSTEM_NAME in member
  • Swift: Fix regression in linking to interface libraries
  • Xcode: Explicitly specify default native architecture on macOS
  • bootstrap: Add options to control use of system nghttp2
  • GHS: Fix crash when GHS_NO_SOURCE_GROUP_FILE property is not defined
  • Auxiliary: Add options to control Vim and Emacs file installation
  • cmake-gui: Fix crash when built with Qt 5.14 or later
  • VS: Restore toleration of target-wide -TP flag with MSVC
  • Xcode: Suppress legacy build system deprecation warning
  • Help: Update file(GET_RUNTIME_DEPENDENCIES) prose to match option names
  • FindXalanC: Fix version parsing for XalanC 1.12
  • bootstrap: Fix support for Intel compiler with modern GNU system compiler
  • Compilers: Ignore -print-sysroot prefix when it is '/'
  • add_test: Revert "Allow special characters in test name"
  • Clang: Fix fallback compile features when simulating old MSVC versions
  • CMake 3.18.1
  • Cristian Adam (1):
  • Unity Builds: Do not set SKIP_AUTOGEN to source files
  • Julien Schueller (1):
  • centos5: Fix FTBFS with strdup
  • Kyle Edwards (1):
  • Ninja Multi-Config: Make link response files per-config
  • Mike Gelfand (1):
  • FindCURL: Fix list index check after search
  • Nate Avers (1):
  • ExternalProject: omit --no-checkout from git clone when using git 2.20.x.
  • Stephan Rohmen (2):
  • Graphviz: Restore support for per-target dependency graph options
  • Tests: Cover Graphviz support for per-target dependency graph options

New in CMake 3.17.3 (June 29, 2020)

  • Selection of the Objective C or C++ compiler now considers the CC or CXX environment variable if the OBJC or OBJCXX environment variable is not set.
  • The FindPkgConfig module now extracts include directories prefixed with -isystem into the *_INCLUDE_DIRS variables and INTERFACE_INCLUDE_DIRECTORIES target properties. Previously they would be places in *_CFLAGS_OTHER variables and INTERFACE_COMPILE_OPTIONS target properties.

New in CMake 3.17.1 (June 29, 2020)

  • CMake 3.17.0 updated the CPack NSIS Generator with changes that require NSIS 3.0 or later. CMake 3.17.1 now enforces the use of a sufficiently new version.

New in CMake 3.17.0 (June 29, 2020)

  • New Features:
  • Generators:
  • cmake(1) gained a Ninja Multi-Config generator, which is similar to the Ninja generator but can be used to build multiple configurations at once.
  • Visual Studio Generators learned to support per-config sources. Previously only Command-Line Build Tool Generators supported them.
  • Visual Studio Generators for VS 2010 and above now support specifying the VCTargetsPath value for project files in CMAKE_GENERATOR_TOOLSET setting.
  • Visual Studio Generators for VS 2010 and above learned to support .NET Standard and .NET Core. See the DOTNET_TARGET_FRAMEWORK target property and associated CMAKE_DOTNET_TARGET_FRAMEWORK variable.
  • Languages:
  • The Compile Features functionality now offers meta-features for the CUDA language standard levels (e.g. cuda_std_03, cuda_std_14). See CMAKE_CUDA_KNOWN_FEATURES.
  • Compilers:
  • The IBM XL Fortran compiler is now supported by the Ninja generator.
  • Command-Line:
  • cmake(1) gained a --debug-find command-line option to enable additional human-readable output on where find_* commands search.
  • cmake(1) gained a --trace-format command-line option that can be used to set the --trace output format. Currently, the old human readable and the new JSON format are supported. The new JSON format is easier to parse automatically than the existing format.
  • cmake(1) gained a -E rm command-line tool that can be used to remove directories and files. This supersedes the existing -E remove and -E remove_directory tools and has better semantics.
  • Commands:
  • The add_custom_command() command learned to interpret paths in DEPENDS arguments that are specified relative to the current binary directory.
  • The foreach() command learned a new ZIP_LISTS option to iterate over multiple lists simultaneously.
  • The load_cache(READ_WITH_PREFIX) command mode is now allowed when using cmake -P to Run a Script.
  • The message() command learned to output context provided in the CMAKE_MESSAGE_CONTEXT variable for log levels NOTICE and below. Enable this output with the new --log-context command-line option or CMAKE_MESSAGE_CONTEXT_SHOW variable.
  • The message() command gained new keywords CHECK_START, CHECK_PASS and CHECK_FAIL.
  • The target_compile_options() command now honors the BEFORE keyword more consistently. See policy CMP0101.
  • Variables:
  • A CMAKE_CTEST_ARGUMENTS variable was added to specify a list of command-line arguments passed to CTest when running through the test (or RUN_TESTS) target of the generated build system.
  • The following variables are now defined inside a function()
  • CMAKE_CURRENT_FUNCTION
  • CMAKE_CURRENT_FUNCTION_LIST_DIR
  • CMAKE_CURRENT_FUNCTION_LIST_FILE
  • CMAKE_CURRENT_FUNCTION_LIST_LINE
  • The CMAKE_CUDA_RUNTIME_LIBRARY variable and CUDA_RUNTIME_LIBRARY target property were introduced to select the CUDA runtime library used when linking targets that use CUDA.
  • The CMAKE_FIND_DEBUG_MODE variable was introduced to print extra find_* call information during the cmake run to standard error. Output is designed for human consumption and not for parsing.
  • The CMAKE_EXPORT_COMPILE_COMMANDS variable now takes its initial value from the CMAKE_EXPORT_COMPILE_COMMANDS environment variable if no explicit configuration is given.
  • The CMAKE__COMPILER_LAUNCHER variable, if not set explicitly, now takes its initial value from the CMAKE__COMPILER_LAUNCHER environment variable.
  • The CMAKE_MESSAGE_LOG_LEVEL variable can now be used to persist a log level between CMake runs, unlike the --log-level command line option which only applies to that particular run.
  • The CMAKE_XCODE_SCHEME_ENVIRONMENT variable was added to initialize the XCODE_SCHEME_ENVIRONMENT target property.
  • The CMAKE_XCODE_SCHEME_WORKING_DIRECTORY variable and associated XCODE_SCHEME_WORKING_DIRECTORY target property were added to tell the Xcode generator to set the value of the Custom Working Directory schema option.
  • Properties:
  • The AIX_EXPORT_ALL_SYMBOLS target property and associated CMAKE_AIX_EXPORT_ALL_SYMBOLS variable were created to optionally explicitly disable automatic export of symbols from shared libraries on AIX.
  • The DEPRECATION target property was added to mark a target as deprecated. If a linked target is marked as deprecated, a warning with the deprecation message is issued at generate time.
  • The INSTALL_NAME_DIR target property now supports generator expressions. In particular, the $ generator expression can be used to set the directory relative to the install-time prefix.
  • Target properties MACHO_COMPATIBILITY_VERSION and MACHO_CURRENT_VERSION were added to set the compatibility_version and curent_version, respectively, for Mach-O binaries. For backwards compatibility, if these properties are not set, SOVERSION and VERSION are used respectively as fallbacks.
  • The VS_DOTNET_DOCUMENTATION_FILE target property was added to tell Visual Studio Generators to generate a DocumentationFile reference in .csproj files.
  • Modules:
  • The ExternalProject module ExternalProject_Add() command gained a GIT_SUBMODULES_RECURSE option to specify whether Git submodules should be updated recursively. The default is on to preserve existing behavior.
  • The FindCUDAToolkit module was added to find the CUDA Toolkit without enabling CUDA as a language.
  • The FindCURL module learned to find CURL using the CURLConfig.cmake package configuration file generated by CURL’s cmake buildsystem. It also gained a new CURL_NO_CURL_CMAKE option to disable this behavior.
  • The FindFLEX module’s FLEX_TARGET command now runs flex with CMAKE_CURRENT_BINARY_DIR as the working directory. See policy CMP0098.
  • The FindLibArchive module now provides an imported target for libarchive.
  • The FindPython module has learned to find Python components in active virtual environments managed by conda.
  • The FindPython3 and FindPython modules gained, respectively, variable Python3_SOABI and Python_SOABI giving the standard extension suffix for modules. Moreover, commands Python3_add_library() and Python_add_library() gained the option WITH_SOABI to prefix the library suffix with the value of SOABI.
  • The FindLibXml2 module now provides an imported target for the xmllint executable.
  • Autogen:
  • AUTOMOC and AUTOUIC learned to process headers with a .hh extension. See policy CMP0100.
  • CTest:
  • The CTEST_CONFIGURATION_TYPE variable is now set from the command line when ctest(1) is invoked with -C .
  • The ctest(1) tool gained support for Dr. Memory to run memcheck runs.
  • The ctest(1) tool gained a --no-tests= option to explicitly set and unify the behavior between direct invocation and script mode if no tests were found.
  • The ctest(1) tool gained a --repeat : option to specify conditions in which to repeat tests. This generalizes the existing --repeat-until-fail option to add modes for until-pass and after-timeout.
  • The ctest_test() command gained a REPEAT : option to specify conditions in which to repeat tests.
  • CPack:
  • The CPack DragNDrop Generator learned to use the CPACK_DMG__FILE_NAME variable to set a custom filename when packaging components into their own DMGs.
  • The CPack DragNDrop Generator learned to handle RTF formatted license files. When CPACK_DMG_SLA_DIR variable is set, .license.rtf is considered, but only as a fallback when the plaintext (.txt) file is not found in order to maintain backwards compatibility.
  • The CPack NSIS Generator gained a new variable CPACK_NSIS_MUI_HEADERIMAGE to set the header image. To not break existing setups, it still defaults to CPACK_PACKAGE_ICON if the new variable is not set.
  • The CPack NSIS Generator now supports CPACK_NSIS_UNINSTALL_NAME. This can be used to specify the name of the Uninstall program.
  • The CPack NSIS Generator now supports CPACK_NSIS_WELCOME_TITLE and CPACK_NSIS_WELCOME_TITLE_3LINES. These can be used to specify the welcome page title and display it in 3 lines.
  • The CPack NSIS Generator now supports CPACK_NSIS_FINISH_TITLE and CPACK_NSIS_FINISH_TITLE_3LINES. These can be used to specify the finish page title and display it in 3 lines.
  • The CPack productbuild Generator gained support for a CPACK_PRODUCTBUILD_BACKGROUND variable to specify a background image for the macOS installer.
  • Other:
  • ccmake(1) now displays cache values using colors based on the entry type if the terminal supports color.
  • ccmake(1) now displays messages and a progress bar during configure and generate. It will keep the output displayed if any errors or warnings occurred.
  • Deprecated and Removed Features
  • An explicit deprecation diagnostic was added for policy CMP0068 and policy CMP0069 (CMP0067 and below were already deprecated). The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
  • The CPack PackageMaker Generator generator has been deprecated because Xcode no longer distributes the PackageMaker tools. The undocumented OSXX11 generator has also been deprecated.
  • The cmake(1) command-line -E remove and -E remove_directory tools are deprecated in favor of the new -E rm tool. The older tools always returned 0 if a named path did not exist even without the force option and cannot be fixed without breaking compatibility, and so have been superseded.
  • The CPack NSIS Generator now requires NSIS 3.0 or later.
  • Other Changes:
  • The file API index file now emits a multiConfig flag specifying whether or not the generator supports multiple output configurations.
  • Target link properties INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES and INTERFACE_LINK_DEPENDS are now transitive over private dependencies on static libraries. See policy CMP0099.
  • When using MinGW tools, the find_library() command no longer finds .dll files by default. Instead, it expects .dll.a import libraries to be available.
  • The MinGW Makefiles generator no longer issues an error if sh.exe is present in the environment’s PATH.
  • The Ninja generator now prefers the first ninja build tool to appear in the PATH no matter whether it is called ninja-build, ninja, or samu. Previously the first of those names to appear anywhere in the PATH would be preferred.
  • With SDCC the sdar tool is now preferred over sdcclib as librarian. The latter was deprecated by SDCC 3.2.0 and removed in SDCC 3.8.6.
  • With SDCC the default flags no longer include any target-specific flags. Previously the default flags were hard-coded for 8051.
  • The CMAKE_VS_GLOBALS variable value now applies during compiler identification and in targets created by the add_custom_target() command.
  • The Xcode generator no longer hard-codes -Wmost, -Wno-four-char-constants, and -Wno-unknown-pragmas warning flags.

New in CMake 3.5.0 (March 9, 2016)

  • New Features:
  • GUI:
  • The cmake-gui(1) gained options to control warnings about deprecated functionality.
  • The cmake-gui(1) learned an option to set the toolset to be used with VS IDE and Xcode generators, much like the existing -T option to cmake(1).
  • The cmake-gui(1) gained a Regular Expression Explorer which may be used to create and evaluate regular expressions in real-time. The explorer window is available via the Tools menu.
  • Command-Line:
  • The -Wdev and -Wno-dev cmake(1) options now also enable and suppress the deprecated warnings output by default.
  • The suppression of developer warnings as errors can now be controlled with the new -Werror=dev and -Wno-error=dev cmake(1) options.
  • The cmake(1) -E command-line tools copy, copy_if_different, copy_directory, and make_directory learned to support multiple input files or directories.
  • Commands:
  • The cmake_parse_arguments() command is now implemented natively. The CMakeParseArguments module remains as an empty placeholder for compatibility.
  • The install(DIRECTORY) command learned to support generator expressions in the list of directories.
  • Variables:
  • The CMAKE_ERROR_DEPRECATED variable can now be set using the -Werror=deprecated and -Wno-error=deprecated cmake(1) options.
  • The CMAKE_WARN_DEPRECATED variable can now be set using the -Wdeprecated and -Wno-deprecated cmake(1) options.
  • Properties:
  • The VS_GLOBAL_ target property is now implemented for VS 2010 and above. Previously it worked only in VS 2008 and below.
  • Modules:
  • The ExternalProject module learned a new GIT_REMOTE_NAME option to control the git clone --origin value.
  • The FindBoost module now provides imported targets such as Boost::boost and Boost::filesystem.
  • The FindFLEX module FLEX_TARGET macro learned a new DEFINES_FILE option to specify a custom output header to be generated.
  • The FindGTest module now provides imported targets.
  • The FindGTK2 module, when GTK2_USE_IMPORTED_TARGETS is enabled, now sets GTK2_LIBRARIES to contain the list of imported targets instead of the paths to the libraries. Moreover it now sets a new GTK2_TARGETS variable containing all the targets imported.
  • The FindOpenMP module learned to support Clang.
  • The FindOpenSSL module gained a new OPENSSL_MSVC_STATIC_RT option to search for libraries using the MSVC static runtime.
  • The FindPNG module now provides imported targets.
  • The FindTIFF module now provides imported targets.
  • A FindXalanC module was introduced to find the Apache Xalan-C++ XSL transform processing library.
  • The FindXercesC module now provides imported targets.
  • Platforms:
  • Support was added for the ARM Compiler (arm.com) with compiler id ARMCC.
  • A new platform file for cross-compiling in the Cray Linux Environment to target compute nodes was added. See Cross Compiling for the Cray Linux Environment for usage details.
  • The Compile Features functionality is now aware of features supported by Clang compilers on Windows (MinGW).
  • When building for embedded Apple platforms like iOS CMake learned to build and install combined targets which contain both a device and a simulator build. This behavior can be enabled by setting the IOS_INSTALL_COMBINED target property.
  • CPack:
  • The CPackDMG module learned new variable to specify AppleScript file run to customize appearance of DragNDrop installer folder, including background image setting using supplied PNG or multi-resolution TIFF file. See the CPACK_DMG_DS_STORE_SETUP_SCRIPT and CPACK_DMG_BACKGROUND_IMAGE variables.
  • The CPackDeb module learned to set the optional config file Source field using a monolithic or per-component variable. See CPACK_DEBIAN_PACKAGE_SOURCE.
  • The CPackDeb module learned to set Package, Section and Priority control fields per-component. See variables CPACK_DEBIAN__PACKAGE_SECTION and CPACK_DEBIAN__PACKAGE_PRIORITY.
  • The CPack DragNDrop generator learned to add multi-lingual SLAs to a DMG which is presented to the user when they try to mount the DMG. See the CPACK_DMG_SLA_LANGUAGES and CPACK_DMG_SLA_DIR variables for details.
  • The CPackNSIS module learned new variables to add bitmaps to the installer. See the CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP and CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP variables.
  • The CPackRPM module learned to set Name and Group control fields per-component. See CPACK_RPM__PACKAGE_NAME and CPACK_RPM__PACKAGE_GROUP.
  • Other:
  • Warnings about deprecated functionality are now enabled by default. They may be suppressed with -Wno-deprecated or by setting the CMAKE_WARN_DEPRECATED variable to false.
  • Deprecated and Removed Features:
  • The cmake(1) -E time command now properly passes arguments with spaces or special characters through to the child process. This may break scripts that worked around the bug with their own extra quoting or escaping.
  • The Xcode generator was fixed to escape backslashes in strings consistently with other generators. Projects that previously worked around the inconsistecy with an extra level of backslashes conditioned on the Xcode generator must be updated to remove the workaround for CMake 3.5 and greater.
  • Other Changes:
  • The Visual Studio 14 2015 generator learned to map the /debug:fastlink linker flag to the .vcxproj file property.
  • The FindGTK2 module now configures the GTK2::sigc++ imported target to enable c++11 on its dependents when using sigc++ 2.5.1 or higher.
  • The precompiled Windows binary provided on cmake.org is now a .msi package instead of an installer executable. One may need to manually uninstall CMake versions lower than 3.5 before installing the new package.

New in CMake 3.4.0 (November 13, 2015)

  • New Features:
  • Generators:
  • The Visual Studio 14 2015 generator learned to select a Windows 10 SDK based on the value of the CMAKE_SYSTEM_VERSION variable and the SDKs available on the host.
  • CMake learned rudimentary support for the Apple Swift language. When using the Xcode generator with Xcode 6.1 or higher, one may enable the Swift language with the enable_language() command or the project() command (this is an error with other generators or when Xcode is too old). Then one may list .swift source files in targets for compilation.
  • Commands:
  • The find_program() command learned a NAMES_PER_DIR option to consider all given NAMES in each directory before moving on to the next directory.
  • The get_filename_component() command learned a new BASE_DIR subcommand. This is used to specify a base directory when calculating an absolute path from a relative path.
  • The if() command learned a new TEST operator that evaluates to true if a given test name has been defined by the add_test() command. See policy CMP0064.
  • The install(DIRECTORY) command DESTINATION option learned to support generator expressions.
  • The install(FILES) command DESTINATION option learned to support generator expressions.
  • The string() command learned a new APPEND subcommand.
  • Variables:
  • The Makefile Generators and the Ninja generator learned to add compiler launcher tools like distcc and ccache along with the compiler for C and CXX languages. See the CMAKE__COMPILER_LAUNCHER variable and _COMPILER_LAUNCHER target property for details.
  • New CMAKE_LINK_SEARCH_START_STATIC and CMAKE_LINK_SEARCH_END_STATIC variables were introduced to initialize the LINK_SEARCH_START_STATIC and LINK_SEARCH_END_STATIC target properties, respectively.
  • Properties:
  • Visual Studio Generators learned to support additonal target properties to customize projects for NVIDIA Nsight Tegra Visual Studio Edition:
  • ANDROID_ANT_ADDITIONAL_OPTIONS
  • ANDROID_ARCH
  • ANDROID_ASSETS_DIRECTORIES
  • ANDROID_JAR_DEPENDENCIES
  • ANDROID_JAR_DIRECTORIES
  • ANDROID_JAVA_SOURCE_DIR
  • ANDROID_NATIVE_LIB_DEPENDENCIES
  • ANDROID_NATIVE_LIB_DIRECTORIES
  • ANDROID_PROCESS_MAX
  • ANDROID_PROGUARD
  • ANDROID_PROGUARD_CONFIG_PATH
  • ANDROID_SECURE_PROPS_PATH
  • ANDROID_SKIP_ANT_STEP
  • ANDROID_STL_TYPE
  • The ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY, and RUNTIME_OUTPUT_DIRECTORY target properties learned to support generator expressions.
  • The SOURCE_DIR and BINARY_DIR target properties were introduced to allow project code to query where a target is defined.
  • The OUTPUT_NAME target property and its variants learned to support generator expressions.
  • A TARGET_MESSAGES global property was added to tell the Makefile Generators whether to generate commands to print output after each target is completed.
  • On Windows with MS-compatible tools, CMake learned to optionally generate a module definition (.def) file for SHARED libraries. See the WINDOWS_EXPORT_ALL_SYMBOLS target property.
  • Modules:
  • The ExternalProject module ExternalProject_Add() function GIT_SUBMODULES option now also limits the set of submodules that are initialized in addition to the prior behavior of limiting the set of submodules that are updated.
  • The ExternalProject module learned new USES_TERMINAL arguments for giving steps exclusive terminal access. This is useful with the Ninja generator to monitor CMake superbuild progress and prevent CPU oversubscription.
  • The FindBISON module BISON_TARGET macro learned a new DEFINES_FILE option to specify a custom output header to be generated.
  • The FindHDF5 module learend a new HDF5_PREFER_PARALLEL option allowing users to specify that a parallel HDF5 tool is preferred if both are available.
  • The FindIce module now provides imported targets.
  • The FindJava module learned to optionally find the idlj and jarsigner tools.
  • The FindOpenSSL module now provides imported targets.
  • The FindOpenSSL module learned a new OPENSSL_USE_STATIC_LIBS option to search only for static libraries.
  • The FindPkgConfig learned a new pkg_get_variable() command which may be used to query for arbitrary variables from a package (such as for related tools or data and plugin install paths).
  • The FindProtobuf module gained a new protobuf_generate_python() function to generate python sources from .proto files.
  • The FindTIFF module learned to search separately for debug and release variants.
  • The FindwxWidgets module learned to support version requests.
  • The FindXercesC module learned to search separately for debug and release variants.
  • The FindZLIB module learned to search separately for debug and release variants.
  • The GNUInstallDirs module learned special default values for certain installation prefixes according to the GNU Coding Standards and the Filesystem Hierarchy Standard.
  • The UseJava module add_jar function learned to support response files (e.g. @srcs.txt) for source specification.
  • The UseJava module install_jar function learned new DESTINATION and COMPONENT options to specify the corresponding install() command options.
  • The UseJava module gained a new create_javah function to create C headers from Java classes.
  • Generator Expressions:
  • A new $ generator expression has been added.
  • CTest:
  • CTest learned to optionally measure the CPU load during parallel testing and avoid starting tests that may cause the load to exceed a given threshold. See the ctest(1) command --test-load option, the TestLoad setting of the CTest Test Step, the CTEST_TEST_LOAD variable, and the TEST_LOAD option of the ctest_test() command.
  • ctest(1) learned options --test-output-size-passed and --test-output-size-failed to customize the limit on test output size submitted when running as a Dashboard Client.
  • CPack:
  • The CPackDeb module learned to set package dependencies per component. See variables:
  • CPACK_DEBIAN__PACKAGE_BREAKS
  • CPACK_DEBIAN__PACKAGE_CONFLICTS
  • CPACK_DEBIAN__PACKAGE_ENHANCES
  • CPACK_DEBIAN__PACKAGE_PREDEPENDS
  • CPACK_DEBIAN__PACKAGE_PROVIDES
  • CPACK_DEBIAN__PACKAGE_RECOMMENDS
  • CPACK_DEBIAN__PACKAGE_REPLACES
  • CPACK_DEBIAN__PACKAGE_SUGGESTS
  • The CPack module learned to package empty directories.
  • The CPack module gained a new setting, CPACK_VERBATIM_VARIABLES, which can be used to ensure the cpack program receives the settings’ values exactly as they were set, even if they contain CMake-special characters. For compatibility, it’s off by default.
  • Other:
  • The Compile Features functionality is now aware of features supported by GNU C compilers on Windows.
  • CMake learned to honor *.manifest source files with MSVC tools. Manifest files named as sources of .exe and .dll targets will be merged with linker-generated manifests and embedded in the binary.
  • The Concurrent Fortran 77 compiler is now supported. Its compiler id is CCur.
  • cmake(1) gained a new --trace-expand command line option that is like --trace but expands variable references in the output.
  • Deprecated and Removed Features
  • The CMakeExpandImportedTargets module is now documented as deprecated. See module documentation for an explanation.
  • The CMAKE_USE_RELATIVE_PATHS variable no longer has any effect. Previously it was partially implemented and unreliable.
  • Other Changes:
  • The CheckFunctionExists, CheckLibraryExists, CheckSymbolExists, and FindThreads modules learned to work in environments where only CXX is enabled.
  • The CPackDeb module now correctly excludes symlinks during package checksum calculation.
  • The CPackDeb no longer uses fakeroot and system tar program for packaging.
  • The CPack module no longer mangles settings with CMake-special characters when they’re used as defaults for other settings. The macro cpack_set_if_not_set, which was responsible for this, is now deprecated.
  • CMake no longer links executables with flags to export symbols unless the ENABLE_EXPORTS target property is set. See policy CMP0065.
  • The SONAME field is no longer set for MODULE libraries created with the add_library() command. MODULE libraries are meant for explicit dynamic loading at runtime. They cannot be linked so SONAME is not useful.
  • The internal CMAKE__COMPILE_OBJECT rule variable now substitutes compiler include flags in a separate placeholder instead of the main placeholder.

New in CMake 3.4.0 RC1 (October 7, 2015)

  • The "if()" command learned a new "TEST" operator that evaluates to true if a given test name has been defined by the "add_test()" command. See policy "CMP0064".
  • The "install(DIRECTORY)" command "DESTINATION" option learned to support "generator expressions".
  • The "install(FILES)" command "DESTINATION" option learned to support "generator expressions".
  • CMake learned to honor "*.manifest" source files with MSVC tools. Manifest files named as sources of ".exe" and ".dll" targets will be merged with linker-generated manifests and embedded in the binary.
  • Deprecated and Removed Features:
  • The "CMakeExpandImportedTargets" module is now documented as deprecated. See module documentation for an explanation.
  • The "CMAKE_USE_RELATIVE_PATHS" variable no longer has any effect. Previously it was partially implemented and unreliable.

New in CMake 3.3.0 (July 23, 2015)

  • New Features:
  • Generators:
  • The Makefile Generators now add .DELETE_ON_ERROR to the makefiles that contain the actual build rules for files on disk. This tells GNU make to remove rule outputs when their recipe modifies an output but fails.
  • The Visual Studio Generators learned to support .xaml source files and automatically associate them with corresponding .h and .cpp sources.
  • A new experimental Green Hills MULTI generator was added on Windows. Green Hills MULTI is an IDE for embedded real-time systems.
  • Commands:
  • The add_dependencies() command learned to allow dependencies to be added to interface libraries. Dependencies added to an interface library are followed transitively in its place since the target itself does not build.
  • The execute_process() command learned to support specifying the same file for OUTPUT_FILE and ERROR_FILE.
  • The file(GLOB) and file(GLOB_RECURSE) commands learned a new LIST_DIRECTORIES option to specify whether the glob result should include directories.
  • The find_library(), find_path(), and find_file() commands now search in installation prefixes derived from the PATH environment variable.
  • The if() command learned a new IN_LIST operator that evaluates to true if a given element is contained in a named list.
  • The install(EXPORT) and export() commands learned to export targets that populate the INTERFACE_SOURCES target property.
  • The install(TARGETS) command learned to support generator expressions in the DESTINATION value.
  • Variables:
  • The version of some Fortran compilers is now detected and stored in the CMAKE_Fortran_COMPILER_VERSION variable.
  • The Visual Studio Generators learned a new CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD option to put the INSTALL target in the default build of a solution (.sln) file.
  • Properties:
  • A CROSSCOMPILING_EMULATOR target property and supporting CMAKE_CROSSCOMPILING_EMULATOR variable were introduced to allow target platform binaries to run on the host during cross compiling.
  • A _INCLUDE_WHAT_YOU_USE target property and supporting CMAKE__INCLUDE_WHAT_YOU_USE variable were introduced to tell the Makefile Generators and the Ninja generator to run include-what-you-use along with the compiler for C and CXX languages.
  • The _VISIBILITY_PRESET and VISIBILITY_INLINES_HIDDEN target properties now affect compilation in sources of all target types. See policy CMP0063.
  • The XCODE_ATTRIBUTE_ target property learned to support generator expressions.
  • Modules:
  • The CheckFortranCompilerFlag module was introduced to check Fortran compiler flags, much like the CheckCCompilerFlag module already does for C.
  • The ExternalData module learned a new ExternalData_NO_SYMLINKS option to disable use of symbolic links to populate the real data files and use copies instead.
  • The ExternalData module learned a new RECURSE: option in DATA{} references specifying directories. This allows an entire directory tree of associated files to be matched.
  • The ExternalData module learned a new URL template placeholder %(algo:) to allow custom mapping from algorithm name to URL component through configuration of new ExternalData_URL_ALGO__ variables. This allows more flexibility in remote URLs.
  • The ExternalProject module learned to replace tokens like in the BYPRODUCTS of each step.
  • The ExternalProject module APIs learned to support generator expressions when using LOG_* options and in CMake initial cache options.
  • The FindBoost module now tracks the directories containing libraries separately for RELEASE and DEBUG configurations.
  • The FindCUDA module now defaults to using the static CUDA runtime library if it is available. A new CUDA_USE_STATIC_CUDA_RUNTIME option is offered to control this behavior.
  • The FindMatlab module was completely rewritten. It learned about versions and components and to find Matlab in a more precise and multiplatform way. The module now offers APIs to create mex extensions, documentation, and unit tests.
  • The FindPackageHandleStandardArgs module FIND_PACKAGE_HANDLE_STANDARD_ARGS function now always populates both the _FOUND and _FOUND variables (the latter for backwards compatibility). The FOUND_VAR option is now ignored except to enforce its allowed values.
  • The InstallRequiredSystemLibraries module learned a new CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT option to specify the installation component.
  • Generator Expressions:
  • A new COMPILE_LANGUAGE generator expression was introduced to allow specification of compile options for target files based on the LANGUAGE of each source file. Due to limitations of the underlying native build tools, this feature has varying support across generators. See the cmake-generator-expressions(7) manual for details.
  • CTest:
  • The ctest(1) tool learned a new --repeat-until-fail option to help find sporadic test failures.
  • The CTestCoverageCollectGCOV module learned to support the same CTEST_CUSTOM_COVERAGE_EXCLUDE option as the ctest_coverage() command.
  • CPack:
  • The cpack(1) IFW generator and the CPackIFW module learned to support Qt Framework Installer 2.0 tools.
  • The CPackDeb module learned a new CPACK_DEBIAN__PACKAGE_SHLIBDEPS variable to specify per-component use of dpkg-shlibdeps.
  • The CPackDeb module learned a new CPACK_DEBIAN__PACKAGE_DEPENDS option to specify per-component dependencies.
  • The CPackRPM module learned to package symbolic links more cleanly and now supports directory symlinks with recent rpmbuild versions.
  • The CPackRPM module learned a new CPACK_RPM_ADDITIONAL_MAN_DIRS variable to specify directories containing man pages for the brp-compress RPM macro.
  • The CPackRPM module learned a new CPACK_RPM__PACKAGE_ARCHITECTURE variable to specify a component-specific package architecture.
  • The CPack WIX generator learned the new CPACK_START_MENU_SHORTCUTS, CPACK_DESKTOP_SHORTCUTS and CPACK_STARTUP_SHORTCUTS installed file properties which can be used to install shorcuts in the Start Menu, on the Desktop and in the Startup Folder respectively.
  • Other:
  • The Compile Features functionality is now aware of features supported by GNU compilers on Windows, versions 4.4 through 5.0.
  • The cmake(1) -E tar command learned a new --format option to specify the archive format to be written.
  • On OS X, CMake learned to create XCTest bundles to test Frameworks and App Bundles within Xcode. The FindXCTest module provides convenience functions to handle XCTEST bundles.
  • Deprecated and Removed Features:
  • On OS X the cmake-gui(1) no longer has the Install For Command Line Use menu item. Instead there is a How to Install For Command Line Use menu item that shows an informational dialog box explaining how to make the command line tools available. For example: /Applications/CMake.app/Contents/bin/cmake-gui --install
  • The ctest_build() and build_command() commands no longer tell make tools to ignore errors with the -i option. Previously this was done for Makefile Generators but not others. See policy CMP0061.
  • The Visual Studio 10 2010 generator no longer checks for running VS IDEs with the project open or asks them to reload. This was originally done for VS 10 because it had been done for VS 7 through 9 to avoid prompting for every project in a solution. Since VS >= 10 allow the whole solution to reload at once they do not need CMake to help them.
  • The Visual Studio 7 generator (.NET 2002) is now deprecated and will be removed in a future version of CMake.
  • The Visual Studio 6 generator is now deprecated and will be removed in a future version of CMake.
  • The find_package() command no longer considers project build trees recently configured in a cmake-gui(1). This was previously done only on Windows and is now never done. The NO_CMAKE_BUILDS_PATH option is now ignored if given and effectively always on. Projects may populate the User Package Registry to aid users building multiple dependent projects one after another.
  • The add_definitions() command no longer causes a DEFINITIONS directory property to be populated. See policy CMP0059.
  • With Visual Studio 7, 8, and 9 generators the value of the $(OutDir) placeholder no longer evaluates to the configuration name. Projects should use $(ConfigurationName) for that instead.
  • Using the output of export() with the install(FILES) command is no longer allowed. See policy CMP0062 for details.
  • Other Changes:
  • The Ninja generator now requires that calls to the add_custom_command() and add_custom_target() commands use the BYPRODUCTS option to explicitly specify any files generated by the custom commands that are not listed as outputs (perhaps because their timestamps are allowed to be older than the inputs). See policy CMP0058.
  • Build-time progress output of Makefile Generators has been improved. It no longer mixes progress and build rule messages during parallel builds. The link rule messages now have progress and are displayed as bold green instead of bold red (since red is often associated with an error message).
  • The CMAKE_CFG_INTDIR variable value for Visual Studio 7, 8, and 9 is now $(ConfigurationName) instead of $(OutDir). This should have no effect on the intended use cases of the variable.
  • Linking to library files by a full path in an implicit linker search directory (e.g. /usr/lib/libfoo.a) no longer asks the linker to search for the library (e.g. -lfoo) and now links by full path. See policy CMP0060.

New in CMake 3.2.2 (April 15, 2015)

  • Syntax:
  • CMake learned to support unicode characters encoded as UTF-8 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 add_custom_command() and 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 add_custom_command() and 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 Ninja generator will places such commands in the console pool. Build targets provided by CMake that are meant for individual interactive use, such as install, are now placed in this pool.
  • A new 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 file(LOCK) subcommand was created to allow CMake processes to synchronize through file and directory locks.
  • The file(STRINGS) now supports UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE as ENCODING options.
  • The install(EXPORT) command now works with an absolute DESTINATION even if targets in the export set are installed with a destination or usage requirements specified relative to the install prefix. The value of the CMAKE_INSTALL_PREFIX variable is hard-coded into the installed export file as the base for relative references.
  • The try_compile() command source file signature now honors link flags (e.g. CMAKE_EXE_LINKER_FLAGS) in the generated test project. See policy CMP0056.
  • The try_run() command learned to honor the LINK_LIBRARIES option just as try_compile() already does.
  • The file(GENERATE) command now generates the output file with the same permissions as the input file if set.
  • The file(GENERATE) command can now generate files which are used as source files for buildsystem targets. Generated files automatically get their GENERATED property set to TRUE.
  • Variables:
  • The CMAKE_MATCH_COUNT variable was introduced to record the number of matches made in the last regular expression matched in an if() command or a string() command.
  • Properties:
  • An ANDROID_API_MIN target property was introduced to specify the minimum version to be targeted by the toolchain.
  • A VS_SHADER_FLAGS source file property was added to specify additional shader flags to .hlsl files, for the Visual Studio generators.
  • Modules:
  • The ExternalData module learned to support Custom Fetch Scripts. This allows projects to specify custom .cmake scripts for fetching data objects during the build.
  • The ExternalProject module learned options to create independent external project step targets that do not depend on the builtin steps.
  • The ExternalProject module 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 ExternalProject module ExternalProject_Add() command learned a new TEST_EXCLUDE_FROM_MAIN option to exclude tests from the main build.
  • The ExternalProject module ExternalProject_Add() command learned a new UPDATE_DISCONNECTED option to avoid automatically updating the source tree checkout from version control.
  • The FindCUDA module learned about the cusolver library in CUDA 7.0.
  • The FindGit module learned to find the git command-line tool that comes with GitHub for Windows installed in user home directories.
  • A FindGSL module was introduced to find the GNU Scientific Library.
  • A FindIntl module was introduced to find the Gettext libintl library.
  • The FindLATEX module learned to support components.
  • The FindMPI module learned to find MS-MPI on Windows.
  • The 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 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 WriteCompilerDetectionHeader module learned to create multiple output files per compiler and per language, instead of creating one large file.
  • CTest:
  • The ctest_coverage() command learned to support Delphi coverage.
  • The ctest_coverage() command learned to support Javascript coverage.
  • The CTestCoverageCollectGCOV module was introduced as an alternative to the ctest_coverage() command for collecting gcov results for submission to CDash.
  • CPack:
  • The CPackRPM module learned options to set per-component descriptions and summaries. See the CPACK_RPM_<component>_PACKAGE_DESCRIPTION and CPACK_RPM_<component>_PACKAGE_SUMMARY variables.
  • The CPackRPM module learned options to specify requirements for pre- and post-install scripts. See the CPACK_RPM_PACKAGE_REQUIRES_PRE and CPACK_RPM_PACKAGE_REQUIRES_POST variables.
  • The CPackRPM module learned options to specify requirements for pre- and post-uninstall scripts. See the CPACK_RPM_PACKAGE_REQUIRES_PREUN and CPACK_RPM_PACKAGE_REQUIRES_POSTUN variables.
  • The CPackRPM module learned a new CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX variable to specify a component-specific value to use instead of CPACK_PACKAGING_INSTALL_PREFIX.
  • The CPackRPM module learned a new CPACK_RPM_RELOCATION_PATHS variable to specify multiple relocation prefixes for a single rpm package.
  • Other:
  • The cmake(1) -E tar command now supports creating .xz-compressed archives with the J flag.
  • The 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 cmake(1) -E tar command learned a new --mtime=<date> option to specify the modification time recorded in tarball entries.
  • The Compile Features 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 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 break() command now rejects calls outside of a loop context or that pass arguments to the command. See policy CMP0055.
  • Deprecated and Removed Features:
  • Files written in the 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 FindOpenGL module no longer explicitly searches for any dependency on X11 libraries with the 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 file(DOWNLOAD), file(UPLOAD), and 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 Xcode generator no longer requires a value for the 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.

New in CMake 3.2.1 (March 11, 2015)

  • Syntax:
  • CMake learned to support unicode characters encoded as UTF-8 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 add_custom_command() and 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 add_custom_command() and 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 Ninja generator will places such commands in the console pool. Build targets provided by CMake that are meant for individual interactive use, such as install, are now placed in this pool.
  • A new 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 file(LOCK) subcommand was created to allow CMake processes to synchronize through file and directory locks.
  • The file(STRINGS) now supports UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE as ENCODING options.
  • The install(EXPORT) command now works with an absolute DESTINATION even if targets in the export set are installed with a destination or usage requirements specified relative to the install prefix. The value of the CMAKE_INSTALL_PREFIX variable is hard-coded into the installed export file as the base for relative references.
  • The try_compile() command source file signature now honors link flags (e.g. CMAKE_EXE_LINKER_FLAGS) in the generated test project. See policy CMP0056.
  • The try_run() command learned to honor the LINK_LIBRARIES option just as try_compile() already does.
  • The file(GENERATE) command now generates the output file with the same permissions as the input file if set.
  • The file(GENERATE) command can now generate files which are used as source files for buildsystem targets. Generated files automatically get their GENERATED property set to TRUE.
  • Variables:
  • The CMAKE_MATCH_COUNT variable was introduced to record the number of matches made in the last regular expression matched in an if() command or a string() command.
  • Properties:
  • An ANDROID_API_MIN target property was introduced to specify the minimum version to be targeted by the toolchain.
  • A VS_SHADER_FLAGS source file property was added to specify additional shader flags to .hlsl files, for the Visual Studio generators.
  • Modules:
  • The ExternalData module learned to support Custom Fetch Scripts. This allows projects to specify custom .cmake scripts for fetching data objects during the build.
  • The ExternalProject module learned options to create independent external project step targets that do not depend on the builtin steps.
  • The ExternalProject module 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 ExternalProject module ExternalProject_Add() command learned a new TEST_EXCLUDE_FROM_MAIN option to exclude tests from the main build.
  • The ExternalProject module ExternalProject_Add() command learned a new UPDATE_DISCONNECTED option to avoid automatically updating the source tree checkout from version control.
  • The FindCUDA module learned about the cusolver library in CUDA 7.0.
  • The FindGit module learned to find the git command-line tool that comes with GitHub for Windows installed in user home directories.
  • A FindGSL module was introduced to find the GNU Scientific Library.
  • A FindIntl module was introduced to find the Gettext libintl library.
  • The FindLATEX module learned to support components.
  • The FindMPI module learned to find MS-MPI on Windows.
  • The 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 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 WriteCompilerDetectionHeader module learned to create multiple output files per compiler and per language, instead of creating one large file.
  • CTest:
  • The ctest_coverage() command learned to support Delphi coverage.
  • The ctest_coverage() command learned to support Javascript coverage.
  • The CTestCoverageCollectGCOV module was introduced as an alternative to the ctest_coverage() command for collecting gcov results for submission to CDash.
  • CPack:
  • The CPackRPM module learned options to set per-component descriptions and summaries. See the CPACK_RPM__PACKAGE_DESCRIPTION and CPACK_RPM__PACKAGE_SUMMARY variables.
  • The CPackRPM module learned options to specify requirements for pre- and post-install scripts. See the CPACK_RPM_PACKAGE_REQUIRES_PRE and CPACK_RPM_PACKAGE_REQUIRES_POST variables.
  • The CPackRPM module learned options to specify requirements for pre- and post-uninstall scripts. See the CPACK_RPM_PACKAGE_REQUIRES_PREUN and CPACK_RPM_PACKAGE_REQUIRES_POSTUN variables.
  • The CPackRPM module learned a new CPACK_RPM__PACKAGE_PREFIX variable to specify a component-specific value to use instead of CPACK_PACKAGING_INSTALL_PREFIX.
  • The CPackRPM module learned a new CPACK_RPM_RELOCATION_PATHS variable to specify multiple relocation prefixes for a single rpm package.
  • Other:
  • The cmake(1) -E tar command now supports creating .xz-compressed archives with the J flag.
  • The cmake(1) -E tar command learned a new --files-from= option to specify file names using lines in a file to overcome command-line length limits.
  • The cmake(1) -E tar command learned a new --mtime= option to specify the modification time recorded in tarball entries.
  • The Compile Features 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 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 break() command now rejects calls outside of a loop context or that pass arguments to the command. See policy CMP0055.
  • Deprecated and Removed Features:
  • Files written in the 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 FindOpenGL module no longer explicitly searches for any dependency on X11 libraries with the 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 file(DOWNLOAD), file(UPLOAD), and 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.

New in CMake 3.1.2 (February 6, 2015)

  • install: Fix regression in default configuration selection
  • CPack: Fix packaging of source tarballs with symbolic links
  • KWSys Directory: Check opendir return value before using it (#15367)
  • Help: Clarify status of link_libraries command
  • Normalize OBJECT_DEPENDS paths to match custom commands (#15366)
  • MSVC: Fix initialization of RelWithDebInfo shared library link flags (#15385)
  • FeatureSummary: Fix bracket in documentation.
  • FindOpenSSL: fix detection of OpenSSL 1.0.2
  • ctest_build: Update GNU make error message matching (#15379)

New in CMake 3.1.0 (December 18, 2014)

  • Windows Phone and Windows Store support has been added to Visual Studio 11 (2012) and above Generators.
  • NVIDIA Nsight Tegra support has been added to Visual Studio 10 (2010) and above Generators.
  • New "target_compile_features" command allows populating target based compile features. CMake uses this information to ensure that the compiler in use is capable of building the target, and to add any necessary compile flags such as -std=gnu++11 to support language features. More information on this is found at: - http://www.cmake.org/cmake/help/v3.1/manual/cmake-compile-features.7.html
  • The syntax for *Variable References* and *Escape Sequences* was simplified in order to allow a much faster implementation. See policy "CMP0053".
  • The "if" command no longer automatically dereferences variables named in quoted or bracket arguments. See policy "CMP0054".
  • The target property "SOURCES" now generally supports "Generator Expressions". The generator expressions may be used in the "add_library" and "add_executable" commands.
  • It is now possible to write and append to the target property "SOURCES". The variable "CMAKE_DEBUG_TARGET_PROPERTIES" can be used to trace the origin of sources.
  • CPack gained "7Z" and "TXZ" generators supporting lzma-compressed archives.
  • The ExternalProject module has learned to support lzma-compressed source tarballs with ".7z", ".tar.xz", and ".txz" extensions.
  • The ExternalProject module ExternalProject_Add command learned a new BUILD_ALWAYS option to cause the external project build step to run every time the host project is built.
  • The ctest_coverage command learned to support Intel coverage files with the "codecov" tool.
  • The ctest_memcheck command learned to support sanitizer modes, including "AddressSanitizer", "MemorySanitizer", "ThreadSanitizer", and "UndefinedBehaviorSanitizer".
  • Deprecated and Removed Features:
  • In CMake 3.0 the "target_link_libraries" command accidentally began allowing unquoted arguments to use Generator Expressions containing a semicolon separated list within them. For example:
  • set(libs B C) target_link_libraries(A PUBLIC $)
  • This is equivalent to writing:
  • target_link_libraries(A PUBLIC $)
  • and was never intended to work. It did not work in CMake 2.8.12. Such generator expressions should be in quoted arguments:
  • set(libs B C) target_link_libraries(A PUBLIC "$")
  • CMake 3.1 again requires the quotes for this to work correctly.

New in CMake 3.0.2 (September 12, 2014)

  • 0014386: [CMake] Broken build (proposing fix) resolved.
  • 0014027: [Modules] CMake fails build on HPUX with standard HP C and make resolved.
  • 0014246: [CTest] ctest --help-variable-list fails to display CTEST* variables (Brad King) resolved.
  • 0014946: [CMake] Document build v. install values for INTERFACE_INCLUDE_DIRECTORIES (Brad King) resolved.
  • 0014936: [CMake] CMAKE_GNUtoMS_VCVARS is not set when using Visual Studio 12 2013 and CMakeAddFortranSubdirectory (Brad King) resolved.
  • 0014918: [CMake] x64 build under cygwin fails (Brad King) resolved.
  • 0014928: [CMake] cmake -E create_symlink always returns code 0 even when failing to create symlink resolved.
  • 0014916: [CMake] Info.plist is stored in the wrong directory when creating bundles in subdirectories resolved.
  • 0014908: [CMake] CMAKE_OSX_SYSROOT being ignored with frameworks in /Library/Frameworks resolved.
  • 0014856: [CMake] cannot build cmake on Solaris (Brad King) resolved.
  • 0014903: [Modules] InstallRequiredSystemLibraries CMAKE_INSTALL_MFC_LIBRARIES does not work with MSVC 2013 (Brad King) resolved.
  • 0014894: [CMake] Regression/Qt: cmake touches on each run moc_*.cxx_parameters (Peter Kuemmel) resolved.
  • 0014901: [CMake] Adding an .xib to an XCode project does not work. resolved.
  • 0014887: [CMake] CMake fails to compile error: use of undeclared identifier 'abi' (Brad King) resolved.
  • 0014886: [Documentation] [PATCH] Make documentation generation python3 compatible. (Brad King) resolved.
  • 0014882: [CPack] cmake: strlen(): cpack killed by SIGSEGV (Brad King) resolved.
  • 0014875: [Modules] /lib64 wrongfully appears in RPATH (Brad King) resolved.
  • 0014870: [CMake] FindMPI.cmake returns 32-bit libraries on 64-bit systems for Fortran-only projects (Brad King) resolved.
  • 0014099: [CMake] Ninja: CMAKE_${LANG}_FLAGS passed to linker come from incorrect scope (Peter Kuemmel) resolved.
  • 0014184: [CMake] link_directories produce backslash path for mingw (Peter Kuemmel) resolved.
  • 0014865: [CMake] CMakeDetermineRCCompiler does not detect windres from "i686-w64-mingw32.shared-windres" (Brad King) resolved.
  • 0014089: [CMake] add_test/add_custom_command: Support generator expressions in WORKING_DIRECTORY (Ben Boeckel) resolved.
  • 0014339: [Modules] CheckCXXCompilerFlag seems to have problems with XL and BCC (Rolf Eike Beer) resolved.
  • 0014739: [Modules] findboost.cmake can't find boost::mpi library (Brad King) resolved.
  • 0014808: [CMake] Policy CMP0026 set OLD not working for _LOCATION (Stephen Kelly) resolved.
  • 0014790: [CMake] CMake crashes with XCode generator (Brad King) resolved.
  • 0014806: [CMake] cmake does not detect correct intel c/c++ compiler version (Brad King) resolved.
  • 0013251: [CMake] cmake -E tar fails to extract some files correctly (Brad King) resolved.
  • 0014798: [CMake] CMake fails to build correctly from source on FreeBSD... resolved.
  • 0014784: Seg fault with wrong number of args for check-build-system (Brad King) resolved.
  • 0014393: [Modules] FindwxWidgets.cmake doesn't look for x64 wxWidgets (MSVC) directories. (Brad King) resolved.
  • 0014577: [CMake] Need to map /Fd to ProgramDataBaseFileName in VS 7,8,9 (Brad King) resolved.
  • 0014774: [Modules] FindFreetype cannot find version 2.5 resolved.
  • 0014600: [CMake] Document PDB behavior w.r.t. static libraries (Brad King) resolved.
  • 0014755: [CMake] Cannot use VisualStudio 2013 Express with Windows7.1SDK for 64Bit builds resolved.
  • 0014735: [CMake] FindOpenSSL.cmake does not honor the OPENSSL_ROOT_DIR variable for non Windows platforms (Brad King) resolved.
  • 0014366: [CMake] Command line definitions ignored if -DCMAKE_C_COMPILER is passed (Stephen Kelly) closed.
  • 0012184: [Modules] SWIG_ADD_MODULE generates wrong file name for Ruby under Mac OS X (jschueller) closed.
  • 0013318: [CMake] swig: -noproxy option not supported with python (jschueller) closed.
  • 0014493: [CMake] Document relationship of VS_KEYWORD and VS_GLOBAL_KEYWORD (Brad King) closed.
  • 0011693: [CMake] On Mac OS X, the CMake .app filename should not contain the version number (Brad King) closed.
  • 0014659: Support for MirBSD in CMake (Brad King) closed.
  • 0014712: [CMake] improper setting of CMAKE_HOST_SYSTEM_PROCESSOR (Brad King) closed.
  • 0008466: [CTest] Provide finer control than pass/fail for a test program (Rolf Eike Beer) closed.
  • 0009188: [CMake] ADD_DEPENDENCIES silently accepts invalid target names (Nils Gladitz) closed.
  • 0013952: [CMake] "CodeBlocks NMake Makefiles" generates broken xml if spaces in path (Nils Gladitz) closed.
  • 0014690: [CMake] CheckTypeSize doesn't behave as documented in daily build (Daniele E. Domenichelli) closed.
  • 0014692: [Modules] UseQt4.cmake does not adhere to policy CMP0043 (Stephen Kelly) closed.
  • 0014686: [CMake] FindBoost.cmake does not provide a way to use libraries built by boost with the runtime-debugging=off bjam parameter (Brad King) closed.
  • 0014508: [Modules] FindJNI.cmake fails to set JAVA_INCLUDE_PATH2 for darwin (Brad King) closed.
  • 0009822: [CMake] Please expose: cmGlobalGenerator::GetExportSet at cmake level (Stephen Kelly) closed.
  • 0014439: [CPack] WiX: set/respect file/directory permissions (Nils Gladitz) closed.
  • 0014670: [CCMake] get_property does not work for ALIASED_TARGET property (Stephen Kelly) closed.
  • 0011338: [CMake] CMake adds CURRENT_SOURCE_DIR to include_directories if there is a VTK project. (Stephen Kelly) closed.
  • 0014646: [CMake] Clarify if(TARGET) documentation (Brad King) closed.
  • 0014658: [CMake] Document CMAKE_VERBOSE_MAKEFILE initialization (Brad King) closed.
  • 0014657: [Documentation] TestCXXAcceptsFlag description is incorrect (Brad King) closed.
  • 0014661: [CMake] Explicit project type GUID needed with INCLUDE_EXTERNAL_MSPROJECT (Brad King) closed.
  • 0014631: [CMake] source_group should document behavior of relative paths (Brad King) closed.
  • 0014453: [CMake] Look into performance of GenerateExportHeader test (Stephen Kelly) closed.
  • 0014622: [CMake] Typo in helpstrings for CMAKE_(C|CXX|Fortran)_STANDARD_LIBRARIES_INIT (Brad King) closed.
  • 0014636: [CMake] Error with whitelisted properties and generator expression in target_link_libraries (Stephen Kelly) closed.
  • 0014645: [CMake] exec_program and execute_process don't capture output when it does not end in a newline (Brad King) closed.
  • 0014133: [CMake] CMake creates duplicate target subfolders in Xcode project files (Brad King) closed.
  • 0014434: [CPack] WiX: component support (Nils Gladitz) closed.
  • 0014603: [CMake] Cross compiling for darwin fails (Brad King) closed.
  • 0014605: [CMake] Cross compiling/linking with MSVC on linux using wine fails (Brad King) closed.
  • 0014606: [CMake] Obsolete description for CMAKE_(C|CXX|Fortran)_FLAGS_RELEASE (Brad King) closed.
  • 0014593: [Modules] FindGTK2.cmake fails to find GTK with Quartz backend (Daniele E. Domenichelli) closed.
  • 0013173: [CMake] Swig module can't handle absolute path (jschueller) closed.
  • 0013426: [Modules] FindSWIG.cmake doesn't mark variables as advanced (jschueller) closed.
  • 0013771: [CMake] Use CMAKE_CURRENT_LIST_DIR instead of CMAKE_ROOT in FindSWIG module. (jschueller) closed.
  • 0013772: [CMake] UseSWIG.cmake does not handle relative paths with parent directories (jschueller) closed.
  • 0013814: [CMake] SWIG C# generates a DllImport line that doesn't match the library name (jschueller) closed.
  • 0014370: [CMake] add_custom_command() commands run from incorrect directory with Ninja generator (Peter Kuemmel) closed.
  • 0014520: [CMake] UseSWIG module can generate too long command lines in the build chain (jschueller) closed.
  • 0014411: [CMake] Ninja dependencies don't work with Intel and many other GCC-like compilers (Peter Kuemmel) closed.
  • 0014458: [CMake] Support clang-cl, clang's cl-compatible driver (Brad King) closed.
  • 0014544: Remove edit_cache target from ninja output (Brad King) closed.
  • 0014548: [CMake] Document CMAKE_MAKE_PROGRAM as preferred over CMAKE_BUILD_TOOL, not vice versa (Brad King) closed.
  • 0014562: [CMake] not able to compile a simple test program with -G "Visual Studio 11 2012" -Tv90 (Brad King) closed.
  • 0014567: [Modules] FindOpenMP is incorrect for compilers that accept OpenMP with no flags (Rolf Eike Beer) closed.
  • 0014587: [CMake] Add support for wxWidgets 3.0.0 (Brad King) closed.
  • 0013140: [CMake] CMake does not reject unsupported logical target names (Stephen Kelly) closed.
  • 0013902: [CMake] target_link_libraries should not accept utility targets (Stephen Kelly) closed.
  • 0013947: [CMake] Policy to disallow link interface self-references (Stephen Kelly) closed.
  • 0014554: [CPack] Pass custom arguments to WIX (Nils Gladitz) closed.
  • 0014561: [CMake] Errors with add_libaray(name INTERFACE) when TARGET_SUPPORTS_SHARED_LIBS is false (Stephen Kelly) closed.
  • 0014540: [Modules] Typo in PHP find module (Brad King) closed.
  • 0014541: [Modules] FindJNDI: amd64/ppc64 kernels might be running on 32bit system (Brad King) closed.
  • 0014402: [CMake] Replace "Visual Studio 11" by Visual Studio 2012" in cmake-gui (Brad King) closed.
  • 0012600: [CMake] Specifying CMAKE_INSTALL_PREFIX in a CMAKE_TOOLCHAIN_FILE file has no effect (Stephen Kelly) closed.
  • 0012611: [Documentation] Missing CMAKE_INCLUDE_DIRECTORIES_BEFORE from documentation (Stephen Kelly) closed.
  • 0013188: [CMake] Target and directory include_directory usage. (Stephen Kelly) closed.
  • 0013663: FindBoost documentation example should clarify it only finds static libraries (Brad King) closed.
  • 0014355: [Modules] Implementation of qt4_add_executable/library (Stephen Kelly) closed.
  • 0014533: [CMake] With Ninja, CTest is launching one test twice (Nils Gladitz) closed.
  • 0014713: [CMake] cmake -create-symlink doesn't overwrite existing dangling(!) symlinks (Brad King) closed.
  • 0014378: [CMake] ZERO_CHECK.vcxproj referenced despite CMAKE_SUPPRESS_REGENERATION set to FALSE (Brad King) closed.
  • 0014389: Find package Java should look first in the JAVA_HOME env var. (Graham Markall) closed.
  • 0014481: [CMake] Unable to support a new language using CMAKE_MODULE_PATH within an outside project. (Brad King) closed.
  • 0014507: [CMake] -i_dynamic flag (depricated) incorrectly added when using intel compilers (Brad King) closed.
  • 0011137: [CMake] Unable to parse CMakeLists.txt in UTF-8 with BOM encoding (Brad King) closed.
  • 0014181: [CMake] One-character function names don't work (Brad King) closed.
  • 0014494: [CMake] Doesn't create .lib for header only targets on Windows. (Stephen Kelly) closed.
  • 0014498: [CMake] Folder references aren't added correctly to Xcode projects. (Brad King) closed.
  • 0014499: [CMake] Add support for .NET target framework version for VS 2008 (Brad King) closed.
  • 0014502: [Modules] FindJava.cmake message incorrectness (Rolf Eike Beer) closed.
  • 0013035: [CMake] Support for MinGW Clang on Windows (Brad King) closed.
  • 0014466: [CPack] Deterministic file/directory IDs (Nils Gladitz) closed.
  • 0014468: [CPack] WiX: Include extra .wxs and/or .wixlib files (Nils Gladitz) closed.
  • 0014471: [CMake] -T switch with Intel Compiler does not set CMAKE_CXX_COMPILER properly (Brad King) closed.
  • 0014476: [CMake] MSVC_IDE and MSVC not set when using Intel Platform Toolset (Brad King) closed.
  • 0012886: [CMake] Add a manifest or main-class file to the created jar (Brad King) closed.
  • 0014387: [CMake] setting MS build output verbosity to "Diagnostic" in VisualStudio leads to CMAKE_CXX_SIZEOF_DATA_PTR set to "" (Brad King) closed.
  • 0014418: [Modules] FindOpenSSL: should mark {LIB,SSL}_EAY_{DEBUG,RELEASE} as advanced (Rolf Eike Beer) closed.
  • 0014424: [Documentation] Vague ADD_DEPENDENCIES() Description (Brad King) closed.
  • 0014358: [Modules] FortranCInterface fails to find generated test program when cross-compiling (Brad King) closed.
  • 0014371: [CCMake] bootstrapping with --docdir puts documentation in wron directory (Brad King) closed.
  • 0014608: [CMake] segmentation fault when "export(TARGETS nonexistenttarget FILE somefile.cmake") (Stephen Kelly) closed.
  • 0014570: Intel + Ninja regression: unable to compile a simple test program (Peter Kuemmel) closed.
  • 0013123: [CTest] ctest_empty_binary_directory failure is too silent (Nils Gladitz) closed.
  • 0014121: [CMake] Custom command errors are hidden when CTest launchers are used with Ninja (Robert Maynard) closed.
  • 0013143: [CTest] ctest_coverage runs gcov on gcda files outside the current build directory (Nils Gladitz) closed.
  • 0014511: [CMake] Makefile generators segfault when custom target sources have compile definitions (Nils Gladitz) closed.
  • 0014484: [CTest] CTest ignores RUN_SERIAL if test gets run as a dependency of another test (Nils Gladitz) closed.

New in CMake 2.8.12.2 (January 18, 2014)

  • VS: Map /Fd to ProgramDataBaseFileName for VS 7,8,9 (#14577)
  • Replace rule placeholder consistently (#14667)
  • VS: Convert include path to backslashes for VS >= 10
  • Revert "Ninja: Track configured files so we can regenerate them."
  • FindOpenMP: fix detecting compilers that do not need any special flag (#14567)
  • Xcode: Fix storyboard view
  • CMakeDetermineCompilerId: Fix compiler line match for Xcode 5.1

New in CMake 2.8.12.1 (November 9, 2013)

  • The 2.8.12.1 release was packaged with CPack which is included as part of the 2.8.12.1 release. The .sh files are self extracting gziped tar files. To install a .sh file, run it with /bin/sh and follow the directions. The OS-machine.tar.gz files are gziped tar files of the install tree. The OS-machine.tar.Z files are compressed tar files of the install tree. The tar file distributions can be untared in any directory. They are prefixed by the version of CMake. For example, the Linux-i386 tar file is all under the directory cmake-2.8.12.1-Linux-i386. This prefix can be removed as long as the share, bin, man and doc directories are moved relative to each other.

New in CMake 2.8.12 (October 11, 2013)

  • The 2.8.11 release was packaged with CPack which is included as part of the 2.8.11 release. The .sh files are self extracting gziped tar files. To install a .sh file, run it with /bin/sh and follow the directions. The OS-machine.tar.gz files are gziped tar files of the install tree. The OS-machine.tar.Z files are compressed tar files of the install tree. The tar file distributions can be untared in any directory. They are prefixed by the version of CMake. For example, the Linux-i386 tar file is all under the directory cmake-2.8.11-Linux-i386. This prefix can be removed as long as the share, bin, man and doc directories are moved relative to each other.

New in CMake 2.8.9 (September 21, 2012)

  • The 2.8.9 release was packaged with CPack which is included as part of the 2.8.9 release. The .sh files are self extracting gziped tar files. To install a .sh file, run it with /bin/sh and follow the directions. The OS-machine.tar.gz files are gziped tar files of the install tree. The OS-machine.tar.Z files are compressed tar files of the install tree. The tar file distributions can be untared in any directory. They are prefixed by the version of CMake. For example, the Linux-i386 tar file is all under the directory cmake-2.8.9-Linux-i386. This prefix can be removed as long as the share, bin, man and doc directories are moved relative to each other.