QBS … / install-root / MyProject: ошибка при загрузке общих библиотек: foobar.so: не удается открыть общий объектный файл: такого файла или каталога нет

Вопрос для решения этой проблемы в QBS:

Вот файл, сгенерированный QtCreator. Я добавил в

cpp.dynamicLibraries:[
"/usr/lib/qconsoledesigner/libqconsoletoolkit.so"]

в

CppApplication {
Depends { name: "Qt.core" }
Depends { name: "Qt.network" }

cpp.cxxLanguageVersion: "c++11"
cpp.defines: [
"QT_DEPRECATED_WARNINGS",
]
cpp.dynamicLibraries:[
"/usr/lib/qconsoledesigner/libqconsoletoolkit.so"]

consoleApplication: true
files: "main.cpp"
Group {     // Properties for the produced executable
fileTagsFilter: "application"qbs.install: true
}
}

Вот основной ();

#include <QCoreApplication>
#include "qconsoledesigner/qconsoletoolkit.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QConsoleToolkit ct;

return a.exec();
}

Все хорошо строит. Запуск выдает эту ошибку:

/home/.../qtc_Desktop_Qt_5_10_1_GCC_64bit_qt_qt5_Debug/install-root/MyProject:
error while loading shared libraries:
libqconsoletoolkit.so:
cannot open shared object file:
No such file or directory

Прежде чем я физически скопирую этот .so в мой установочный корень, я знаю, что должно быть свойство QBS, которое я могу установить.

Я попытался поиграть с различными путями, связанными со свойствами в https://doc.qt.io/qbs/qml-qbsmodules-cpp.html, но я очень нащупываю в темноте.

Благодарю.

0

Решение

Вы можете использовать rpath: https://doc.qt.io/qbs/qml-qbsmodules-cpp.html#rpaths-prop

Для «локального» использования или если вы ожидаете, что библиотека будет присутствовать везде, где установлено ваше приложение, просто используйте каталог, в котором находится библиотека во время сборки:

cpp.rpaths: "/usr/lib/qconsoledesigner"

В противном случае вам нужно будет установить библиотеку вместе с вашим приложением и использовать относительный rpath. На данный момент qbs не имеет удобной функциональности для первого, поэтому вы должны написать что-то вроде этого:

property stringList sharedLibsToDeploy: "/usr/lib/qconsoledesigner/libqconsoletoolkit.so"cpp.dynamicLibraries: sharedLibsToDeploy
Group {
files: sharedLibsToDeploy
qbs.install: true
cpp.rpaths: cpp.rpathOrigin // if lib and app are installed into the same dir; adapt otherwise
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]