簡體   English   中英

CMake內置的Qt5 QMediaPlayer程序僅在安裝時失敗

[英]CMake built Qt5 QMediaPlayer program fails only when installed

我有一個使用QMediaPlayer的簡單Qt 5.4應用程序。 我使用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 docs

“ CMake會將具有完整RPATH的可執行文件和共享庫鏈接到構建樹中所有使用的庫。安裝時,它將清除這些目標的RPATH,以便使用空的RPATH安裝它們。”

這可以解釋您正在觀察的行為。

如果確實如此,將QT路徑添加到LD_LIBRARY_PATH環境變量可能就足夠了。

或者,可以將CMAKE_INSTALL_RPATH設置為CMakeLists.txt中的正確路徑。

在CMakeLists.txt中,還有更多選項可用於RPATH設置-請參閱上面的文檔鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM