Вопрос для решения этой проблемы в 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, но я очень нащупываю в темноте.
Благодарю.
Вы можете использовать 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
}
Других решений пока нет …