CMake构建的Qt5QMediaPlayer程序仅在安装时失败



我有一个简单的Qt 5.4应用程序,它使用QMediaPlayer。我使用CMake构建它。运行"make"创建的可执行文件工作正常并播放歌曲。运行"make-install"创建和安装的可执行文件在Ubuntu 14.04 上出现以下错误

defaultServiceProvider::requestService():找不到-"org.qt project.qt.mediaplayer"的服务

我的代码:

#include <QMediaPlayer>
#include <QApplication>
int main(int argc, char** argv)
{
  QApplication app(argc, argv);
  QMediaPlayer myAudio;
  myAudio.setMedia(QUrl::fromLocalFile("/absolute/path/song.mp3"));
  myAudio.setVolume(50);
  myAudio.play();
  return app.exec();
}

我的CmakeLists.txt

cmake_minimum_required(VERSION 2.8.11)
project(QtTestingExe)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Multimedia REQUIRED)
add_executable(QtTesting QtTesting.cpp)
target_link_libraries(QtTesting Qt5::Widgets Qt5::Multimedia)
install(TARGETS QtTesting DESTINATION bin)

这很可能与CMake RPATH处理有关。引用Cmake文档:

"CMake将具有完整RPATH的可执行文件和共享库链接到生成树中所有使用的库。安装时,它将清除这些目标的RPATH,以便使用空RPATH安装它们"

这可以解释你观察到的行为。

如果确实是这种情况,那么将QT路径添加到LD_LIBRARY_path环境变量中可能就足够了。

或者,可以将CMAKE_INSTALL_RPATH设置为CMakeLists.txt.内的正确路径

CMakeLists.txt中有更多选项可以使用RPATH设置-请参阅上面的文档链接。

相关内容

  • 没有找到相关文章

最新更新