问题标签 [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.
c++ - -Wno-pedantic 在旧版 gcc 上被忽略
我有一个 C++ 应用程序,我在其中使用零参数变量宏。但是,我真的不喜欢在各种答案中在 SO 上发布的符合标准的解决方案,而是保持 GCC 特定##__VAR_ARGS__
。
不过,我想尽可能多地收到警告。
我的构建系统是介子,我传递了选项--buildtype=debugoptimized --warning_level=2 --werror=true
并指定-Wno-pedantic
为附加项目参数。
Ob Ubuntu 18.04, gcc 7.3.0, meson 0.45.1 这为编译器添加了以下选项:-Wall -Wextra -Werror -Wpedantic -Wno-pedantic -std=c++11
一切正常。
CentOS 7.4.1708、gcc 4.8.5、meson 0.44.1 上的相同代码、相同选项向编译器添加了完全相同的选项,但无法编译,我收到以下错误:
ISO C99 requires rest arguments to be used
(对于可变参数宏)
似乎-Wno-pedantic
在这个编译器中被忽略了。
我可以稍微尝试一下警告选项,但无论是在 Ubuntu 还是 CentOS 上,构建都失败了。当 Ubuntu 构建失败时,错误消息有点不同:
ISO C++11 requires at least one argument for the "..." in a variadic macro
到目前为止,我发现使两个构建都成功的唯一解决方案是使用meson --buildtype=plain --warning_level=1 -werror=true
和设置-Wall -Wextra
为项目参数。
所以我不确定这是编译器问题、介子问题还是我遇到的一些不幸的版本差异。
c++ - 介子未定义对用户定义函数的引用
我正在尝试对介子进行单元测试,并且得到:
但是我在 Sha1.h 中定义了这些函数:
这些在 Sha1.c 中具有相同的定义:
然后我有一个测试文件,然后尝试测试 SHA1 函数:
但是,当使用 meson.build 文件时,例如:
我收到上述错误,说它找不到对这些函数的引用(但它似乎可以很好地解决该头文件中定义的实际结构?这让我更加困惑。所以我然后尝试查看符号在目标文件本身上查看是否实际定义了函数:
其中显示了在目标文件中定义的函数。所以我对我是如何得到这个错误有点困惑。
vala - 介子依赖性但 pkg-config 找不到 libpeas-1.0
我正在使用 GNOME builder 创建一个 vala 项目,并尝试通过以下方式将 libpeas-1.0 添加为 meson 的依赖项:
失败了:
如果我执行:
在 bash 中,我得到:
同样有效的是:
任何想法这里可能会出现什么问题?
shared-libraries - 加载用 Vala 编写并用介子构建的 libpeas 模块失败
我试图在介子的帮助下构建这个例子: Vala 中的 libpeas 扩展入门
我的 meson.build 如下所示:
objects: 'libextension.so',
如果我在示例中使用预编译的共享对象文件foo = executable(
,如果我不这样做,它不会。
有什么建议么?
编辑:
涉及的文件内容如下:
扩展名.gresource.xml:
扩展插件:
扩展名.vala:
main.vala:
窗口.vala:
如果我评论该objects:'libextension.so'
行,我会收到以下错误:
解决了:
如果我添加一个虚拟函数:
到extension.vala并从main.vala调用它,链接适用于嵌入式插件,另请参见:gnome_builder_plugins_init.c
mysql - 介子 find_program 找不到程序
我正在用 gnome-builder 和 flatpak 构建一个 Vala 程序。我不想连接到 mySQL 数据库。这就是为什么我需要运行mysql_config
以获得正确的编译器标志。
所以我添加mysql_config = find_program('mysql_config')
到我的 meson.build 文件中。
当我尝试编译时,我得到meson.build:7:0: ERROR: Program(s) ['mysql_config'] not found or not executable
.
当我whereis mysql_config
在命令行上运行时,我得到了预期的结果mysql_config: /usr/bin/mysql_config
。我也可以从命令行运行mysql_config --cflags
预期的结果-I/usr/include/mysql -I/usr/include/mysql
。
这就是为什么我认为问题在于我正在使用 flatpak-builder 进行构建。
我的./meson.build:
我的 ./src/meson.build
构建过程的完整输出:
meson-build - 将文件对象转换为字符串
在 meson.build 文件中,我定义了一些文件:
要建立一个 ID,我尝试写:
然后我有这个错误:
如何将文件对象转换为有效字符串?(我尝试添加 .string(),但这不是解决方案)
c++ - 无法在 Meson 构建中使用 C++ `std::filesystem` 库
我正在尝试使用 Meson 构建系统构建一段使用新 C++17 文件系统库的 C++ 代码。
这是meson.build
涉及的文件:
如果使用 boost::filesystem 库,这应该是正确的语法:
如何指定我想要标准 C++ 库中包含的版本?这是我尝试但没有成功的方法:'libc++fs'、'stdlib'、'stdc++'、'libc++'、'c++'、'c++17'。
这是我从 Meson 收到的错误消息:
src/meson.build:33:0:错误:未找到本机依赖项“libc++fs”
我目前使用的编译器是 LLVM/clang。
c++ - 无法在 C++ 项目中从 Meson 运行 Doxygen
我无法通过 Meson 的配置运行 Doxygen。
这是中的相关代码meson.build
:
成功找到 doxygen 可执行文件:
找到程序 doxygen: YES (/usr/bin/doxygen)
但是,启动时,我收到以下错误消息:
[0/1] 运行外部命令文档。
无法执行命令“doxygen /home/project/Doxyfile”。文件未找到。
失败:介子文档
从命令行手动运行它可以工作:
我的meson.build
配置有什么问题?
vala - Flatpak 捆绑 libmysqlclient
我正在尝试用 flatpak 构建一个 Vala 程序。我需要连接到一个 mysql 服务器,这就是为什么我需要libmysqlclient
与我的 flatpak 捆绑在一起。
这就是我添加mysql_config
到 meson.build 文件中的原因。
现在的问题是 mysql_config 在 flatpak 运行时中不可用。所以我需要将它与我的 flatpak 捆绑在一起。
然而,Flatpak 文档对我来说并不是很有帮助。
模块
模块列表指定要作为构建过程的一部分构建的每个模块。其中一个模块是应用程序本身,其他模块是捆绑为 Flatpak 一部分的依赖项和库。虽然简单的应用程序可能只指定一个或两个模块,因此模块部分很短,但一些应用程序可以捆绑大量模块,因此模块部分很长。
GNOME Dictionary 的模块部分很短,因为它只包含应用程序本身,看起来像:
可以看出,每个列出的模块都有一个名称(可以自由分配)和一个源列表。每个来源都有一个类型,可用的类型包括:
每种源类型都有不同的属性,这些属性在 Flatpak Builder 命令参考中列出。
有人可以告诉我如何添加libmysqlclient
到我的 flatpak 以及如何使用mysql_config
为我的 flatpak 设置正确的编译器标志。
这是我的清单(gnome-builder 默认):
c++ - 介子项目:我可以将部分源代码放在其他地方吗?
在 Meson 项目中,如何编译不在我的项目树中的目录中的文件(即不仅仅是头文件)?
例如:
include_directories
仅用于标题...
如果我在文件路径中使用“..”,我会收到以下错误:
meson.build:10:0:错误:子目录包含..