CMake 因提供简单的脚本语言、通过模块扩展功能的方法、最少数量的依赖项(不绑定到 M4、Perl 或 Python)、缓存支持、交叉编译工具的存在、对生成构建的支持而闻名。用于各种构建系统和编译器的文件,用于定义测试脚本和构建包的 ctest 和 cpack 实用程序,用于交互式设置构建参数的 cmake-gui 实用程序。
主
- 添加了对 Objective C (“OBJC”) 和 Objective 语言的支持
C++(“OBJCXX”),可以通过project()和enable_language()命令启用,之后“.m”“.mm”文件中的代码将编译为Objective C和Objective C++代码,而不是作为C++,和以前一样; - 添加了对 Solaris 平台上的 Clang 编译器的支持;
- 添加了新的命令行选项:“cmake -E true|false”以打印返回码 0 和 1; “cmake --trace-redirect=” 将跟踪信息重定向到文件
“标准错误”; “cmake --loglevel”命令已重命名为“--log-level”,以使其与其他命令的名称保持一致; - 添加了“target_precompile_headers()”命令来列出预编译期间使用的头文件列表(减少构建时间);
- 添加了“UNITY_BUILD”属性,该属性激活批处理模式来处理生成器中的源文件以加快构建速度;
- 添加了命令“find_file()”、“find_library()”、“find_path()”、
“find_package()”和“find_program()”根据定义各种文件类别的搜索路径的变量来搜索文件、库、路径、包和可执行文件。
变量“CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH”、“CMAKE_FIND_USE_CMAKE_PATH”、“CMAKE_FIND_USE_CMAKE_SYSTEM_PATH”、“CMAKE_FIND_USE_PACKAGE_ROOT_PATH”、“CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH”和“CMAKE_FIND_USE_PACKAGE_REGIST”用于控制基本搜索路径RY”; - 在“file()”命令中添加了“file(GET_RUNTIME_DEPENDENCIES)”模式,该模式允许您递归检索动态链接可执行文件或库时使用的库列表。该模式取代了 GetPrecessions() 命令,该命令现已被弃用;
- “ctest(1)”命令实现了根据每个测试所需的资源来序列化测试的能力;
- 变量“CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY”已被弃用,应替换为“CMAKE_FIND_USE_PACKAGE_REGISTRY”;
- 改进了 AIX 平台支持。使用“ENABLE_EXPORTS”属性时,除了可执行文件之外,现在还会生成链接器的导入文件,并以“.imp”扩展名保存。在通过使用“MODULE”选项调用“add_library()”创建的插件中,可以在使用“target_link_libraries()”命令进行链接时使用此文件。默认情况下,AIX 上的运行时链接是禁用的,因为 CMake 现在提供了加载时链接所需的所有符号信息。要使用动态库或可加载模块的运行时链接,必须在链接器启动标志列表中显式指定选项“-Wl,-G”,通过变量“CMAKE_SHARED_LINKER_FLAGS”和“CMAKE_MODULE_LINKER_FLAGS”定义。
来源: opennet.ru