Witam! Utworzyłem projekt w Qt Creator, w którym są dwa podprojekty. Jeden to zwykły projekt do tworzenia aplikacji okienkowych a w drugim znajdują się testy. Problem polega na tym, że nie wiem jak to skonfigurować, aby projekt z testami kompilował aplikację konsolową, która wyświetla wynik testów, wykonanych na rzeczach z drugiego podprojektu. Jestem teraz w takiej sytuacji, że projekt z aplikacją okienkową kompiluje się dobrze, a projekt z testami pokazuje błąd, że nie może otworzyć pliku "ui_mainwindow.h" z drugiego projektu.
Oto struktura projektu:
zawartość pliku DoUsuniecia123.pro:
TEMPLATE = subdirs SUBDIRS += \ MCapp \ TestyDoUsuniecia
plik MCapp.pro:
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 DEFINES += QT_DEPRECATED_WARNINGS SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
plik TestyDoUsuniecia.pro:
QT += testlib QT += gui QT += core gui QT += widgets greaterThan(QT_MAJOR_VERSION, X): QT += widgets CONFIG += qt warn_on depend_includepath testcase TEMPLATE = app INCLUDEPATH += \ ../MCapp SOURCES += \ tst_testdodelete.cpp \ ../MCapp/mainwindow.cpp \ HEADERS += \ ../MCapp/mainwindow.h
plik z którym są testy:
#include <QtTest> #include <QCoreApplication> #include "mainwindow.h" class TestDoDelete : public QObject { Q_OBJECT public: TestDoDelete(); ~TestDoDelete(); private slots: void test_case1(); }; TestDoDelete::TestDoDelete() { } TestDoDelete::~TestDoDelete() { } void TestDoDelete::test_case1() { MainWindow window; int result = window.Add(2, 2); QVERIFY(result == 4); } QTEST_MAIN(TestDoDelete) #include "tst_testdodelete.moc"
mainwindow.h:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); int Add(int a, int b); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
plik w którym pokazuje błąd (mainwindow.cpp):
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } int MainWindow::Add(int a, int b) { return a + b; }
Z góry dziękuje za pomoc!