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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.