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