问题标签 [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 回答
186 浏览

meson-build - 如何使介子对象保持不变?

正如这里所解释的,我喜欢在子目录中创建文件对象,并在顶级文件中创建库/可执行文件。但是,由于所有变量最终都在全局范围内,因此两个子目录文件可能会意外使用相同的变量名。例如:

当 src/def/meson.build 尝试为 my_files 赋值时,我希望介子抛出错误。这在 Meson 0.50 中可能吗?

0 投票
1 回答
647 浏览

c++ - 如何使用 Meson 正确配置 Visual Studio 项目

我目前正在尝试使用 Meson 构建 VS 解决方案,我的项目如下所示:

目前,meson.build 只是抓取源文件,添加包含目录并创建一个库。

1-是否可以将这种结构与 VS 后端保持一致?生成的解决方案完全忽略子目录(但文件已正确添加)。

2-是否可以将多个配置(调试、发布等)添加到单个项目,而不是为每个配置构建解决方案?

3-该选项cpp_std=似乎在没有警告的情况下被忽略,我是否必须将其指定/std:为编译器的参数?

0 投票
1 回答
1183 浏览

windows - 在 Windows 上的 Meson 构建中链接到现有的`.lib` 文件

我正在Meson Build中构建一个简单的项目。
尽管在 Meson Build Documentation 中如何创建依赖项(隐含 UNIX / LINUX 系统的假设)有详细记录,但不清楚如何链接任意非路径库。

让我们在 Windows 上有以下项目:

我想创建一个基于SrcFile1.c和的可执行文件,SrcFile2.c它与预构建 MyLib1.lib的和MyLib2.lib.

这样做的正确方法是什么?

0 投票
1 回答
316 浏览

meson-build - 如何在介子构建中配置 ARC 编译器

我正在将我们的构建系统从 Make 转移到 meson/ninja。尝试为 ARC 设置交叉文件时,执行介子设置:

我收到一个错误:

meson.build:1:0:错误:未知编译器:[['/efs/data/public/synopsis/ARC-2018.06/MetaWare/arc/bin/ccac']]

这是我的交叉文件:

有任何想法吗 ?在介子文档中,它显示为支持弧架构。 https://mesonbuild.com/Reference-tables.html

更新:

支持 gnu 的 ARC 编译器。

解决了:

在到达 meson 的开发者邮件列表后,我们将在 meson 的源代码中添加 synopsis 专有编译器的实现,并将将更改提交到 meson 的项目。

0 投票
1 回答
918 浏览

python - 使用 Meson 生成 Protobuf Python 源代码

刚刚学习如何使用 Meson 并希望为多种语言生成 protobuf 源/头文件 - C++、Python、Java、Javascript。meson.build使用我文件中的生成器函数,C++ 非常简单:

这会产生MyExample.pb.ccMyExample.pb.h文件。我认为 Python 会同样简单,但我有点难过,因为我的 Python 脚本没有 executable() 步骤,因为它不需要编译。我注意到介子(事实证明是 CMake)在调用 executable() 之前实际上不会生成 protobuf 文件,所以我不能跳过这一步,否则MyExample_pb2.py将不会生成文件。经过几个小时的搜索,我没有找到一起使用 meson/python/GPB 的示例。不应该有一种简单的方法来像 CMake 那样将生成的源“链接”到 python 文件/模块吗?

0 投票
0 回答
99 浏览

vala - Meson+Vala:如果 C 文件依赖于 --header 标志生成的包头怎么办

我想做这样的事情:

其中bar.c取决于中定义的类型foo.vala。如果我手动完成,我会先用--header foo.hflag 调用 vala 编译器,然后用 C 编译器编译所有内容。

但我在介子的构建过程中实际看到的是,它bar.c在之前被编译,foo.vala并且在没有 --header 标志的情况下调用了 vala 编译器。所以构建失败。添加vala_header: 'foo.h'没有帮助。

我该如何正确地做到这一点?

0 投票
0 回答
775 浏览

macos - 如何在介子中为调试构建指定 rpath?

我正在尝试移植qmake项目以meson构建系统。
Project 是一个简单的 Qt GUI 应用程序,没有其他依赖项。
应用程序是跨平台的,它必须在 macOS/Linux/Windows 上编译和运行。

现在我被困在mac上。
调试由ninja/meson无法加载的应用程序二进制文件:

文档中提到了两个与 rpath 相关的参数:

  • build_rpath

  • install_rpath

我都试过了,指定了本地 Qt 安装的路径(export DYLD_FRAMEWORK_PATH=/Users/user/Qt/5.12.3/clang_64/lib),但没有任何改变:

我期望meson更改@rpath指定,但事实并非如此。
我的问题是什么,我做错了吗?

PS有一个解决方法:

PPS meson.build

0 投票
1 回答
489 浏览

c - Vala:使用库不起作用:未找到 taglib、tag_c.h

所以我正在修补使用 taglib 库的基本操作系统应用程序。目前我安装了该库,'/usr/include/taglib/'但是当我尝试使用它构建我的应用程序时,sudo ninja install它说它在我的应用程序的已编译 c 代码中找不到该'tag_c.h'文件。然而,这个'tag_c.h'文件可以在上面的目录中找到。

我的介子文件的重要部分如下所示:

当我删除实际使用 TagLib 库的代码行时,我在构建我的应用程序时没有遇到任何错误:

所以也许这意味着它找到了 vapi,但找不到它的 c 代码?

首先,我该如何解决这个问题?

其次,这只是我机器上的问题吗?我如何确保安装我的应用程序的其他人也通过介子构建它来安装 taglib 并让它立即工作?

0 投票
1 回答
244 浏览

fortran - 从相同的代码库构建多个可执行文件

我正在尝试Meson/Ninja我在其他方面所做的事情make。我在src变量中列出了源文件,其中一个是prog.f90带有 statement的程序call ROUTINE,预处理器插入sub1, sub2...了不同的 test-executables之类的名称1.x, 2.x...。像这样:

它比使用更快,makeMeson/Ninja在更改特定文件时设法使用所有内核大约 1 秒,而 make 需要 2 秒,但主要在 1 个内核上运行。

似乎每个可执行文件都有自己的构建目录,例如build/1x@exeetc,所有.mod文件都.o匹配src。运行ninja -v它似乎改变的文件被编译的次数与可执行文件的次数一样多。同时 make 只编译它(但由于对象而不是模块之间的依赖关系,然后编译其他文件)。

那么更聪明的方法是什么?

0 投票
1 回答
1410 浏览

c - 使用 CMake 查找介子依赖性

我正在尝试 用介子编译gst-python 。

我在 Windows 上,没有 pkg​​-config。

所以我试图让介子找到与介子的依赖关系(Gstreamer)。Meson 找到 cmake,但我无法设置 CMAKE_MODULE_PATH,因此 cmake 会找到我的 Findgstreamer-1.0.cmake 文件。

我在介子文档上看到您可以设置 cmake_module_path 选项,但它不起作用:

仍然产生错误:

不知何故,我需要设置 cmake 变量 CMAKE_MODULE_PATH。我找不到通过介子或环境变量设置它的方法。

我怎样才能让 cmake 找到依赖?