CMake 3.4 发行说明

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

新功能

生成器

  • 生成器 Visual Studio 14 2015学会了根据 CMAKE_SYSTEM_VERSION 变量的值和主机上可用的 SDK 来选择 Windows 10 SDK。

  • CMake 学会了对 Apple Swift 语言进行基本的初始支持。使用 Xcode 6.1 或更高版本与 Xcode 生成器时,可以使用 enable_language() 命令或 project() 命令启用 Swift 语言(与其他生成器或 Xcode 版本太旧时,这将出错)。然后,可以将 .swift 源文件列在要编译的目标中。

命令

  • find_program() 命令学习了一个 NAMES_PER_DIR 选项,该选项可以在继续下一个目录之前考虑每个目录中的所有给定 NAMES

  • get_filename_component() 命令学习了一个新的 BASE_DIR 子命令。当从相对路径计算绝对路径时,该命令用于指定一个基本目录。

  • 命令 if() 学习了一个新的 TEST 运算符,如果 add_test() 命令定义了给定的测试名称,则该运算符评估为真。请参见策略 CMP0064

  • 命令 install(DIRECTORY)DESTINATION 选项学习了支持 generator expressions

  • 命令 install(FILES)DESTINATION 选项学习了支持 generator expressions

  • 命令 string() 学习了一个新的 APPEND 子命令。

变量

属性

模块

  • ExternalProject 模块 ExternalProject_Add() 函数 GIT_SUBMODULES 选项现在在限制将更新的子集之外,还限制了已初始化的子集。

  • 加上了ExternalProject 模块,学习了新的USES_TERMINAL参数,提供步骤独占终端访问权限。这对于Ninja生成器十分有用,可以监视 CMake 超级构建进度并防止 CPU 过度订阅。

  • FindBISON模块BISON_TARGET宏了解一个新DEFINES_FILE选项,用于指定要生成的自定义输出标题。

  • FindHDF5模块了解了一个新HDF5_PREFER_PARALLEL选项,如果两者都可用,则允许用户指定一个并行 HDF5 工具。

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

  • FindJava模块了解到可选择查找idljjarsigner工具。

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

  • FindOpenSSL模块了解了一个新OPENSSL_USE_STATIC_LIBS选项,仅搜索静态库。

  • FindPkgConfig了解了一个新的pkg_get_variable()命令,可以用于查询一个包中的任意变量(如相关工具或数据和插件的安装路径)。

  • 模块 FindProtobuf 获得了新功能 protobuf_generate_python() 用于从 .proto 文件中生成 Python 源代码。

  • 模块 FindTIFF 已学会分别搜索调试和发布变量。

  • 模块 FindwxWidgets 已学会支持版本请求。

  • 模块 FindXercesC 已学会分别搜索调试和发布变量。

  • 模块 FindZLIB 已学会分别搜索调试和发布变量。

  • 模块 GNUInstallDirs 按照 GNU 代码标准文件系统分层标准 为某些安装前缀学会了特殊的默认值。

  • 模块 UseJava 函数 add_jar 学会了支持响应文件(例如 @srcs.txt)用于源代码规范。

  • 模块 UseJava 函数 install_jar 学会了新的 DESTINATIONCOMPONENT 选项以指定相应的 install() 命令选项。

  • 模块 UseJava 获得了新函数 create_javah,用于根据 Java 类创建 C 头文件。

生成器表达式

CTest

  • CTest 学会选择性地度量并行测试期间的 CPU 负载,避免启动可能导致负载超过给定阈值的测试。请参阅 ctest(1) 命令 --test-load 选项、CTest 测试步骤TestLoad 设置、CTEST_TEST_LOAD 变量以及 ctest_test() 命令的 TEST_LOAD 选项。

  • ctest(1) 习得选项 --test-output-size-passed--test-output-size-failed,以在作为 Dashboard Client 运行时自定义提交的测试输出大小的限制。

CPack

其他

  • Compile Features 功能现在知道 Windows 上 GNU C 编译器支持的功能。

  • CMake 已经学会使用 MSVC 工具处理 *.manifest 源文件。名为 .exe.dll 目标源的清单文件将与链接器生成的清单合并并嵌入到二进制文件中。

  • 现在支持并发 Fortran 77 编译器。其 compiler idCCur

  • cmake(1) 获取了一个新的 --trace-expand 命令行选项,它类似于 --trace,但在输出中扩展变量引用。

已弃用和已移除的功能

其他更改

  • CheckFunctionExistsCheckLibraryExistsCheckSymbolExistsFindThreads 模块已学会在仅启用 CXX 的环境中工作。

  • CPack DEB Generator 现在在计算包校验和时,会正确地排除符号链接。

  • CPack DEB Generator 不再使用 fakeroot 和系统 tar 程序来打包。

  • CPack 模块不再在使用 CMake 特殊字符作为其他设置的默认值时篡改设置。负责此行为的宏 cpack_set_if_not_set 现在已弃用。

  • 除非设置了 ENABLE_EXPORTS 目标属性,否则 CMake 将不再使用标志链接可执行文件以导出符号。请参阅策略 CMP0065

  • 使用 add_library() 命令创建的 MODULE 库不再设置 SONAME 字段。 MODULE 库是在运行时进行显式动态加载的。它们无法链接,因此 SONAME 没有用。

  • 内部 CMAKE_<LANG>_COMPILE_OBJECT 规则变量现在会在单独的 <INCLUDES> 占位符中替换编译器包含标志,而不是在主 <FLAGS> 占位符中。