使用 fontconfig 支持构建适用于 Linux x86 的 Qt

And*_*ejJ 5 qt qt5

我正在将我的 Qt 应用程序移植到 x86 架构的 Linux,并且由于该平台的最后一个官方版本是 5.5,因此我正在尝试构建自己的 Qt 5.11.3。我想使用 fontconfig 来启用系统字体。我的构建平台是 Centos 7.5,我使用 GCC 工具链,它通过 -m32 开关构建 x86 二进制文件。问题是,我无法让它查看 fontconfig 库。我已经使用包 fontconfig-devel-2.13.0-4.3.el7.i686 安装了它

当使用选项 -fontconfig 运行配置时,我收到以下错误消息:

错误:功能“fontconfig”已启用,但前提条件“!config.win32 && features.system-freetype && libs.fontconfig”失败。

我对此的理解是,我必须使用 -system-freetype 并且不能使用 -qt-freetype,但是当我尝试(也使用 -feature-freetype)时,我收到以下消息:

错误:功能“system-freetype”已启用,但前提条件“features.freetype && libs.freetype”失败。

config.log 中的相关消息是:

looking for library freetype
Trying source 0 (type pkgConfig) of library freetype ...
pkg-config use disabled globally.
  => source produced no result.
Trying source 1 (type freetype) of library freetype ...
+ cd /home/myuser/qt-build/config.tests/freetype && /home/myuser/qt-build/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" -early "CONFIG += cross_compile" 'LIBS += -lfreetype' /home/myuser/qt-build/config.tests/freetype
+ cd /home/myuser/qt-build/config.tests/freetype && MAKEFLAGS= /usr/bin/gmake
> g++ -c -m32 -pipe -O2 -std=gnu++11 -w -fPIC  -I. -I/home/myuser/qt-everywhere-src-5.11.3/qtbase/mkspecs/linux-g++-32 -o main.o main.cpp
> main.cpp:2:22: fatal error: ft2build.h: No such file or directory
>  #include <ft2build.h>
>                       ^
> compilation terminated.
> gmake: *** [main.o] Error 1
 => source failed verification.
test config.qtbase_gui.libraries.freetype FAILED
Run Code Online (Sandbox Code Playgroud)

现在,我也收到了这样的消息:

警告:在没有 sysroot 的情况下进行交叉编译。禁用 pkg-config

据我了解,这是“源 0”故障的根源。然而,我尝试通过传递 FREETYPE_INCDIR=/usr/include/freetype2 来手动将配置指向 freetype include 目录;但是,从日志文件中可以看出,在检测 freetype 时似乎没有使用该值。

我在这里错过了一个技巧,还是配置脚本被破坏了?如果是后者,有没有办法解决这个问题?

编辑:为了完整性,运行配置的环境:

CFLAGS=-m32
CXXFLAGS=-m32 --std=c++1x
Run Code Online (Sandbox Code Playgroud)

配置标志:

-opensource
-xplatform linux-g++-32
-nomake tests -nomake examples -nomake tools
-prefix /home/myuser/qt_install/
-qpa xcb
-no-use-gold-linker
-icu ICU_PREFIX=/home/myuser/icu_install ICU_LIBS="-licui18n -licuuc -licudata"
-no-opengl
-fontconfig -feature-freetype -system-freetype FREETYPE_INCDIR=/usr/include/freetype2
Run Code Online (Sandbox Code Playgroud)

Eze*_*Est 2

尝试使用 Qt 源代码中包含的 Freetype 库:运行配置时使用标志“ -qt-freetype