首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake构建的Qt5 QMediaPlayer程序只有在安装时才会失败

CMake构建的Qt5 QMediaPlayer程序只有在安装时才会失败
EN

Stack Overflow用户
提问于 2015-03-28 20:29:09
回答 1查看 1.4K关注 0票数 0

我有一个使用QMediaPlayer的简单QT5.4应用程序。我使用CMake构建它。运行"make“创建的可执行文件工作正常,并播放歌曲。通过运行"make“创建和安装的可执行文件在Ubuntu14.04上会出现以下错误

defaultServiceProvider::requestService():没有为- "org.qt-project.qt.mediaplayer“找到服务

我的代码:

代码语言:javascript
复制
#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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-31 17:01:07

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

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

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

如果确实如此,将QT路径添加到LD_LIBRARY_PATH环境变量可能就足够了。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29322247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档