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命令行工具copy、copy_if_different、copy_directory和make_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::boost和Boost::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_SCRIPT和CPACK_DMG_BACKGROUND_IMAGE变量。CPack DEB Generator增加了使用单一或每个组件的变量来设置可选配置文件Source字段的功能。请参阅CPACK_DEBIAN_PACKAGE_SOURCE。CPack DEB Generator增加了按组件设置Package、Section和Priority控制字段的功能。请参阅变量CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION和CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY。CPACK DragNDrop Generator增加了添加多语言 SLA 到 DMG 的功能,该 SLA 在用户尝试挂载 DMG 时显示。有关详细信息,请参阅CPACK_DMG_SLA_LANGUAGES和CPACK_DMG_SLA_DIR变量。CPack NSIS Generator增加了新的变量,用于向安装程序添加位图。请参阅CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP和CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP变量。CPack RPM Generator增加了按组件设置Name和Group控制字段的功能。请参阅CPACK_RPM_<component>_PACKAGE_NAME和CPACK_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 版本,然后再安装新包。