问题标签 [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 - 如何使介子对象保持不变?
正如这里所解释的,我喜欢在子目录中创建文件对象,并在顶级文件中创建库/可执行文件。但是,由于所有变量最终都在全局范围内,因此两个子目录文件可能会意外使用相同的变量名。例如:
当 src/def/meson.build 尝试为 my_files 赋值时,我希望介子抛出错误。这在 Meson 0.50 中可能吗?
c++ - 如何使用 Meson 正确配置 Visual Studio 项目
我目前正在尝试使用 Meson 构建 VS 解决方案,我的项目如下所示:
目前,meson.build 只是抓取源文件,添加包含目录并创建一个库。
1-是否可以将这种结构与 VS 后端保持一致?生成的解决方案完全忽略子目录(但文件已正确添加)。
2-是否可以将多个配置(调试、发布等)添加到单个项目,而不是为每个配置构建解决方案?
3-该选项cpp_std=
似乎在没有警告的情况下被忽略,我是否必须将其指定/std:
为编译器的参数?
windows - 在 Windows 上的 Meson 构建中链接到现有的`.lib` 文件
我正在Meson Build中构建一个简单的项目。
尽管在 Meson Build Documentation 中如何创建依赖项(隐含 UNIX / LINUX 系统的假设)有详细记录,但不清楚如何链接任意非路径库。
让我们在 Windows 上有以下项目:
我想创建一个基于SrcFile1.c
和的可执行文件,SrcFile2.c
它与预构建 MyLib1.lib
的和MyLib2.lib
.
这样做的正确方法是什么?
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 的项目。
python - 使用 Meson 生成 Protobuf Python 源代码
刚刚学习如何使用 Meson 并希望为多种语言生成 protobuf 源/头文件 - C++、Python、Java、Javascript。meson.build
使用我文件中的生成器函数,C++ 非常简单:
这会产生MyExample.pb.cc
和MyExample.pb.h
文件。我认为 Python 会同样简单,但我有点难过,因为我的 Python 脚本没有 executable() 步骤,因为它不需要编译。我注意到介子(事实证明是 CMake)在调用 executable() 之前实际上不会生成 protobuf 文件,所以我不能跳过这一步,否则MyExample_pb2.py
将不会生成文件。经过几个小时的搜索,我没有找到一起使用 meson/python/GPB 的示例。不应该有一种简单的方法来像 CMake 那样将生成的源“链接”到 python 文件/模块吗?
vala - Meson+Vala:如果 C 文件依赖于 --header 标志生成的包头怎么办
我想做这样的事情:
其中bar.c
取决于中定义的类型foo.vala
。如果我手动完成,我会先用--header foo.h
flag 调用 vala 编译器,然后用 C 编译器编译所有内容。
但我在介子的构建过程中实际看到的是,它bar.c
在之前被编译,foo.vala
并且在没有 --header 标志的情况下调用了 vala 编译器。所以构建失败。添加vala_header: 'foo.h'
没有帮助。
我该如何正确地做到这一点?
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
:
c - Vala:使用库不起作用:未找到 taglib、tag_c.h
所以我正在修补使用 taglib 库的基本操作系统应用程序。目前我安装了该库,'/usr/include/taglib/'
但是当我尝试使用它构建我的应用程序时,sudo ninja install
它说它在我的应用程序的已编译 c 代码中找不到该'tag_c.h'
文件。然而,这个'tag_c.h'
文件可以在上面的目录中找到。
我的介子文件的重要部分如下所示:
当我删除实际使用 TagLib 库的代码行时,我在构建我的应用程序时没有遇到任何错误:
所以也许这意味着它找到了 vapi,但找不到它的 c 代码?
首先,我该如何解决这个问题?
其次,这只是我机器上的问题吗?我如何确保安装我的应用程序的其他人也通过介子构建它来安装 taglib 并让它立即工作?
fortran - 从相同的代码库构建多个可执行文件
我正在尝试Meson/Ninja
我在其他方面所做的事情make
。我在src
变量中列出了源文件,其中一个是prog.f90
带有 statement的程序call ROUTINE
,预处理器插入sub1, sub2...
了不同的 test-executables之类的名称1.x, 2.x...
。像这样:
它比使用更快,make
但Meson/Ninja
在更改特定文件时设法使用所有内核大约 1 秒,而 make 需要 2 秒,但主要在 1 个内核上运行。
似乎每个可执行文件都有自己的构建目录,例如build/1x@exe
etc,所有.mod
文件都.o
匹配src
。运行ninja -v
它似乎改变的文件被编译的次数与可执行文件的次数一样多。同时 make 只编译它(但由于对象而不是模块之间的依赖关系,然后编译其他文件)。
那么更聪明的方法是什么?
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 找到依赖?