Причина, по которой вы решили «добавить 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 в среду сборки, но я считаю, что это не правильный способ сделать это.

Ответы на вопрос(1)

Ваш ответ на вопрос