介子构建系统版本 0.52

发表 构建系统发布 介子0.52,用于构建 X.Org Server、Mesa、Lighttpd、systemd、GStreamer、Wayland、GNOME 和 GTK+ 等项目。 介子代码是用 Python 编写的 提供 在 Apache 2.0 下获得许可。

Meson 开发的主要目标是提供高速的组装过程以及便利性和易用性。 默认构建使用工具包,而不是 make 实用程序 忍者,但也可以使用其他后端,例如 xcode 和 VisualStudio。 系统有一个内置的多平台依赖处理程序,允许您使用 Meson 构建分发包。 汇编规则以简化的特定于域的语言指定,对于用户来说具有高度的可读性和可理解性(正如作者的意图,开发人员应该花费最少的时间编写规则)。

支持 使用 GCC、Clang、Visual Studio 和其他编译器在 Linux、Illumos/Solaris、FreeBSD、NetBSD、DragonFly BSD、Haiku、macOS 和 Windows 上交叉编译和构建。 可以使用各种编程语言构建项目,包括 C、C++、Fortran、Java 和 Rust。 支持增量构建模式,其中仅重建与上次构建以来所做的更改直接相关的组件。 Meson 可用于生成可重复的构建,其中在不同的环境中运行构建会生成完全相同的可执行文件。

创新 介子0.52:

  • 添加了对使用 Emscripten 作为编译器的 Webassemble 的实验性支持;
  • 对 Illumos 和 Solaris 平台的支持已得到显着改进并进入工作状态;
  • 确保如果系统没有安装 gettext 工具包,则忽略基于 gettext 的国际化脚本(之前在没有安装 gettext 的系统上使用 i18n 模块时会显示错误);
  • 改进了对静态库的支持。 解决了使用已卸载的静态库时出现的很多问题;
  • 添加了使用字典分配环境变量的功能。 调用environment()时,现在可以将第一个元素指定为字典,其中环境变量以键/值形式定义。 这些变量将被传输到environment_object,就像它们是通过set()方法单独设置的一样。 现在还可以将字典传递给支持“env”参数的各种函数;
  • 添加了函数“runtarget alias_target(target_name, dep1, ...)”,该函数创建一个新的第一级构建目标,可以使用选定的构建后端调用该目标(例如“ninja target_name”)。 此构建目标不运行任何命令,但确保构建所有依赖项;
  • 如果“[properties]”部分中有 sys_root 设置,则在交叉编译期间启用 PKG_CONFIG_SYSROOT_DIR 环境变量的自动设置;
  • 添加了“--gdb-path”选项,用于在指定“--gdb testname”选项以指定的测试脚本运行GDB时确定GDB调试器的路径;
  • 添加了对 clang-tidy 构建目标的自动检测,以使用所有源文件运行此 linter。 如果系统中存在 clang-tidy 且在项目根目录中定义了“.clang-tidy”(或“_clang-tidy”)文件,则创建目标;
  • 添加了用于 Clang 扩展的依赖项('blocks') 吹氣梢;
  • 链接器和编译器视图是分开的,允许使用编译器和链接器的不同组合;
  • 除了 all_sources() 方法之外,还向 SourceSet 对象添加了 all_dependency() 方法;
  • 在 run_project_tests.py 中,添加了“--only”选项来选择性地运行测试(例如,“python run_project_tests.py —only fortran python3”);
  • find_program() 函数现在能够仅搜索程序所需的版本(版本是通过使用“-version”选项运行程序来确定的);
  • 为了控制符号的导出,在shared_module()函数中添加了vs_module_defs选项,类似于shared_library();
  • kconfig 模块已扩展为支持用于指定输入文件的configure_file();
  • 为configure_file()添加了为“command:”处理程序指定多个输入文件的功能;
  • 用于创建存档的“dist”命令已移至一级命令类别(之前该命令与 ninja 相关)。 添加了“--formats”选项来定义要创建的存档类型(例如,
    “介子 dist -formats=xztar,zip”)。

来源: opennet.ru

添加评论