如何重新配置​​ Qt 以检测新安装的库?

How do I reconfigure Qt to detect a newly installed library?

问题 重新配置 Qt 究竟意味着什么?安装库后我该怎么做?

上下文: 当我学习在 Qt 中开发应用程序时,我一直 运行 遇到几个不同库的类似问题,所以我问了一个更一般的问题,因为我认为这里有一个我不理解的模式。但是,我提供一个具体的例子:

我想在我的应用程序中使用 USB 摄像头视图。我的 qml 文件中有 import QtMultimedia 5.0,并基于 Qt-Creator 示例创建了一个相机小部件。当我转到 运行 应用程序时,我在应用程序输出中看到以下错误:

[WARN | default] defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.camera" [:0] [WARN | default] defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" [:0] 并且相机视图不起作用(黑屏)。当我 google 这个错误时,我看到很多线程建议安装一个库然后 重新配置 Qt,例如 this bug report 中的建议。

我有两台不同的开发机器,一台安装了 Qt 和 Qt Creator 的二进制文件,另一台是我从源代码构建 Qt。

听起来好像您需要一个用于网络摄像头和媒体播放器的 Qt 插件。 Qt 应用程序找不到这些插件(请注意,它们是专门为与 Qt 和特定版本的 Qt 一起使用而编译的)。

在 QT C++ 中,我会使用函数 QCoreApplication::addLibraryPath(const QString&),记录在此处: http://doc.qt.io/qt-5/qcoreapplication.html#addLibraryPath

我不会将以上内容称为 "answer,",而更像是这些线索,可以帮助您搜索所需的答案。

重新配置 Qt 意味着重建 Qt,因为配置是构建 Qt 的第一步。

Qt 的设计让您可以(而且通常会!)在同一台机器上的不同安装文件夹中并行安装多个版本。它们都将由同一来源构建。例如。 (在 Unix 上),在你大概安装了 gstreamer 的开发包之后,你必须按如下方式构建:

cd ~
mkdir Qt
wget https://download.qt.io/official_releases/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.xz
tar -xf qt-everywhere-opensource-src-5.7.0.tar.xz

每个配置都建立在自己的一组 build/install 文件夹中:

mkdir 5.7.0-shared-build
mkdir 5.7.0-shared
cd 5.7.0-shared-build
../qt-everywhere-opensource-src-5.7.0/configure -prefix ../5.7.0-shared \
  -opensource -confirm-license -debug-and-release -gstreamer
gmake -j8 && gmake -j8 install && echo OK
cd ..

mkdir 5.7.0-static-build
mkdir 5.7.0-static
cd 5.7.0-static-build
../qt-everywhere-opensource-src-5.7.0/configure -prefix ../5.7.0-static \
  -opensource -confirm-license -debug-and-release -static -gstreamer
gmake -j8 && gmake -j8 install && echo OK
cd ..

gmake 的 -j 参数的值应设置为您机器上逻辑 CPU 内核的数量。