CMake 3.5 发布说明

3.4 之后的 CMake 更改包括以下内容。

新功能

GUI

  • cmake-gui(1) 添加了控制有关已弃用功能的警告的选项。

  • cmake-gui(1) 获得用于设置工具集以在 VS IDE 和 Xcode 生成器中使用的选项,类似于现有的 -T cmake(1) 选项。

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

命令行

  • -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 编译器 (arm.com) 的支持,编译器 ID 为 ARMCC

  • 添加了一个用于在 Cray Linux 环境中交叉编译并针对计算节点的全新平台文件。有关用法详细信息,请参见 在 Cray Linux 环境中交叉编译

  • Compile Features 功能现在了解 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++ 导入目标,以在其依赖项中启用 c++11,前提是使用 2.5.1 或更高版本的 sigc++。

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