CMake Changelog

New in version 3.3.0

July 23rd, 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 version 3.2.2 (April 15th, 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 version 3.2.1 (March 11th, 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 version 3.1.2 (February 6th, 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 version 3.1.0 (December 18th, 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 version 3.0.2 (September 12th, 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 version 2.8.12.2 (January 18th, 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 version 2.8.12.1 (November 9th, 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 version 2.8.12 (October 11th, 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 version 2.8.9 (September 21st, 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.