如何使用介子构建glib

时间:2020-06-27 17:04:05

标签: glib meson-build

我需要为特定项目升级glib。当前使用的是glib 2.28.8。我有三个问题。

  1. 我以前从未使用过mesonninja,所以我检查了glib的INSTALL.in,它说先运行meson _build,然后运行ninja -C _build。所以我运行了meson _build并得到了以下输出:
$ meson _build
The Meson build system
Version: 0.47.2
Source dir: /srv/devel/build/glib-2.65.0
Build dir: /srv/devel/build/glib-2.65.0/_build
Build type: native build
meson.build:227: WARNING: Identifier 'in' will become a reserved keyword in a future release. Please rename it.

meson.build:227:14: ERROR:  Expecting eol got id.
if vs_crt_opt in ['mdd', 'mtd']

因此基本版本无法正常工作。为什么?

  1. 出于我们的目的,我们使用以下配置命令:
PKG_CONFIG_PATH=$(OUTPUT_DIR)/lib/pkgconfig ./configure --prefix=$(OUTPUT_DIR) --disable-dtrace --disable-selinux ac_cv_path_MSGFMT=/bin/true CPPFLAGS="-fPIC -I$(OUTPUT_DIR)/include" LDFLAGS="-L$(OUTPUT_DIR)/lib" --enable-static --disable-shared

如何在介子中指定它?

  1. 我还需要在Windows中构建。那里有陷阱吗?

谢谢!

编辑:我尝试了glib的较早版本,回到2.62.0,运行meson _build时出现错误meson.build:1:0: ERROR: Meson version is 0.47.2 but project requires >= 0.49.2.。因此,这可能是问题(1)的很大一部分。它运行在CentOS 6和7上,因此我可能必须获取并安装当前的介子软件包。

1 个答案:

答案 0 :(得分:0)

因此基本版本无法正常工作。为什么?

您在修改中正确地发现了这一点:GLib 2.64 requires Meson 0.49.2,而且看来Meson 0.47.2太旧了,无法正确解析GLib的meson.build

从您的构建输出中可以看到您正在尝试构建GLib 2.65.0。请注意,2.65是不稳定发行版。即使是GLib的次要版本(2.62.x,2.64.x等)也很稳定。奇怪的是不稳定的。只要您知道要签署的内容,就可以使用不稳定版本:它可能包含错误,并且该不稳定系列中引入的新API可能会在第一个稳定版本(例如2.65)之前更改或删除。 x,对应的第一个稳定版本将是2.66.0)。

出于我们的目的,我们使用以下配置命令:

您将需要以下内容: 介子-前缀“ $(OUTPUT_DIR)” -Dselinux =禁用-Ddefault_library =静态_build

您可以从b_staticpic option’s default value中看到,-fPIC是静态库的默认设置,因此(我认为)不需要明确指定。

由于它是disabled by default,因此无需禁用dtrace支持。如果确实需要禁用它,则可以使用-Ddtrace=false来实现。

使用-L可以覆盖自定义-I--prefix参数。

不支持使用msgfmt工具禁用国际化功能来构建GLib,这是一种不受支持的方法,而您只能自己使用它。

关于介子herehere中的内置选项,有一些很好的文档。

我还需要在Windows中构建。那里有陷阱吗?

这个问题太广泛了,无法在StackOverflow上回答。