QtCreator, unit testy, debugger i podział na projekty

0

Witam,
Używam QtCreatora 4.4.0 pod Win 8.1, zestaw do kompilacji MSVC 2015 x64 oraz debugger CDB x64.

Napisałem sobie bibliotekę other_lib i chce utworzyć do niej unit testy. Silnik budowania to qmake.
Biblioteka udostępnia na zewnątrz jedną klasę. Jednak ja chcę też przetestować te klasy, których biblioteka nie udostępnia.
Dodaję oddzielny projekt do testów other_lib_tests i w pliku *.pro umieszczam:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../other_lib/bin/ -lother_lib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../other_lib/bin/ -lother_libd

INCLUDEPATH += $$PWD/../other_lib/src
DEPENDPATH += $$PWD/../other_lib/src

SOURCES += $$PWD/../other_lib/src/private/*.cpp
HEADERS += $$PWD/../other_lib/src/private/*.h

W other_lib/src/private/ znajdują się klasy których biblioteka nie udostępnia na zewnątrz. Dlatego w pliku .pro są dołączone te dwie ostatnie linijki.
Jednak powodują one problem przy debugowaniu w QtCreatorze.
Breakopoint ustawiony w pliku other_lib/src/private/*.cpp nie zatrzymuje wykonania programu gdy odpalam test klasy udostępnionej przez other_lib, a klasa ta wywołuje funkcję z klasy "prywatnej" w której ustawiłem breakpointa.

Problem z debuggerem nie występuje jeśli w pliku .pro usunę linijkę

SOURCES += $$PWD/../other_lib/src/private/*.cpp

Niestety gdy ją usunę to nie mogę przetestować samej klasy "prywatnej" z other_lib/src/private/*.cpp, bo dostaję komunikat błędu linkera:

... error: LNK2019: unresolved external symbol ...

Czy da się to ładnie rozwiązać? Może zamiast oddzielnego projektu do testów dla other_lib zrobić unit testy w projekcie other_lib na konfiguracji?

1

wild card nie działa w pliku pro.
Najlepiej stwórz plik *.pri w którym wyłącznie będą wymienione źródła i dołączaj go do odpowiednich plików *.pro (biblioteki i testów).

include($$PWD/soruces.pri)

Inna metoda, to biblioteka testowa przy budowaniu dla testów eksportuje prywatne symbole.

0
MarekR22 napisał(a):

wild card nie działa w pliku pro.

No właśnie działa. Przynajmniej u mnie w qmake 3.1.

QMake version 3.1
Using Qt version 5.9.1 in D:/Qt/5.9.1/msvc2015_64/lib

Najlepiej stwórz plik *.pri w którym wyłącznie będą wymienione źródła i dołączaj go do odpowiednich plików *.pro (biblioteki i testów).

To chyba najlepszy sposób z dołączeniem .pri.

1 użytkowników online, w tym zalogowanych: 0, gości: 1