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.h src/mainobject.cpp src/apgetconnected.h src/apgetconnected.cpp src/microcontroller.h src/microcontroller.cpp src/sun.h src/sun.cpp src/programmode.h src/programmode.cpp src/tcpserver.h src/tcpserver.cpp src/pipewire.h src/pipewire.cpp src/actors/actor.h src/actors/actor.cpp src/actors/factoractor.h src/actors/factoractor.cpp src/actors/polynomalactor.h src/actors/polynomalactor.cpp src/actors/sensoractor.h src/actors/sensoractor.cpp src/actors/alarmtime.h src/actors/alarmtime.cpp src/actors/regulator.h src/actors/regulator.cpp src/actors/timeractor.h src/actors/timeractor.cpp src/sensors/sensor.h src/sensors/sensor.cpp src/sensors/sunsensor.h src/sensors/sunsensor.cpp src/items/item.h src/items/item.cpp src/items/relay.h src/items/relay.cpp src/items/poweritem.h src/items/poweritem.cpp src/items/messageitem.h src/items/messageitem.cpp src/items/systemitem.h src/items/systemitem.cpp src/items/auxitem.h src/items/auxitem.cpp src/items/rgbitem.h src/items/rgbitem.cpp src/items/itemsource.h src/items/itemsource.cpp src/items/itemloadersource.h src/items/itemloadersource.cpp src/items/fixeditemsource.h src/items/fixeditemsource.cpp src/items/itemstore.h src/items/itemstore.cpp src/ui/mainwindow.h src/ui/mainwindow.cpp src/ui/itemwidget.h src/ui/itemwidget.cpp src/ui/itemscrollbox.h src/ui/itemscrollbox.cpp src/ui/sensorlistwidget.h src/ui/sensorlistwidget.cpp src/ui/itemcreationdialog.h src/ui/itemcreationdialog.cpp src/ui/itemsettingsdialog.h src/ui/itemsettingsdialog.cpp src/ui/actorsettingsdialog.h src/ui/actorsettingsdialog.cpp src/ui/actorwidgets/factoractorwidget.h src/ui/actorwidgets/factoractorwidget.cpp src/ui/actorwidgets/polynomalactorwidget.h src/ui/actorwidgets/polynomalactorwidget.cpp src/ui/actorwidgets/sensoractorwidget.h src/ui/actorwidgets/sensoractorwidget.cpp src/ui/actorwidgets/timeractorwidget.h src/ui/actorwidgets/timeractorwidget.cpp src/ui/actorwidgets/alarmwidget.h src/ui/actorwidgets/alarmwidget.cpp src/ui/actorwidgets/regulatorwdiget.h src/ui/actorwidgets/regulatorwdiget.cpp src/ui/itemsettingswidgets/messageitemsettingswidget.h src/ui/itemsettingswidgets/messageitemsettingswidget.cpp src/ui/itemsettingswidgets/relayitemsettingswidget.h src/ui/itemsettingswidgets/relayitemsettingswidget.cpp src/ui/itemsettingswidgets/systemitemsettingswidget.h 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})