CMake 3.5 发行说明

自 CMake 3.4 以来的更改包括以下内容。

新特性

GUI

  • cmake-gui(1) 获得了控制关于已弃用功能的警告的选项。

  • cmake-gui(1) 学习了一个选项,用于设置要与 VS IDE 和 Xcode 生成器一起使用的工具集,非常类似于 cmake(1) 的现有 -T 选项。

  • cmake-gui(1) 获得了一个正则表达式浏览器,可用于实时创建和评估正则表达式。浏览器窗口可通过 Tools 菜单访问。

命令行

  • -Wdev-Wno-dev cmake(1) 选项现在也默认启用和禁止已弃用警告输出。

  • 现在可以使用新的 -Werror=dev-Wno-error=dev cmake(1) 选项控制将开发人员警告作为错误进行抑制。

  • cmake(1) -E 命令行工具 copycopy_if_differentcopy_directorymake_directory 学习了支持多个输入文件或目录。

命令

变量

属性

  • 现在为 VS 2010 及更高版本实现了 VS_GLOBAL_<variable> 目标属性。以前它仅在 VS 2008 及更低版本中有效。

模块

  • ExternalProject 模块学习了一个新的 GIT_REMOTE_NAME 选项来控制 git clone --origin 值。

  • FindBoost 模块现在提供导入的目标,例如 Boost::boostBoost::filesystem

  • FindFLEX 模块 FLEX_TARGET 宏学习了一个新的 DEFINES_FILE 选项来指定要生成的自定义输出头文件。

  • FindGTest 模块现在提供导入的目标。

  • FindGTK2 模块,当启用 GTK2_USE_IMPORTED_TARGETS 时,现在将 GTK2_LIBRARIES 设置为包含导入的目标列表,而不是库的路径。此外,它现在设置一个新的 GTK2_TARGETS 变量,其中包含所有导入的目标。

  • FindOpenMP 模块学习了支持 Clang。

  • FindOpenSSL 模块获得了一个新的 OPENSSL_MSVC_STATIC_RT 选项,用于搜索使用 MSVC 静态运行时的库。

  • FindPNG 模块现在提供导入的目标。

  • FindTIFF 模块现在提供导入的目标。

  • 引入了一个 FindXalanC 模块,用于查找 Apache Xalan-C++ XSL 转换处理库。

  • FindXercesC 模块现在提供导入的目标。

平台

  • 添加了对 ARM Compiler (arm.com) 的支持,编译器 ID 为 ARMCC

  • 添加了一个新的平台文件,用于在 Cray Linux 环境中交叉编译以定位计算节点。有关使用详情,请参阅 Cray Linux 环境的交叉编译

  • 编译特性 功能现在可以识别 Windows (MinGW) 上 Clang 编译器支持的特性。

  • 在为 iOS 等嵌入式 Apple 平台构建时,CMake 学习了构建和安装包含设备和模拟器构建的组合目标。可以通过设置 IOS_INSTALL_COMBINED 目标属性来启用此行为。

CPack

其他

  • 关于已弃用功能的警告现在默认启用。可以使用 -Wno-deprecated 或将 CMAKE_WARN_DEPRECATED 变量设置为 false 来禁止显示警告。

已弃用和移除的特性

  • cmake(1) -E time 命令现在正确地将带有空格或特殊字符的参数传递给子进程。这可能会破坏那些通过使用自己的额外引用或转义来解决此错误的脚本。

  • Xcode 生成器已修复,可以与其他生成器一致地转义字符串中的反斜杠。先前通过在 Xcode 生成器上额外添加一层反斜杠来解决不一致性的项目必须更新,以移除对 CMake 3.5 及更高版本的解决方法。

其他更改

  • Visual Studio 14 2015 生成器学习了将 /debug:fastlink 链接器标志映射到 .vcxproj 文件属性。

  • FindGTK2 模块现在配置 GTK2::sigc++ 导入的目标,以便在使用 sigc++ 2.5.1 或更高版本时在其依赖项上启用 c++11。

  • cmake.org 上提供的预编译 Windows 二进制文件现在是一个 .msi 包,而不是安装程序可执行文件。在安装新软件包之前,可能需要手动卸载低于 3.5 的 CMake 版本。