强制QT使用系统protobuf版本

Force QT to use system protobuf version

在 Linux (Ubuntu 17.10) 下编译 paraview 和 Qt 时,我正在尝试解决著名的 protobuf 版本错误(见下文)。

This program requires version 3.0.0 of the Protocol Buffer runtime 
library, but the installed version is 2.3.0.  Please update your 
library.  If you compiled the program yourself, make sure that your 
headers are from the same version of Protocol Buffers as your link-time 
library.

为了开发一个兼容网页二进制文件的插件,我想用Qt-5.8编译paraview。因此,我使用 Qt 下载脚本下载了源代码。我确实成功编译了Qt,但是因为我得到了上面的错误,在编译和运行 paraview时,我假设Qt没有使用系统版本的protobuf,应该是3.0,而是内置版本。

据我所知,构建脚本评估是否使用系统 protobuf 版本(例如 qtwebengine/src/core/config/linux.pri:65)。

有没有办法检查使用哪个 protobuf 版本编译 Qt? 我能以某种方式强制执行吗?我假设如果安装了 libprotobuf-dev 包,它会被检测到,但我不知道如何检查它。

我知道这个网站上有类似的问题(例如 ),但其中的答案还没有解决我的问题。

这已记录在 ParaView issue tracker 中。

目前有两种解决方案:

  1. 构建你自己的 Qt
  2. 使用以下解决方法:
    • Extract/Install 某个地方的 Qt 二进制版本,请确保您的计算机上只有一个,以避免任何类型的冲突
    • 移除/opt/Qt/5.9/gcc_64/plugins/platformthemes/libqgtk3.so
    • 编辑注释掉/opt/Qt/5.9/gcc_64/lib/cmake/Qt5Gui/Qt5Gui_QGtk3ThemePlugin.cmake
    • 重启电脑
    • 开始paraview