CMake 3.5 发行说明

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

新特性

GUI

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

  • CMake GUI (cmake-gui(1)) 增加了设置 VS IDE 和 Xcode 生成器所用工具集的选项,这与 CMake (cmake(1)) 中已有的 -T 选项类似。

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

命令行

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

  • 现在可以通过新的 CMake (cmake(1)) 选项 -Werror=dev-Wno-error=dev 来控制是否将开发者警告视为错误。

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

命令

  • cmake_parse_arguments() 命令现在是原生实现的。为了兼容性,CMakeParseArguments 模块仍然是一个空的占位符。

  • install(DIRECTORY) 命令增加了对目录列表中“生成器表达式”的支持。

变量

  • 现在可以使用 CMake (cmake(1)) 选项 -Werror=deprecated-Wno-error=deprecated 来设置 CMAKE_ERROR_DEPRECATED 变量。

  • 现在可以使用 CMake (cmake(1)) 选项 -Wdeprecated-Wno-deprecated 来设置 CMAKE_WARN_DEPRECATED 变量。

属性

  • 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 环境交叉编译

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

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

CPack

  • CPack DragNDrop Generator 增加了新的变量,用于指定 AppleScript 文件来定制 DragNDrop 安装程序的文件夹外观,包括使用提供的 PNG 或多分辨率 TIFF 文件设置背景图像。请参阅 CPACK_DMG_DS_STORE_SETUP_SCRIPTCPACK_DMG_BACKGROUND_IMAGE 变量。

  • CPack DEB Generator 增加了使用单一或每个组件的变量来设置可选配置文件 Source 字段的功能。请参阅 CPACK_DEBIAN_PACKAGE_SOURCE

  • CPack DEB Generator 增加了按组件设置 PackageSectionPriority 控制字段的功能。请参阅变量 CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTIONCPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY

  • CPACK DragNDrop Generator 增加了添加多语言 SLA 到 DMG 的功能,该 SLA 在用户尝试挂载 DMG 时显示。有关详细信息,请参阅 CPACK_DMG_SLA_LANGUAGESCPACK_DMG_SLA_DIR 变量。

  • CPack NSIS Generator 增加了新的变量,用于向安装程序添加位图。请参阅 CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAPCPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP 变量。

  • CPack RPM Generator 增加了按组件设置 NameGroup 控制字段的功能。请参阅 CPACK_RPM_<component>_PACKAGE_NAMECPACK_RPM_<component>_PACKAGE_GROUP

其他 (Other)

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

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

  • CMake (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 版本,然后再安装新包。