LINUX.ORG.RU

CMake не находит установленный в системе QtMultiMedia

 ,


1

2

Всем вечер добрый. Сталкнулся с такой странной штукой, у меня Ubuntu 14.04, установлен файл libqt5multidedia5, qtmultimedia5-dev, вроде как все что нужно. Но CMake его не видет, другие пакеты так ставил и все норм. Ошибку привожу ниже. Если кто знает, подскажите пожалуйста.

Error:By not providing «FindQt5MultiMedia.cmake» in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by «Qt5MultiMedia», but CMake did not find one. Could not find a package configuration file provided by «Qt5MultiMedia» with any of the following names: Qt5MultiMediaConfig.cmake qt5multimedia-config.cmake Add the installation prefix of «Qt5MultiMedia» to CMAKE_PREFIX_PATH or set «Qt5MultiMedia_DIR» to a directory containing one of the above files. If «Qt5MultiMedia» provides a separate development package or SDK, be sure it has been installed.

конфиг тоже привожу ниже, все указал правильно


cmake_minimum_required(VERSION 3.3)

set(PROJECTNAME interbook_project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

project(${PROJECTNAME})

find_package(Qt5Widgets REQUIRED)
find_package(Qt5MultiMedia REQUIRED)

set(SOURCE_FILES main.cpp)

target_link_libraries(${PROJECTNAME} Qt5::Widgets)
target_link_libraries(${PROJECTNAME} Qt5::MultiMedia)
[\CODE]


Качай offline-инсталлятор с официального сайта qt.io и ставь в /opt. Там и модули для CMake есть.

А пакеты в дистре некачественные просто, забудь про них.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

ЧТо значит не качественные? они как я понимаю обычные, что с ними не так та? А вот про установку в /opt я так не стал просто никогда. мне кажется с консоли поставить пакет проще

BlinCT ()
Ответ на: комментарий от asaw

А какая разница? Хотя он мне сейчас когда с маленькой написал выдал ошибку что не существует( Error:The imported target «Qt5::Multimedia» references the file «/usr/lib/x86_64-linux-gnu/libQt5Multimedia.so.5.2.1» but this file does not exist. Possible reasons include: * The file was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and contained «/usr/lib/x86_64-linux-gnu/cmake/Qt5Multimedia/Qt5MultimediaConfig.cmake» but not all the files it references.

BlinCT ()
Ответ на: комментарий от asaw

Самое интересное что пакет libqt5multimdia5 установлен, но либы такой нету и правда по адрессу. а есть libqt5multimediawidget5 Странно как то.

BlinCT ()
Ответ на: комментарий от EXL

Тем более если ставить отдельным исталятором то если пакеты обновятся то система эти пакеты не обновит. По этому мне кажется это не панацея.

BlinCT ()
Ответ на: комментарий от EXL

Сделал по вашему совету, поставил в /opt но как я вижу Cmake ищет сейчас все в /usr. Как нужно тогда указать ему чтоыб он именно там QT либы искал?

BlinCT ()
...
find_package(Qt5 5.4.0 REQUIRED COMPONENTS Multimedia)
message(STATUS ${Qt5Multimedia_LIBRARIES})
...

показывает Qt5::Multimedia. Вообще, нафига прописывать явное обозначение либы, если все это уже сделали за тебя?

arcanis ★★★★ ()
Ответ на: комментарий от arcanis

Версии в системе все разные. сейчас он все ищет в /usr но я тут по совету поставил весь набор либ и хедеров в /opt но туда он не ссылается.

BlinCT ()
Ответ на: комментарий от arcanis

По поводу версий, 5.1.1 это именно у пакета multimedia некоторые пакеты 5.2.1

BlinCT ()
Ответ на: комментарий от BlinCT

А то и значит, что с ними вечные проблемы, примерно такие же, как у тебя сейчас.

Тем более если ставить отдельным исталятором то если пакеты обновятся то система эти пакеты не обновит. По этому мне кажется это не панацея.

Online-инсталлятор обновит.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Хорошо. Но скажите как сделать чтобы он искал хедеры и либы, да и вообще все что ему надо в /opt а не в /usr. Сейчас прописал set(CMAKE_PREFIX_PATH «/opt/QT_5.5.0/5.5/gcc_64/lib/cmake/QtMultimedia»)

find_package(Qt5Multimedia REQUIRED)

но это не помогло.

BlinCT ()
Ответ на: комментарий от BlinCT

Тем более если ставить отдельным исталятором то если пакеты обновятся то система эти пакеты не обновит. По этому мне кажется это не панацея.

Ну так и вызывай cmake теперь так:

CMAKE_PREFIX_PATH=/opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/ cmake
EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Да, именно такой путь set(CMAKE_PREFIX_PATH «/opt/QT_5.5.0/5.5/gcc_64/lib/cmake») не помогает. Ниже скидываю ошибку что он выводит. CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Multimedia/Qt5MultimediaConfig.cmake:27 (message): The imported target «Qt5::Multimedia» references the file

«/usr/lib/x86_64-linux-gnu/libQt5Multimedia.so.5.2.1»

but this file does not exist. Possible reasons include:

* The file was deleted, renamed, or moved to another location.

* An install or uninstall procedure did not complete successfully.

* The installation package was faulty and contained

«/usr/lib/x86_64-linux-gnu/cmake/Qt5Multimedia/Qt5MultimediaConfig.cmake»

but not all the files it references.

Call Stack (most recent call first): /usr/lib/x86_64-linux-gnu/cmake/Qt5Multimedia/Qt5MultimediaConfig.cmake:44 (_qt5_Multimedia_check_file_exists) /usr/lib/x86_64-linux-gnu/cmake/Qt5Multimedia/Qt5MultimediaConfig.cmake:134 (_populate_Multimedia_target_properties) CMakeLists.txt:21 (find_package)

-- Configuring incomplete, errors occurred!

BlinCT ()
Ответ на: комментарий от BlinCT

Не знаю, что у тебя не так, лично у меня всё как по маслу:

Если я выставляю переменную CMAKE_PREFIX_PATH в начале CMakeLists.txt в /opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/, а затем вызываю:

cmake --debug-output --trace &> cmake.log

То в cmake.log отчётливо вижу обращения к путям /opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/...

Строка в CMakeLists.txt такая:

set(CMAKE_PREFIX_PATH /opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/)

Вы очищаете каталог сборки (rm -Rf *) перед последующим вызовом cmake?

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от EXL

нет. и не слышал чтобы требовалось. изменяю что то в конфиге и он сразу это принимает. только не в этой ситуации

BlinCT ()
Ответ на: комментарий от EXL

Похоже что помогло. Спасибо за подсказку что надо удалять каталог сборки. Даже не думал что он для новой сборки не опрашивает файл конфига и не обнавляет сам.

BlinCT ()
Ответ на: комментарий от BlinCT

И кстати, лучше всего удалить

set(CMAKE_PREFIX_PATH /opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/)

из CMakeLists.txt и задавать её при вызове cmake явно:

CMAKE_PREFIX_PATH=/opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/ cmake

А ещё лучше — открыть CMakeLists.txt (проект) через Qt Creator (идёт вместе с Qt), выбрать в диалоге (Unix Generator Qt 5.5 GCC Desktop), нажать Run Cmake и собирать проект с помощью IDE, имея в качестве бонуса приятную навигацию по коду. При этом никаких CMAKE_PREFIX_PATH устанавливать не требуется.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Я не пишу в QT Creator, я пользуюсь CLion. Он как то отзывчевее и приятнее в работе. А при вызове cmake задать строку как вы написали CMAKE_PREFIX_PATH=/opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/ cmake это где нужно вписать?

BlinCT ()
Ответ на: комментарий от BlinCT

это где нужно вписать?

В случае с CLion — вообще без понятия, эта IDE не слишком популярна на Linux, мало кто её использует. В случае с Qt Creator нигде не нужно ничего прописывать, всё будет работать автоматом на вашем оригинальном CMakeList.txt.

Я говорил про работу с терминалом, так как думал, что вы из него с проектом работаете. Там можно выполнить CMAKE_PREFIX_PATH=/opt/QtSDKs/Qt5.4.1/5.4/gcc_64/lib/cmake/ cmake и всё сконфигурируется без всяких правок CMakeList.txt.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Ну я бы не сказал) как раз CLion больше популярен на лиунксе) и исходя из того что она еще и кросплатформенная да и если вы работаете с вебом или питоном то подцепить плагин и все. что в случаи с QT Creator или другими IDE на лиунксе такого не скажешь) Задать строку в консоли сейчас попробую

BlinCT ()
Ответ на: комментарий от BlinCT

Ну я бы не сказал) как раз CLion больше популярен на лиунксе)

Нет, у вас ошибочная информация. CLion использует дополнительную зависимость в виде JRE/JDK со всеми вытекающими: там где Qt Creator, Geany, Code::Blocks или Gnome Builder тратят всего 100-200 МБ RAM, CLion и прочие поделки на основе IDEA выжирают по несколько ГБ и загружают ядра до 100%. В мире GNU/Linux чем быстрее работает программа и чем меньше она жрёт ресурсов, тем больше у неё пользователей. В связи с этим огромную долю как инструменты для разработки до сих пор занимают продвинутые текстовые редакторы VIM и Emacs.

А всякие CLion, IDEA, WebStorm, NetBeans и пр. используется лишь изредка.

К тому же CLion это не только проприетарный, но ещё и ПЛАТНЫЙ продукт, в отличие от вышеперечисленных IDE с открытыми исходниками.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

С одной стороны вы правы, она юзает жабу а это не очень прикольно, согласен. Но сейчас обьем занимаемой памяти типа 500 метров или гиг уже не так срашно. Тем более как не крути они делают хороший софт, юзабельный и удобный. И если софт хороший то за него можно заплатить, тем более они сделали доступные цены и лицензии. Например дял студентов и университетов бесплатно, а это хорошо.

BlinCT ()
Ответ на: комментарий от panter_dsd

А вы не могли бы подсказать где именно там? Я еще не все настройки знаю.

BlinCT ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.