pango 中 harfbuzz 的介子构建抱怨未启用 c++11,但它在 meson.build 中为 harfbuzz

问题描述

编辑 这个问题可能不再与我相关,因为我已经意识到我根本不需要构建 pango(见下面的评论)。但是,我将其搁置一旁,因为这是一次真正的构建失败,并且可能与其他人有关。

我在尝试构建最新版本的 librsvg 时陷入了困境。我的本地 Fedora 33 系统具有 librsvg2-2.50.3-1 并生成良好的图像,但生产服务器 Centos 7.9 具有 2.40.20-1 并且没有正确使用位图模式填充弯曲路径。无论如何,我正在尝试在 Centos 7.9 生产服务器上构建这些软件包的较新版本,首先在本地 VM 上使用新安装的 Centos 7.9 来获得基本工作。环境:

  • gcc 4.8.5-44
  • 介子 0.57.1​​
  • 忍者 1.10.0
  • 安装了 yum 组“开发工具”并设置了用于货物和锈蚀的 EPEL 存储库。

我已经到了需要更新版本的 pango 的地步,所以从 https://download.gnome.org/sources/pango/1.48/ 获取 pango-1.48.2 src 并尝试构建它。我以前没有使用过 meson 或 ninja,但我有 10 年前生锈的旧 Unix 构建技能,我正试图将其应用于这些新工具。

似乎 pango 会自动检测缺少的库,或者安装的版本不够高,并会下载并构建它们。其中之一是 harfbuzz,这是失败的:

# /usr/local/bin/meson setup builddir
# /usr/local/bin/meson configure builddir/ -Dprefix=/usr/local
# ninja -C builddir/
../subprojects/harfbuzz/src/hb.hh:450:1: warning: identifier 'static_assert' is a keyword in C++11 [-Wc++0x-compat]

后来:

./subprojects/harfbuss/src/hb.hh:450:15: error: expected constructor,destructor,or type conversion before '(' token
 static_assert ((sizeof (int8_t) == 1),"");

看起来我需要指定 c++11 作为语言,但是在 subprojects/harfbuzz/meson.build 中它看起来像是启用了:

  default_options: [
  ... skip ...
  'cpp_std=c++11'

(见https://github.com/harfbuzz/harfbuzz/blob/master/meson.build

我在 gists 中放置了一些更完整的输出(对于 stackoverflow 来说太长了,它拒绝了我的帖子),首先来自 meson setup,它检测到我的 harfbuzz 库版本不够,所以它下载(我认为从 subprojects/harfbuzz.wrap) 的外观来看是 github master:

https://gist.github.com/neekfenwick/836682eaff7f9e3dbbe62664a8e44ef6

构建步骤的输出......c++11的东西很早就开始了,例如warning: identifier ‘static_assert’ is a keyword in C++11

https://gist.github.com/neekfenwick/4581c5f83d4319bf1f011da0012a7dfd

我想我可以 cd subprojects/harfbuzz 并重试构建命令来测试构建整个 pango 构建的一部分,但是没有 Makefile 或配置脚本,就好像没有运行 autogen.sh 一样。但是,如果我在那里充电并尽我所知运行构建,它会起作用:

$ cd subprojects/harfbuzz
$ ./autogen.sh
$ ./configure --prefix=/usr/local
$ make

成功。关于 ninja 如何使用 pango 配置构建它的一些东西被破坏了。

harfbuzz 的配置命令确实输出了以下有趣的行:

checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=gnu++11... yes

然而,简单地运行 make 就成功了,所以 harfbuzz 似乎在本地构建中打开了所需的 c++11 标志,为什么从封闭的 pango 构建过程构建时会失败?

接下来我应该去哪里探索以推进这项工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...