Разработка применений QT в системах UNIX с использованием CT Creator
-
08-10-2019 - |
Вопрос
Я разрабатываю приложение QT в Linux с помощью QT Creator (2.1 RC). Я создал 2 проекта и использовал мастер для добавления проекта библиотеки в проект приложений. Однако, когда я бегу, я получаю ошибку:
/home/jakepetroules/silverlock/silverlock-build-desktop/desktop/silverlock: error while loading shared libraries: libsilverlocklib.so.1: cannot open shared object file: No such file or directory
Есть ли какая-то переменная QMake, которую я могу установить, так что Qt Creator будет правильно настроить среду? Это довольно раздражает, чтобы придеться скопировать все файлы в другой каталог с помощью сценария Launcher, просто чтобы проверить сборку. В Windows она работает отлично - Qt Creator автоматически добавляет каталоги, содержащие DLL на путь, когда он запускает ваше приложение (где пробегается от проводника, скажем, DLL не найден). Mac OS X еще хуже, чтобы запустить install_name_tool на все ...
Итак, как я могу настроить мои файлы Qmake, чтобы все работает прямо с кнопки запуска в Qt Creator? Вроде трудно отлаживать без этой способности тоже.
Решение
Да, создатель имеет раздел, где вы можете установить любую среду, необходимую для запуска вашего приложения.
На Creator 2.0.0 Это доступ к: проекты -> цели -> (ваша цель) -> Run -> Run Environment (после открытия вашего проекта)
Затем вы можете добавить или удалить любые переменные среды, которые вы хотели бы, в том числе LD_LIBRARY_PATH
Одна вещь, я не уверен в том, что можно заменить, например, путь сборки в значение этих переменных, так что вам не нужно жесткокодировать LD_LIBRARY_PATH
.
Другой вариант будет добавлять небольшой скрипт оболочки на ваше исходное дерево, которое устанавливает любые переменные, и добавьте настройку «Пользовательскую исполняемую проверку», чтобы запустить этот скрипт. Это доступ к тому же экрану.
Другие советы
У меня была похожая проблема с приложениями QT с QtCreator на My Linux Machine. Я решил его, добавив следующие строки к файлу .pro файла клиентского приложения:
unix:LIBS += -L/home/projects/my_libs/ -lmy_lib
unix:{
QMAKE_LFLAGS += -Wl,--rpath=/home/projects/my_libs/
QMAKE_LFLAGS_RPATH=
}
Информация о рапущении здесь: рапать
Надеюсь, это поможет, по отношению
Просто используя это:
unix:LIBS += -L/home/projects/my_libs/ -lmy_lib
unix:{
QMAKE_LFLAGS += -Wl,--rpath=/home/projects/my_libs/
}
Это тоже ладит мою проблему.