问题标签 [meson-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2110 浏览

shell - 如何从介子脚本运行 shell 命令?

如何cp从 Meson 构建脚本运行 shell 命令(例如,复制)?

我试过这段代码:

但它什么也没做。
run_command成功运行(返回 0),但没有复制文件。
如果我用 替换cpcp3我会收到来自 Meson 的错误消息,该过程终止并且它甚至没有到达下一行。
如果我替换test.txttest0.txt,我会从脚本中收到一条错误消息。

所以脚本运行正常,但命令在文件系统上没有留下任何痕迹。

run_command从 Meson 运行 shell 命令的唯一方法吗?我究竟做错了什么?


参考: https ://mesonbuild.com/External-commands.html

0 投票
2 回答
1728 浏览

c++ - 如何链接目录中的所有库?

我正在使用meson-build一个 c++ 项目。

我创建了一个名为的目录libs并将我需要的所有库都放在里面,我如何链接它?

0 投票
1 回答
652 浏览

ninja - custom_target() 提取和构建外部源

我有一个介子项目,有几个步骤:

  • 下载并解压 tarball
  • cd进入它,./configure- 这会在上游存档目录中生成某个文件
  • 调整存档目录中的文件
  • 更多构建步骤

我遇到的问题是如何设置输入/输出文件和依赖项。到目前为止,我有:

如果允许 Meson 避免重复下载(例如,如果文件已下载),则有单独步骤的原因。

如果您尝试运行它,它将无法找到Doxyfiles(因为它们位于子目录中)。

如果您使用路径指定它们,则会出现错误:

我也可以通过手动指定脚本中的路径来做到这一点,但是介子构建基本上只是一个过于复杂的 shell 脚本,没有任何依赖管理。

如何像这样链接构建目录中文件的依赖关系?

0 投票
1 回答
106 浏览

c - 如果在带有 tmpfs 的容器中运行,为什么介子无法确定 time_t 的大小?

受 systemdmeson.build文件的启发,我创建了以下文件:

如果我在容器中运行它并通过docker run --rm -it ubuntu:18.04 bash安装介子apt update && apt install -y meson gcc,这将按预期工作,返回:

检查“time_t”的大小:8

但是,将标志添加--tmpfs /tmpdocker run,结果是这样的:

检查“time_t”的大小:-1

为什么会这样?介子可能会在其中创建临时可执行文件/tmp吗?

0 投票
2 回答
5097 浏览

c++ - 处理具有多种构建类型的介子构建选项

阅读了 Meson 网站页面(通常质量很高)后,我仍然不确定处理不同构建类型的不同选项的预期最佳实践。

所以要指定一个调试版本:

或者指定发布版本:

但是,如果我只想b_sanitize=address为调试版本和发布版本添加(或其他任意复杂的参数集)b_ndebug=true,我会这样做:

但是,在命令行上添加一堆自定义参数更麻烦,对我来说,将其放在 meson.build 文件中似乎更整洁。所以我知道我可以设置一些内置选项:

但它们是无条件设置的。

所以条件看起来像这样:

这是一种方法,但是,由于它是可移植的,因此似乎b_ndebug=true更喜欢这种方法。add_project_arguments('-DNDEBUG')

如何在 Meson 脚本中有条件地设置便携式构建选项?

此外,b_sanitize=address设置没有任何测试编译器是否支持它。我希望它首先检查它是否受支持(例如,因为库可能丢失):

是否可以让内置的便携式构建选项(例如b_sanitize)检查它们是否受支持?

0 投票
1 回答
2175 浏览

meson-build - 介子构建:手动添加可执行文件的依赖路径

我想做的事情相当简单:使用 Meson 构建系统编译项目 + 手动包含依赖项。

/usr/lib但是,由于 Mac 上的系统完整性保护,我不想安装一个依赖项。(我知道我可以关闭它;我不想这样做。)

所以基本上我想做: g++ -L[path_to_lib] [files...]但使用meson而不是g++.

但是,这似乎非常复杂。在做了一些研究并没有成功地添加 cc = meson.get_compiler('c') dep = cc.find_library('granite' dirs: [ [path_to_dep] ]) 到我的 meson.build 文件(这不起作用,因为它处理库,而不是依赖项)之后,我感到相当愚蠢。

请帮忙!

我知道我可以将相关路径添加到 $PATH,但这太过分了,我拒绝相信没有另一种好的快速方法可以做到这一点。(与古老的 c 编译器一样......)

0 投票
1 回答
728 浏览

windows - 如何使用 wxWidgets 为 Windows 设置介子项目?

我正在尝试新的设置。我在 64 位 Windows 10 上。我在 Visual Studio 2017 上有介子示例项目和 clang 编译器堆栈。这两个都在我的 PATH 中。

我的 meson.build 是

你知道如何编译我的例子吗?也许我应该使用 MinGW wxWitgets 包?

0 投票
2 回答
577 浏览

python-3.x - 如何临时更改默认 python3 路径

我正在运行meson build,它需要安装许多 python3 库。在我的系统上,默认的 python3 安装当前指向

该构建需要安装 python3-gi 包,该包已使用 synaptic 包管理器安装

我不确定这个包是为哪个安装安装的,因为我还有其他 python3 安装:

我得到的介子错误如下:

生成该错误是因为构建正在运行以下代码以检查是否安装了 python 依赖项:

我不知道如何解决这个问题,我怀疑 python3-gi 包已安装到系统 python3 位置,但默认指向 anaconda 安装,因此当介子构建脚本调用它时无法识别。

我不是一个有经验的 Linux 用户,也不是非常热衷于 python,所以我需要你的建议如何解决这个问题,以免弄乱 Anaconda 安装。目标是成功完成构建并保持当前配置。

编辑:

PATH 变量如下(我怀疑目录的顺序很重要):

编辑2:

正在搜索python3的介子构建部分如下:

0 投票
1 回答
576 浏览

cmake - 如何在不使用 CMake 的情况下在 KDevelop 中构建 Ninja 项目?

CMake 可以生成一个 Ninja 配置项目,然后可以从 KDevelop 构建该项目。

但是我已经用另一个工具(介子)得到了我的忍者文件。

如何让 KDevelop 使用我提供的 Ninja 文件,而不调用 CMake?

0 投票
1 回答
1317 浏览

winapi - 如何在 mingw-w64 win32 线程上构建静态 glib 库

我想建立一个 glib 静态库。我已经安装了 MSYS2 并在上面安装了 MinGW-W64 Win32 线程。我没有下载 MSYS2 包。相反,我从 SourceForge 下载了 MinGW-W64 并将其安装到 MSYS2 目录中。这就是我设置系统的方式。我对编译需要安装 GLib 的 GTK+ 3.24 静态库很感兴趣。如何使用以下设置构建静态库?我不熟悉用于编译 GLib 的 Meson 构建系统。我也不知道如何传递安装前缀并构建静态库。命令

给出以下输出:

我不确定如何告诉它设置安装前缀甚至启用静态构建。谢谢