问题标签 [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.
shell - 如何从介子脚本运行 shell 命令?
如何cp
从 Meson 构建脚本运行 shell 命令(例如,复制)?
我试过这段代码:
但它什么也没做。
run_command
成功运行(返回 0),但没有复制文件。
如果我用 替换cp
,cp3
我会收到来自 Meson 的错误消息,该过程终止并且它甚至没有到达下一行。
如果我替换test.txt
为test0.txt
,我会从脚本中收到一条错误消息。
所以脚本运行正常,但命令在文件系统上没有留下任何痕迹。
是run_command
从 Meson 运行 shell 命令的唯一方法吗?我究竟做错了什么?
c++ - 如何链接目录中的所有库?
我正在使用meson-build
一个 c++ 项目。
我创建了一个名为的目录libs
并将我需要的所有库都放在里面,我如何链接它?
ninja - custom_target() 提取和构建外部源
我有一个介子项目,有几个步骤:
- 下载并解压 tarball
cd
进入它,./configure
- 这会在上游存档目录中生成某个文件- 调整存档目录中的文件
- 更多构建步骤
我遇到的问题是如何设置输入/输出文件和依赖项。到目前为止,我有:
如果允许 Meson 避免重复下载(例如,如果文件已下载),则有单独步骤的原因。
如果您尝试运行它,它将无法找到Doxyfile
s(因为它们位于子目录中)。
如果您使用路径指定它们,则会出现错误:
我也可以通过手动指定脚本中的路径来做到这一点,但是介子构建基本上只是一个过于复杂的 shell 脚本,没有任何依赖管理。
如何像这样链接构建目录中文件的依赖关系?
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 /tmp
到docker run
,结果是这样的:
检查“time_t”的大小:-1
为什么会这样?介子可能会在其中创建临时可执行文件/tmp
吗?
c++ - 处理具有多种构建类型的介子构建选项
阅读了 Meson 网站页面(通常质量很高)后,我仍然不确定处理不同构建类型的不同选项的预期最佳实践。
所以要指定一个调试版本:
或者指定发布版本:
但是,如果我只想b_sanitize=address
为调试版本和发布版本添加(或其他任意复杂的参数集)b_ndebug=true
,我会这样做:
但是,在命令行上添加一堆自定义参数更麻烦,对我来说,将其放在 meson.build 文件中似乎更整洁。所以我知道我可以设置一些内置选项:
但它们是无条件设置的。
所以条件看起来像这样:
这是一种方法,但是,由于它是可移植的,因此似乎b_ndebug=true
更喜欢这种方法。add_project_arguments('-DNDEBUG')
如何在 Meson 脚本中有条件地设置便携式构建选项?
此外,b_sanitize=address
设置没有任何测试编译器是否支持它。我希望它首先检查它是否受支持(例如,因为库可能丢失):
是否可以让内置的便携式构建选项(例如b_sanitize
)检查它们是否受支持?
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 编译器一样......)
windows - 如何使用 wxWidgets 为 Windows 设置介子项目?
我正在尝试新的设置。我在 64 位 Windows 10 上。我在 Visual Studio 2017 上有介子示例项目和 clang 编译器堆栈。这两个都在我的 PATH 中。
我的 meson.build 是
你知道如何编译我的例子吗?也许我应该使用 MinGW wxWitgets 包?
python-3.x - 如何临时更改默认 python3 路径
我正在运行meson build
,它需要安装许多 python3 库。在我的系统上,默认的 python3 安装当前指向
该构建需要安装 python3-gi 包,该包已使用 synaptic 包管理器安装
我不确定这个包是为哪个安装安装的,因为我还有其他 python3 安装:
我得到的介子错误如下:
生成该错误是因为构建正在运行以下代码以检查是否安装了 python 依赖项:
我不知道如何解决这个问题,我怀疑 python3-gi 包已安装到系统 python3 位置,但默认指向 anaconda 安装,因此当介子构建脚本调用它时无法识别。
我不是一个有经验的 Linux 用户,也不是非常热衷于 python,所以我需要你的建议如何解决这个问题,以免弄乱 Anaconda 安装。目标是成功完成构建并保持当前配置。
编辑:
PATH 变量如下(我怀疑目录的顺序很重要):
编辑2:
正在搜索python3的介子构建部分如下:
cmake - 如何在不使用 CMake 的情况下在 KDevelop 中构建 Ninja 项目?
CMake 可以生成一个 Ninja 配置项目,然后可以从 KDevelop 构建该项目。
但是我已经用另一个工具(介子)得到了我的忍者文件。
如何让 KDevelop 使用我提供的 Ninja 文件,而不调用 CMake?
winapi - 如何在 mingw-w64 win32 线程上构建静态 glib 库
我想建立一个 glib 静态库。我已经安装了 MSYS2 并在上面安装了 MinGW-W64 Win32 线程。我没有下载 MSYS2 包。相反,我从 SourceForge 下载了 MinGW-W64 并将其安装到 MSYS2 目录中。这就是我设置系统的方式。我对编译需要安装 GLib 的 GTK+ 3.24 静态库很感兴趣。如何使用以下设置构建静态库?我不熟悉用于编译 GLib 的 Meson 构建系统。我也不知道如何传递安装前缀并构建静态库。命令
给出以下输出:
我不确定如何告诉它设置安装前缀甚至启用静态构建。谢谢