Причина, по которой вы решили «добавить LD_LIBRARY_PATH в среду сборки», наиболее вероятна потому, что вы используете настройку среды выполнения по умолчанию, которая заключается в использовании среды сборки. Это вторичный эффект, который решает вашу проблему, основной способ сделать что-то.
ледние дни я пытался понять, как работает qmake, я застрял. Я хочу проект со следующей структурой:
корень
бункерtestjsonLiblibjson.soЦСИtestjson.cppВсе, что я хотел, это проверить библиотеку JSON. Я создал новый пустой проект в Qt Creator 2.3.0 и установил все параметры, чтобы исполняемый файл работал. Протестировал что хотел и закрыл приложение.
Позже, когда я снова открыл Qt Creator, я загрузил .pro-файл и удивился, когда я пытаюсь запустить проект, я получаю это сообщение: «Не указан исполняемый файл». : | В этом случае я перешел на вкладку проекта и вручную выбрал исполняемый файл, но, как и ожидалось, при попытке запустить его я получил сообщение об ошибке «При загрузке общих библиотек: libjson.so: не могу открыть файл общего объекта: Нет такого» файл или каталог ". Это ожидалось, так как LD_LIBRARY_PATH не установлен (как будто я запустил его из cli).
Похоже, что .pro файл не анализируется должным образом, потому что в первый раз на вкладке проекта, когда я выбирал вкладку «Выполнить», я видел сообщение: «Parsing .pro file», и затем выполняющаяся конфигурация была заполнена и серым цветом, так что это означает, что LD_LIBRARY_PATH был добавлен Qt Creator после анализа файла .pro.
Теперь мой вопрос: почему файл .pro был проанализирован правильно с первого раза?
Вот файл .pro:
!include(../../common.pri){
error(Couldn't find the common.pri file!)
}
TEMPLATE = app
SOURCES += testjson.cpp
CONFIG += console
TARGET = testjson
CONFIG(release, debug|release) {
DESTDIR = $BinaryDir/Release
} else {
DESTDIR = $BinaryDir/Debug
}
LIBS += -L$LibraryDir -ljson
INCLUDEPATH += $DefaultInclude
DEPENDPATH += $LibraryDir
PS: Решение состоит в том, чтобы вручную добавить LD_LIBRARY_PATH в среду сборки, но я считаю, что это не правильный способ сделать это.