У меня есть дерево проекта / исходного кода с проектами подкаталогов, которые выглядят следующим образом:
Идея в том, что Exec (тестирование) проект заключается в совершении звонков с оп (разделяемый объект) библиотечный проект — оба являются подпроектами, управляемыми корневым проектом gviewer.
Несмотря на то, что gviewer Проект установлен как Debug (с использованием GCC x86_64), каждый раз, когда я пытаюсь войти в конструктор или метод / функцию класса из оп сборка, отладчик сразу выплюнет разборку. Мне было трудно выяснить, является ли проблема в настройках проекта (из которых я смотрел и не мог понять, который параметр может быть изменен для решения проблемы) проблема в настройках отладчика (также рассматриваемая) или что-то, что происходит с файлами проекта.
common.pri
файл включен в op.pro.
После просмотра Вот, и экспериментируя с различными представлениями, пытаясь загрузить символы во время отладки, я пришел к выводу, что я делаю что-то не так. Является ли это проблемой конфигурации отладки GDB, .pro
проблема с файлом или проблема с QtCreator.
Если у кого-либо здесь есть опыт загрузки символов отладки с использованием внутренних библиотек проекта (в данном случае — общих объектов), любая предоставленная информация будет принята с благодарностью. Благодарю.
Файлы проекта:
gviewer.pro
TEMPLATE = subdirs
SUBDIRS = \
source/op
CONFIG += ordered
SUBDIRS += source/exec
common.pri
INCLUDEPATH += . ..
TEMPLATE = lib
CONFIG -= qt app_bundle
NO_ERR_FLAGS = -Wno-write-strings -Wno-return-type -Wno-unused-parameter
debug:QMAKE_CXXFLAGS_DEBUG += -Wall -Werror -std=c++11 $$NO_ERR_FLAGS -g
DEFINES += OP_DEBUG OP_PLATFORM_X86
LIBS += -lGL -lGLU -lGLEW -lglfw
op.pro
! include(../common.pri) {
error( Couldn't find the common.pri file! )
}
HEADERS += \
debug/glout.hpp \
math/matrix.hpp \
math/math.hpp \
math/glm_incl.hpp \
io/log.hpp
SOURCES += \
debug/glout.cpp \
math/matrix.cpp \
io/log.cpp
exec.pro
INCLUDEPATH += ../
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle qt
SOURCES += main.cpp
LIBS += -L../op -lop
DESTDIR_TARGET = ../../
Некоторые дополнительные изображения:
Exec: точка входа — main.cpp
оп: disassembly — источник не загружен после вызова step into
на op::Log::OpenFile(...)
исходные пути отладчика — возиться с дорожками здесь, нет такой удачи; хотя я не уверен, правильно ли я использовал это
В вашем .pro файле у вас есть это:
LIBS += -L../op -lop
Если я вас хорошо понял, то здесь вы связываете библиотеку, с которой у вас проблемы. Однако вы должны связать две его версии: отладочную версию для отладочной сборки вашего проекта и выпускную версию для выпускной версии вашего проекта. Я не знаю, под какой ОС вы работаете, но вот вам пример, чтобы вы могли понять:
unix:CONFIG(release): LIBS += -L$$PWD/../../Filters/release/ -lFilters
unix:CONFIG(debug): LIBS += -L$$PWD/../../Filters/debug/ -lFilters
Обратите внимание, что первая строка связывает библиотеку выпусков, если текущий проект создается как выпуск, а вторая строка связывает версию библиотеки отладки, если текущий проект создается как отладка.
В качестве дополнения к принятому ответу стоит отметить, что если в конфигурации пользователя используется Тень Строительство, мы можем перефразировать конфигурацию как:
unix:CONFIG(release): LIBS += -L$$PWD/../../path/to/release/folder/ -lLibrary
unix:CONFIG(debug): LIBS += -L$$PWD/../../path/to/debug/folder/ -lLibrary
куда /path/to/release|debug/folder
находится на том же уровне, что и каталог исходных файлов проекта, и -lLibrary
бинарная библиотека, которая должна быть связана, которая находится в указанном -L...
дорожка.