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!