CMake 3.5 发行说明

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

新特性

GUI

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

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

  • cmake-gui(1) 增加了一个正则表达式浏览器,可用于实时创建和评估正则表达式。该浏览器窗口可通过“工具”菜单访问。

命令行

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

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

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

命令

变量

属性

  • VS_GLOBAL_<variable> 目标属性现在支持 VS 2010 及以上版本。以前仅支持 VS 2008 及以下版本。

模块

  • ExternalProject 模块增加了一个新的 GIT_REMOTE_NAME 选项,用于控制 git clone --origin 的值。

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

  • FindFLEX 模块的 flex_target() 命令增加了一个新的 DEFINES_FILE 选项,用于指定要生成的自定义头文件。

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

  • 当启用 GTK2_USE_IMPORTED_TARGETS 时,FindGTK2 模块现在将 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 环境交叉编译

  • 编译 功能 功能现在支持 Clang 编译器在 Windows (MinGW) 上支持的功能。

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

CPack

其他 (Other)

  • 已弃用功能的警告现在默认启用。可以使用 -Wno-deprecated 或将 CMAKE_WARN_DEPRECATED 变量设置为 false 来抑制这些警告。

已弃用和移除的功能 (Deprecated and Removed Features)

  • cmake(1)-E time 命令现在可以正确地将带有空格或特殊字符的参数传递给子进程。这可能会破坏依赖于其自身额外引用或转义来解决该错误的脚本。

  • Xcode 生成器已修复,可以与其他生成器一致地转义字符串中的反斜杠。先前通过条件判断 Xcode 生成器添加了额外级别的反斜杠来解决不一致问题的项目,必须更新以删除 CMake 3.5 及更高版本的解决方法。

其他更改 (Other Changes)

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

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

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