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

c++ - Meson 选择了错误的编译器(GCC 而不是 clang)

我正在尝试将我的项目配置为使用 LLVM/clang++ 构建,但是总是选择 GCC:

操作系统是 Debian Linux 9。

这是meson.build文件:

如何说服 Meson 使用 clang?

0 投票
1 回答
163 浏览

c - 在另一个头文件中包含外部库的头文件

目前我有以下项目结构,其中libs目录的目的是存储我从 github 下载的外部 C 库,因为它们在我的操作系统的存储库中不可用:

在哪里libs/meson.build

modules/meson.build是:

并且meson.build是:

当我尝试制作一个#include "pqueue/pqueue.h"inside时出现了我的问题a_star.h,它说/modules/algorithms/a_star.h:5:10: fatal error: pqueue/pqueue.h: No such file or directory,但是当我将 include 移动到a_star.c错误消失时。遗憾的是,我需要将它包含在头文件中,因为我需要导出一个使用 pqueue.h 类型的结构

有没有办法在 a_star.h 中包含 pqueue.h 而不使用类似的路径../../libs/pqueue/pqueue.h

0 投票
2 回答
1199 浏览

python - 如何从 Meson 启动外部 Python 程序?

在构建我的项目之前,我必须使用 Meson 构建系统通过 Python 脚本生成 C++ 源文件。

这是正确的方法吗,即将 Python 视为通用的外部命令?

或者,作为 Meson 本身是一个 Python 程序,是否有可能以更直接的方式做同样的事情?

0 投票
2 回答
913 浏览

c++ - 如何正确使用生成的 protobuf 源?

当我尝试使用由 protobuf 生成的源时,'-std=c++11' 被添加到我尝试使用它们的目标的编译标志中,导致编译失败(因为我使用的是 C++11 后特性)。
遵循一个非常简单的例子。3个文件,全部在一个目录中:

介子.build

主文件

defs.proto

运行后meson build && ninja失败并出现以下错误:

问题是:如何修复 meson.build 文件,以便正确生成源并且仅std=通过指定的标志project( default_options

0 投票
2 回答
2597 浏览

c++ - 依赖子目录兄弟的介子目标

这是我的项目结构:

我想将我的构建移植到 Meson。但是,我不确定如何链接兄弟文件夹中定义的目标。

我的依赖图如下所示:

  • src/abc/meson.build定义一个静态库abc
  • src/def/meson.build定义了一个静态库def,它依赖于abcfoo
  • src/ghi/meson.buildghi定义一个依赖于的静态库bar
  • vendor/bar/meson.build定义一个静态库bar
  • vendor/foo/meson.build定义一个静态库foo
  • 顶层定义了一个依赖于meson.build的可执行文件,并且appabcdefghi

在文档中,似乎有两种机制:

  • subdir
  • subproject

我不清楚这里哪个最好。我的源代码之外没有任何依赖项。

我应该在我的meson.build文件中写什么来将这些目标链接在一起?

0 投票
1 回答
821 浏览

fuse - 如何在没有 sudo 的情况下安装 sshfs?

我正在尝试sshfs在我无权root访问的集群上构建。

按照这些说明,我做了:

1) 建造和ninja安装meson

2)libfuse内置meson --prefix=/cluster/home/user/fuse

尝试安装libfuse( ninja install) 时会出现问题,这需要 root 凭据。我收到以下错误:

运行自定义安装脚本 '/cluster/home/user/fuse/libfuse/util/install_helper.sh /cluster/home/user/fuse/etc /cluster/home/user/fuse/bin /usr/lib/udev/rules. d' chown:更改“/cluster/home/user/fuse/cluster/home/user/fuse/bin/fusermount3”的所有权:不允许操作

如何安装libfuse构建sshfs

0 投票
1 回答
34 浏览

c - install_man() 不采用生成文件的路径

我正在一个项目中工作,我需要为geoclue.

我正在使用介子的install_man()函数(更多细节在这里)从configure_file()函数传递生成的文件(更多细节在这里)。

但是,我收到一个错误,install_man即指定的文件不存在。

很可能是因为它是同时使用生成的ninja -C build

有什么办法可以让它工作吗?

0 投票
3 回答
765 浏览

meson-build - Prefix all sources with src/ in Meson

Relative to my project root where meson.build is located, all of my source files are under src/.

Is it possible to specify these source files in meson.build in a way that wouldn't force me to prefix them all with src/, given that that's somewhat redundant?

0 投票
1 回答
477 浏览

meson-build - 如何从 Meson 构建中的源文件派生可执行名称?

我正在尝试在 Meson 中创建一个单元测试目标列表,每个测试用例都从一个源文件构建。源文件在子目录中使用 files() 命令定义:

我想做的是在顶级构建中是这样的:

我知道如果文件名是纯字符串,则可以执行此操作,但上述方法失败并出现“文件对象不可调用”错误。

是否有更“中音”的方式从源文件名派生可执行/测试名称?

0 投票
1 回答
870 浏览

arm - 在介子中,有没有办法覆盖交叉构建定义文件中的内置选项?

我目前正在评估嵌入式项目的不同构建系统(例如:基于 FreeRTOS),我遇到了介子。我觉得很好,主要是有一个交叉构建定义文件来定义我的项目需要如何编译的想法。

不过,我确实对一些基本选项有疑问,例如:

  • b_pch
  • b_staticpic

也就是说,默认情况下,设置为true。在我的项目中,这些选项会生成错误的二进制文件...

正如介子所提出的,目前的解决方案是:

但不知何故,我觉得必须在交叉构建定义文件之外定义编译和链接器选项并不好......

我想知道是否有办法覆盖文件本身中的这些选项......

如果不是,你认为我应该在介子项目中创建一张票来请求这个功能吗?

我希望是这样的: