Switch to cmake

This commit is contained in:
Carl Philipp Klemm 2026-03-27 11:29:20 +01:00
parent 913d7df56d
commit c1f6b6e90f
23 changed files with 155 additions and 189 deletions

124
CMakeLists.txt Normal file
View file

@ -0,0 +1,124 @@
cmake_minimum_required(VERSION 4.0)
project(SHinterface VERSION 1.0 LANGUAGES CXX)
# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Enable all warnings
add_compile_options(-Wall)
# Find Qt packages
find_package(Qt6 COMPONENTS Core Gui Widgets Network Multimedia SerialPort REQUIRED)
# Find dependencies using pkg-config
find_package(PkgConfig REQUIRED)
pkg_check_modules(PIPEWIRE REQUIRED libpipewire-0.3)
pkg_check_modules(LIBNL3 REQUIRED libnl-3.0 libnl-genl-3.0)
# Enable automatic moc and uic processing
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
# Add src to include path for relative includes
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
# Create executable
add_executable(SHinterface)
# Add sources to executable
target_sources(SHinterface
PRIVATE
src/main.cpp
src/mainobject.cpp
src/apgetconnected.cpp
src/microcontroller.cpp
src/sun.cpp
src/programmode.cpp
src/tcpserver.cpp
src/pipewire.cpp
src/actors/actor.cpp
src/actors/factoractor.cpp
src/actors/polynomalactor.cpp
src/actors/sensoractor.cpp
src/actors/alarmtime.cpp
src/actors/regulator.cpp
src/actors/timeractor.cpp
src/sensors/sensor.cpp
src/sensors/sunsensor.cpp
src/items/item.cpp
src/items/relay.cpp
src/items/poweritem.cpp
src/items/messageitem.cpp
src/items/systemitem.cpp
src/items/auxitem.cpp
src/items/rgbitem.cpp
src/items/itemsource.cpp
src/items/itemloadersource.cpp
src/items/fixeditemsource.cpp
src/items/itemstore.cpp
src/ui/mainwindow.cpp
src/ui/itemwidget.cpp
src/ui/itemscrollbox.cpp
src/ui/sensorlistwidget.cpp
src/ui/itemcreationdialog.cpp
src/ui/itemsettingsdialog.cpp
src/ui/actorsettingsdialog.cpp
src/ui/actorwidgets/factoractorwidget.cpp
src/ui/actorwidgets/polynomalactorwidget.cpp
src/ui/actorwidgets/sensoractorwidget.cpp
src/ui/actorwidgets/timeractorwidget.cpp
src/ui/actorwidgets/alarmwidget.cpp
src/ui/actorwidgets/regulatorwdiget.cpp
src/ui/itemsettingswidgets/messageitemsettingswidget.cpp
src/ui/itemsettingswidgets/relayitemsettingswidget.cpp
src/ui/itemsettingswidgets/systemitemsettingswidget.cpp
)
# Add UI files
target_sources(SHinterface
PRIVATE
src/ui/mainwindow.ui
src/ui/itemwidget.ui
src/ui/relayscrollbox.ui
src/ui/itemcreationdialog.ui
src/ui/itemsettingsdialog.ui
src/ui/actorsettingsdialog.ui
src/ui/actorwidgets/factoractorwidget.ui
src/ui/actorwidgets/polynomalactorwidget.ui
src/ui/actorwidgets/sensoractorwidget.ui
src/ui/actorwidgets/timeractorwidget.ui
src/ui/actorwidgets/alarmwidget.ui
src/ui/actorwidgets/regulatorwdiget.ui
src/ui/itemsettingswidgets/messageitemsettingswidget.ui
src/ui/itemsettingswidgets/relayitemsettingswidget.ui
src/ui/itemsettingswidgets/systemitemsettingswidget.ui
)
# Add resource file
target_sources(SHinterface
PRIVATE
resources.qrc
)
# Link libraries
target_link_libraries(SHinterface
Qt6::Core
Qt6::Gui
Qt6::Widgets
Qt6::Network
Qt6::Multimedia
Qt6::SerialPort
${PIPEWIRE_LIBRARIES}
${LIBNL3_LIBRARIES}
)
# Add include paths
include_directories(${PIPEWIRE_INCLUDE_DIRS} ${LIBNL3_INCLUDE_DIRS})

View file

@ -1,158 +0,0 @@
#-------------------------------------------------
#
# Project created by QtCreator 2017-06-01T22:31:38
#
#-------------------------------------------------
QT += core gui widgets network multimedia
QT += serialport
TARGET = SHinterface
TEMPLATE = app
INCLUDEPATH += /usr/include/libnl3/
LIBS += -lnl-3 -lnl-genl-3
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
QMAKE_CXXFLAGS += -std=c++17 -O2
SOURCES += \
src/actors/factoractor.cpp \
src/actors/polynomalactor.cpp \
src/items/fixeditemsource.cpp \
src/tcpserver.cpp \
src/items/messageitem.cpp \
src/items/systemitem.cpp \
src/ui/actorwidgets/factoractorwidget.cpp \
src/ui/itemcreationdialog.cpp \
src/ui/itemsettingswidgets/messageitemsettingswidget.cpp \
src/mainobject.cpp \
src/apgetconnected.cpp \
src/ui/actorwidgets/polynomalactorwidget.cpp \
src/ui/actorwidgets/sensoractorwidget.cpp \
src/ui/actorwidgets/alarmwidget.cpp \
src/ui/actorwidgets/timeractorwidget.cpp \
src/ui/itemsettingswidgets/relayitemsettingswidget.cpp \
src/ui/itemsettingswidgets/systemitemsettingswidget.cpp \
src/ui/itemwidget.cpp \
src/ui/itemsettingsdialog.cpp \
src/ui/itemscrollbox.cpp \
src/items/poweritem.cpp \
src/ui/actorwidgets/regulatorwdiget.cpp
SOURCES += \
src/ui/actorsettingsdialog.cpp \
src/ui/mainwindow.cpp \
src/ui/sensorlistwidget.cpp
SOURCES += \
src/actors/actor.cpp \
src/actors/sensoractor.cpp \
src/actors/alarmtime.cpp \
src/actors/regulator.cpp \
src/actors/timeractor.cpp
SOURCES += \
src/sensors/sensor.cpp \
src/sensors/sunsensor.cpp \
SOURCES += \
src/items/relay.cpp \
src/items/item.cpp \
src/items/itemstore.cpp \
src/items/auxitem.cpp \
src/items/rgbitem.cpp \
src/items/itemsource.cpp\
src/items/itemloadersource.cpp
SOURCES += \
src/main.cpp \
src/microcontroller.cpp \
src/sun.cpp \
src/programmode.cpp
HEADERS += \
src/actors/factoractor.h \
src/actors/polynomalactor.h \
src/items/fixeditemsource.h \
src/items/itemsource.h \
src/programmode.h \
src/tcpserver.h \
src/items/messageitem.h \
src/items/systemitem.h \
src/ui/actorwidgets/factoractorwidget.h \
src/ui/itemcreationdialog.h \
src/ui/itemsettingswidgets/messageitemsettingswidget.h \
src/mainobject.h \
src/apgetconnected.h \
src/ui/actorwidgets/alarmwidget.h \
src/ui/actorwidgets/polynomalactorwidget.h \
src/ui/actorwidgets/sensoractorwidget.h \
src/ui/actorwidgets/timeractorwidget.h \
src/ui/itemsettingswidgets/relayitemsettingswidget.h \
src/ui/itemsettingswidgets/systemitemsettingswidget.h \
src/ui/itemwidget.h \
src/ui/itemsettingsdialog.h \
src/ui/itemscrollbox.h \
src/items/poweritem.h \
src/ui/actorwidgets/regulatorwdiget.h
HEADERS += \
src/ui/actorsettingsdialog.h \
src/ui/mainwindow.h \
src/ui/sensorlistwidget.h
HEADERS += \
src/actors/actor.h \
src/actors/alarmtime.h \
src/actors/sensoractor.h \
src/actors/regulator.h \
src/actors/timeractor.h
HEADERS += \
src/sensors/sensor.h \
src/sensors/sunsensor.h \
HEADERS += \
src/items/relay.h \
src/items/item.h \
src/items/itemstore.h \
src/items/auxitem.h \
src/items/rgbitem.h \
src/items/itemsource.h \
src/items/itemloadersource.h
HEADERS += \
src/microcontroller.h \
src/sun.h \
src/programmode.h
FORMS += \
src/ui/actorwidgets/factoractorwidget.ui \
src/ui/itemcreationdialog.ui \
src/ui/itemsettingswidgets/messageitemsettingswidget.ui \
src/ui/actorsettingsdialog.ui \
src/ui/actorwidgets/polynomalactorwidget.ui \
src/ui/itemsettingswidgets/relayitemsettingswidget.ui \
src/ui/itemsettingswidgets/systemitemsettingswidget.ui \
src/ui/mainwindow.ui \
src/ui/relayscrollbox.ui \
src/ui/actorwidgets/sensoractorwidget.ui \
src/ui/actorwidgets/alarmwidget.ui \
src/ui/actorwidgets/timeractorwidget.ui \
src/ui/itemsettingsdialog.ui \
src/ui/itemwidget.ui \
src/ui/actorwidgets/regulatorwdiget.ui
android:FORMS += src/ui/mainwindow-android.ui
RESOURCES += \
resources.qrc

View file

@ -5,7 +5,7 @@
#include <QString> #include <QString>
#include <QJsonObject> #include <QJsonObject>
#include "src/items/item.h" #include "items/item.h"
class Actor : public Item class Actor : public Item
{ {

View file

@ -1,7 +1,7 @@
#ifndef POLYNOMALACTOR_H #ifndef POLYNOMALACTOR_H
#define POLYNOMALACTOR_H #define POLYNOMALACTOR_H
#include "actor.h" #include "actor.h"
#include "src/sensors/sensor.h" #include "sensors/sensor.h"
class PolynomalActor: public Actor class PolynomalActor: public Actor
{ {

View file

@ -3,7 +3,7 @@
#include <QTimer> #include <QTimer>
#include "actor.h" #include "actor.h"
#include "src/sensors/sensor.h" #include "sensors/sensor.h"
class Regulator : public Actor class Regulator : public Actor
{ {

View file

@ -1,6 +1,6 @@
#pragma once #pragma once
#include "actor.h" #include "actor.h"
#include "src/sensors/sensor.h" #include "sensors/sensor.h"
class SensorActor : public Actor class SensorActor : public Actor
{ {

View file

@ -1,7 +1,7 @@
#pragma once #pragma once
#include "item.h" #include "item.h"
#include "src/microcontroller.h" #include "microcontroller.h"
class AuxItem: public Item class AuxItem: public Item
{ {

View file

@ -5,7 +5,7 @@
#include "poweritem.h" #include "poweritem.h"
#include "rgbitem.h" #include "rgbitem.h"
#include "auxitem.h" #include "auxitem.h"
#include "src/microcontroller.h" #include "microcontroller.h"
class FixedItemSource : public ItemSource class FixedItemSource : public ItemSource
{ {

View file

@ -1,9 +1,9 @@
#include "item.h" #include "item.h"
#include "src/actors/sensoractor.h" #include "actors/sensoractor.h"
#include "src/actors/regulator.h" #include "actors/regulator.h"
#include "src/actors/polynomalactor.h" #include "actors/polynomalactor.h"
#include "src/programmode.h" #include "programmode.h"
#include "relay.h" #include "relay.h"
#include "messageitem.h" #include "messageitem.h"
#include "systemitem.h" #include "systemitem.h"

View file

@ -1,8 +1,8 @@
#pragma once #pragma once
#include "item.h" #include "item.h"
#include "src/sensors/sensor.h" #include "sensors/sensor.h"
#include "src/microcontroller.h" #include "microcontroller.h"
#include <QTimer> #include <QTimer>

View file

@ -4,7 +4,7 @@
#include<stdint.h> #include<stdint.h>
#include<QObject> #include<QObject>
#include "src/sensors/sensor.h" #include "sensors/sensor.h"
#include "item.h" #include "item.h"
class Microcontroller; class Microcontroller;

View file

@ -1,6 +1,6 @@
#pragma once #pragma once
#include "src/microcontroller.h" #include "microcontroller.h"
#include "item.h" #include "item.h"
class RgbItem: public Item class RgbItem: public Item

View file

@ -70,7 +70,7 @@ int main(int argc, char *argv[])
QTcpSocket* microSocket = new QTcpSocket; QTcpSocket* microSocket = new QTcpSocket;
qInfo()<<"connecting to "<<host.toStdString()<<':'<<port<<" for tcp micro"; qInfo()<<"connecting to "<<host<<':'<<port<<" for tcp micro";
microSocket->connectToHost(host, port, QIODevice::ReadWrite); microSocket->connectToHost(host, port, QIODevice::ReadWrite);
if(!microSocket->waitForConnected(1000)) if(!microSocket->waitForConnected(1000))

View file

@ -2,7 +2,7 @@
#include <QTimer> #include <QTimer>
#include "src/sun.h" #include "sun.h"
#include "sensor.h" #include "sensor.h"

View file

@ -132,7 +132,7 @@
<customwidget> <customwidget>
<class>SensorListWidget</class> <class>SensorListWidget</class>
<extends>QListView</extends> <extends>QListView</extends>
<header location="local">src/ui/sensorlistwidget.h</header> <header location="local">ui/sensorlistwidget.h</header>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>

View file

@ -110,7 +110,7 @@
<customwidget> <customwidget>
<class>SensorListWidget</class> <class>SensorListWidget</class>
<extends>QListView</extends> <extends>QListView</extends>
<header location="local">src/ui/sensorlistwidget.h</header> <header location="local">ui/sensorlistwidget.h</header>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>

View file

@ -89,7 +89,7 @@
<customwidget> <customwidget>
<class>SensorListWidget</class> <class>SensorListWidget</class>
<extends>QListView</extends> <extends>QListView</extends>
<header location="local">src/ui/sensorlistwidget.h</header> <header location="local">ui/sensorlistwidget.h</header>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>

View file

@ -8,9 +8,9 @@
#include "../actors/factoractor.h" #include "../actors/factoractor.h"
#include "../items/messageitem.h" #include "../items/messageitem.h"
#include "../items/systemitem.h" #include "../items/systemitem.h"
#include "./itemsettingswidgets/messageitemsettingswidget.h" #include "itemsettingswidgets/messageitemsettingswidget.h"
#include "./itemsettingswidgets/systemitemsettingswidget.h" #include "itemsettingswidgets/systemitemsettingswidget.h"
#include "./itemsettingswidgets/relayitemsettingswidget.h" #include "itemsettingswidgets/relayitemsettingswidget.h"
#include<memory> #include<memory>
ItemSettingsDialog::ItemSettingsDialog(std::shared_ptr<Item> item, QWidget *parent) : ItemSettingsDialog::ItemSettingsDialog(std::shared_ptr<Item> item, QWidget *parent) :

View file

@ -245,13 +245,13 @@
<customwidget> <customwidget>
<class>ItemScrollBox</class> <class>ItemScrollBox</class>
<extends>QWidget</extends> <extends>QWidget</extends>
<header location="global">../src/ui/itemscrollbox.h</header> <header location="global">../ui/itemscrollbox.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget> <customwidget>
<class>SensorListWidget</class> <class>SensorListWidget</class>
<extends>QListView</extends> <extends>QListView</extends>
<header location="global">../src/ui/sensorlistwidget.h</header> <header location="global">../ui/sensorlistwidget.h</header>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources> <resources>

View file

@ -6,9 +6,9 @@
#include "itemscrollbox.h" #include "itemscrollbox.h"
#include "itemsettingsdialog.h" #include "itemsettingsdialog.h"
#include "itemcreationdialog.h" #include "itemcreationdialog.h"
#include "src/mainobject.h" #include "mainobject.h"
#include "src/programmode.h" #include "programmode.h"
#include "src/items/poweritem.h" #include "items/poweritem.h"
MainWindow::MainWindow(MainObject * const mainObject, QWidget *parent) : MainWindow::MainWindow(MainObject * const mainObject, QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),

View file

@ -7,7 +7,7 @@
#include <QTime> #include <QTime>
#include <memory> #include <memory>
#include<src/items/item.h> #include<items/item.h>
class MainObject; class MainObject;

View file

@ -249,12 +249,12 @@
<customwidget> <customwidget>
<class>SensorListWidget</class> <class>SensorListWidget</class>
<extends>QListView</extends> <extends>QListView</extends>
<header location="global">src/ui/sensorlistwidget.h</header> <header location="global">ui/sensorlistwidget.h</header>
</customwidget> </customwidget>
<customwidget> <customwidget>
<class>ItemScrollBox</class> <class>ItemScrollBox</class>
<extends>QWidget</extends> <extends>QWidget</extends>
<header location="global">src/ui/itemscrollbox.h</header> <header location="global">ui/itemscrollbox.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
</customwidgets> </customwidgets>

View file

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <QTableWidget> #include <QTableWidget>
#include <vector> #include <vector>
#include "src/sensors/sensor.h" #include "sensors/sensor.h"
class SensorListItem : public QTableWidgetItem class SensorListItem : public QTableWidgetItem
{ {