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?