问题标签 [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.
meson-build - 仅在使用 --default-library=shared 时添加编译器标志
介子构建系统允许使用选项构建共享库或静态库--default-library
。但是,我无法知道是否正在构建共享库或静态库,我需要它来至少传递一个定义。有没有办法查询库类型?
这是我的猜测:
但显然我得到:
c - 如何在使用介子构建的 C 项目中使用 OpenMP
我对介子和C很陌生,如果这个问题的答案很琐碎,请原谅我......
我想在 C 项目中使用 OpenMP,并且我使用介子作为构建工具。
我想编译parallel for
本教程中的示例。我的main.c
看起来很相似:
我的短meson.build
文件包含以下内容:
c_args
我在此处的调用中注释掉了关键字executable
。
现在我结束了以下场景:
- 如果没有
'-fopenmp'
选项,我会收到警告,即pragma
未知并将被忽略(如我所料):../src/main.c:15:0: warning: ignoring pragma omp parallel [-Wunknown-pragmas] #pragma omp parallel for
- 插入选项
c_args: '-fopenmp'
后,我不再收到上述警告,而是收到未定义的对GOMP_parallel
,omp_get_num_threads
和引用的错误omp_get_thread_num
,并且没有构建任何内容 - 当我手动使用 gcc
gcc -Wall -o manually_with_gcc ../src/main.c -fopenmp
程序编译并执行时没有任何错误。
谁能告诉我如何让可执行文件与介子一起编译?
pkg-config - 在 meson.build 中设置 PKG_CONFIG_PATH
我在几个 C 项目(projectA
和projectB
)中使用介子,其中projectB
链接到来自projectA
. 在projectA/meson.build
中,我pkg-config
projectA.pc
使用介子编写了一个文件,该文件join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
按预期安装。
在projectB/meson.build
我dependency('projectA')
用来寻找projectA.pc
文件。
当我使用自定义安装前缀构建projectA
时projectB
,构建时meson
无法找到。有没有办法指定一个from ?projectA.pc
projectB
PKG_CONFIG_PATH
projectB/meson.build
这个问题是用这个最小的例子重现的:
项目A/meson.build:
项目B/meson.build:
命令:
有没有办法告诉projectB/meson.build
应该dependency()
调查join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
?
我试图在介子dependency()
调用中设置一个环境变量,但该env
参数不存在dependency()
:
不幸的是env:
,依赖项中的参数被忽略了(它在文档中不存在)。
将 ${prefix}/${libdir}/pkgconfig 目录从介子附加到 PKG_CONFIG_PATH 对我来说很有意义。有没有办法做到这一点?
ninja - 使用介子/忍者构建需要多次执行才能完成
我正在尝试将项目切换到meson
/ninja
但它需要多次执行ninja
才能成功完成,乍一看,早期的失败似乎是由于应该在它之前的不完整的构建步骤。看起来乱序的步骤通常是在我调用一个sed
通过来修复依赖于另一个库 ()custom_target
的库 () 编译期间的一些自动生成的输出时。这基本上就是我对 ( ) 所拥有的:lib-b
lib-a
lib-b
第一次运行后,ninja
我收到如下错误:
whereLib-1.0.gir
应该是shared_library
命令的输出之一。如果我再次运行它,它会创建文件,使其更进一步,并抱怨类似的错误。我再次运行它,这次更进一步,但依赖于未创建文件的其他内部项目出现错误。我最后一次运行它并完成。
如果meson
/ninja
不能按照一个必须先于另一个的顺序执行构建步骤,我会感到惊讶。我在这里做了什么恶心/愚蠢的事情吗?我基本上是在移植一个autotools
有效的设置,但是很慢。
assets - 介子处理数据/资产和可移植/相对路径
我想用Meson用 C++ 构建一个小游戏。假设这些是我的文件:
以下是meson.buid
文件:
第二个文件:
在我的 C++ 代码中,我应该使用什么路径以可移植(相对?)方式(Windows、OS X、Linux)加载资产文件,因为我可能已经创建了捆绑应用程序或在系统文件层次结构 ?
当我ninja
在构建目录中构建时,我还希望文件路径能够正常工作,而无需安装所有游戏数据。
我想DATA_PREFIX
在编译时添加一个定义集,或者使用环境变量。
请参阅http://mesonbuild.com/Installing.html和http://mesonbuild.com/Reference-manual.html#install_data。
谢谢你。
meson-build - 如何使用介子编译 AIDL 文件?
这是2个aidl文件。
src/com/rom1v/example/Service.aidl
:
src/another/package/Other.aidl
:
我想用介子编译它们,所以我开始了build.meson
:
从这些来源,我想生成:
MYBUILDDIR/gen/com/rom1v/example/Service.java
MYBUILDDIR/gen/another/package/Other.java
要手动生成它们,我使用以下命令:
如何使用介子做同样的事情?
我猜generator是我想要的,但我不知道output
要使用什么值(它不接受路径,只支持 @PLAINNAME@
和@BASENAME@
作为替换)。
c - MesonBuild:如何定义对`pkg-config`找不到的库的依赖关系?
我的项目(在 C 中)在构建时具有第三方依赖项。但是默认情况下,第三方库安装到/opt/
而不是/lib
,我无法在pkg-config
. 从mesonbuild
的文档中,我应该使用declare_dependency
,我没有它的源代码来将其视为我的子项目。如果我dependency()
用来定义它,我找不到正确的参数来定义自定义位置。
如何声明对非标准第三方库的依赖?
gstreamer - 如何在介子构建中为 dirs 选项提供相关路径以查找第三方库?
我正在尝试构建具有第三方库依赖项的自定义 gst-plugin。
使用cc.find_library和dirs
选项(采用绝对路径)我能够构建设置。
但我想包含相对路径,这样当其他人使用我的包时,他们不必更改任何内容,只需运行介子构建。有没有办法做同样的事情:添加/包含相对于目录中的搜索库?
meson-build - 介子可以读取文件的内容吗
介子是否可以将文件的内容读入数组或字符串?从这里可以将一个字符串拆分为一个数组,并且可以使用 循环一个数组foreach
,但是我一直无法找到从文件中获取数据的方法。
c++ - 当许多目标使用相同的 C++ 源时,如何加快 Meson 构建
我有一个包含 58 个目标的新介子项目。其中许多使用相同的 *.cc 文件,meson 为每个目标构建每个 *.cc 文件一次,这比 autotools 慢得多。此外,目标之间的编译标志应该相同,因此理论上介子应该能够重用对象。
介子是否支持构建许多目标?这种情况有标准解决方案吗?我可以尝试将项目中的所有源代码组织到共享库中,但是我必须决定如何对它们进行分组,而使用自动工具我不必决定这一点。我还没有找到这方面的文档。
-奔日
PS这是一个最小的例子:
-------- 文件:app1.cc --------
------ 文件:meson.build -----
- - - - - 命令 - - - - - -
您应该会看到未使用参数“y”的警告出现两次。文件 compile_commands.json 也有两个 app1.cc 条目。