Change the name of the project to smartvos and use a static libary for the core
This commit is contained in:
parent
d69bfb58b9
commit
6c6fc11439
2 changed files with 142 additions and 236 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required(VERSION 4.0)
|
cmake_minimum_required(VERSION 4.0)
|
||||||
|
|
||||||
project(SHinterface VERSION 1.0 LANGUAGES CXX)
|
project(smartvos VERSION 1.0 LANGUAGES CXX)
|
||||||
|
|
||||||
# Set C++ standard
|
# Set C++ standard
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
|
@ -27,33 +27,20 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||||
# Enable testing framework
|
# Enable testing framework
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
# Add subdirectory for tests
|
# Define shared sources for static library (core sources used by both main and tests)
|
||||||
add_subdirectory(tests)
|
set(SHINTERFACE_CORE_SOURCES
|
||||||
|
src/sensors/mqttsensorsource.h
|
||||||
# Create executable
|
src/sensors/mqttsensorsource.cpp
|
||||||
add_executable(SHinterface
|
src/items/mqttitem.h
|
||||||
src/sensors/mqttsensorsource.h src/sensors/mqttsensorsource.cpp
|
src/items/mqttitem.cpp
|
||||||
src/items/mqttitem.h src/items/mqttitem.cpp
|
src/mqttclient.h
|
||||||
src/mqttclient.h src/mqttclient.cpp
|
src/mqttclient.cpp
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
# 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.h
|
||||||
src/microcontroller.cpp
|
src/microcontroller.cpp
|
||||||
src/sun.h
|
src/sun.h
|
||||||
src/sun.cpp
|
src/sun.cpp
|
||||||
src/programmode.h
|
src/programmode.h
|
||||||
src/programmode.cpp
|
src/programmode.cpp
|
||||||
src/pipewire.h
|
|
||||||
src/pipewire.cpp
|
|
||||||
|
|
||||||
src/service/service.h
|
src/service/service.h
|
||||||
src/service/service.cpp
|
src/service/service.cpp
|
||||||
|
|
@ -108,6 +95,44 @@ target_sources(SHinterface
|
||||||
src/items/fixeditemsource.cpp
|
src/items/fixeditemsource.cpp
|
||||||
src/items/itemstore.h
|
src/items/itemstore.h
|
||||||
src/items/itemstore.cpp
|
src/items/itemstore.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create static library
|
||||||
|
add_library(smartvos_core STATIC ${SHINTERFACE_CORE_SOURCES})
|
||||||
|
|
||||||
|
# Link Qt and system libraries to static library
|
||||||
|
target_link_libraries(smartvos_core
|
||||||
|
Qt6::Core
|
||||||
|
Qt6::Gui
|
||||||
|
Qt6::Widgets
|
||||||
|
Qt6::Network
|
||||||
|
Qt6::Multimedia
|
||||||
|
Qt6::SerialPort
|
||||||
|
Qt6::Mqtt
|
||||||
|
Qt6::WebSockets
|
||||||
|
${PIPEWIRE_LIBRARIES}
|
||||||
|
${LIBNL3_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add include paths to static library
|
||||||
|
target_include_directories(smartvos_core PUBLIC
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
|
${PIPEWIRE_INCLUDE_DIRS}
|
||||||
|
${LIBNL3_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add subdirectory for tests
|
||||||
|
add_subdirectory(tests)
|
||||||
|
|
||||||
|
# Create executable
|
||||||
|
add_executable(smartvos
|
||||||
|
src/main.cpp
|
||||||
|
src/mainobject.h
|
||||||
|
src/mainobject.cpp
|
||||||
|
src/apgetconnected.h
|
||||||
|
src/apgetconnected.cpp
|
||||||
|
src/pipewire.h
|
||||||
|
src/pipewire.cpp
|
||||||
|
|
||||||
src/ui/mainwindow.h
|
src/ui/mainwindow.h
|
||||||
src/ui/mainwindow.cpp
|
src/ui/mainwindow.cpp
|
||||||
|
|
@ -148,7 +173,7 @@ target_sources(SHinterface
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add UI files
|
# Add UI files
|
||||||
target_sources(SHinterface
|
target_sources(smartvos
|
||||||
PRIVATE
|
PRIVATE
|
||||||
src/ui/mainwindow.ui
|
src/ui/mainwindow.ui
|
||||||
src/ui/itemwidget.ui
|
src/ui/itemwidget.ui
|
||||||
|
|
@ -169,13 +194,14 @@ target_sources(SHinterface
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add resource file
|
# Add resource file
|
||||||
target_sources(SHinterface
|
target_sources(smartvos
|
||||||
PRIVATE
|
PRIVATE
|
||||||
resources.qrc
|
resources.qrc
|
||||||
)
|
)
|
||||||
|
|
||||||
# Link libraries
|
# Link libraries - link to static library plus UI-specific dependencies
|
||||||
target_link_libraries(SHinterface
|
target_link_libraries(smartvos
|
||||||
|
smartvos_core
|
||||||
Qt6::Core
|
Qt6::Core
|
||||||
Qt6::Gui
|
Qt6::Gui
|
||||||
Qt6::Widgets
|
Qt6::Widgets
|
||||||
|
|
@ -190,3 +216,16 @@ target_link_libraries(SHinterface
|
||||||
|
|
||||||
# Add include paths
|
# Add include paths
|
||||||
include_directories(${PIPEWIRE_INCLUDE_DIRS} ${LIBNL3_INCLUDE_DIRS})
|
include_directories(${PIPEWIRE_INCLUDE_DIRS} ${LIBNL3_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
install(TARGETS smartvos DESTINATION bin)
|
||||||
|
install(TARGETS smartvos_core DESTINATION lib)
|
||||||
|
|
||||||
|
# Install icon
|
||||||
|
install(FILES UVOSicon.bmp DESTINATION share/icons/hicolor/48x48/apps RENAME smartvos.png)
|
||||||
|
|
||||||
|
# Install .desktop file
|
||||||
|
install(FILES smartvos.desktop DESTINATION share/applications)
|
||||||
|
|
||||||
|
# Update icon cache (optional, for icon themes)
|
||||||
|
install(CODE "execute_process(COMMAND gtk-update-icon-cache -f -t ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX})")
|
||||||
|
|
|
||||||
|
|
@ -6,152 +6,18 @@ enable_testing()
|
||||||
# Find Qt packages for tests
|
# Find Qt packages for tests
|
||||||
find_package(Qt6 COMPONENTS Core Gui Widgets Multimedia Test REQUIRED)
|
find_package(Qt6 COMPONENTS Core Gui Widgets Multimedia Test REQUIRED)
|
||||||
|
|
||||||
# Define common sources needed by all tests - include only what's actually needed for basic testing
|
# Add test executables - link to static library instead of compiling sources
|
||||||
set(COMMON_TEST_SOURCES
|
add_executable(test_item unit/items/test_item.cpp)
|
||||||
../src/items/item.h
|
add_executable(test_sensor unit/sensors/test_sensor.cpp)
|
||||||
../src/items/item.cpp
|
add_executable(test_actor unit/actors/test_actor.cpp)
|
||||||
../src/sensors/sensor.h
|
add_executable(test_itemstore unit/items/test_itemstore.cpp)
|
||||||
../src/sensors/sensor.cpp
|
add_executable(test_itemloadersource unit/items/test_itemloadersource.cpp)
|
||||||
../src/programmode.h
|
add_executable(test_tcp unit/service/test_tcp.cpp)
|
||||||
../src/programmode.cpp
|
|
||||||
../src/microcontroller.h
|
|
||||||
../src/microcontroller.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/timeractor.h
|
|
||||||
../src/actors/timeractor.cpp
|
|
||||||
../src/items/relay.h
|
|
||||||
../src/items/relay.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/poweritem.h
|
|
||||||
../src/items/poweritem.cpp
|
|
||||||
../src/items/rgbitem.h
|
|
||||||
../src/items/rgbitem.cpp
|
|
||||||
../src/actors/alarmtime.h
|
|
||||||
../src/actors/alarmtime.cpp
|
|
||||||
../src/actors/regulator.h
|
|
||||||
../src/actors/regulator.cpp
|
|
||||||
../src/items/itemsource.h
|
|
||||||
../src/items/itemsource.cpp
|
|
||||||
../src/items/itemstore.h
|
|
||||||
../src/items/itemstore.cpp
|
|
||||||
../src/items/itemloadersource.h
|
|
||||||
../src/items/itemloadersource.cpp
|
|
||||||
../src/items/mqttitem.h
|
|
||||||
../src/items/mqttitem.cpp
|
|
||||||
../src/mqttclient.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
# Add test executables - compile all needed sources into each test
|
# Link all tests to static library
|
||||||
add_executable(test_item unit/items/test_item.cpp ${COMMON_TEST_SOURCES})
|
foreach(test test_item test_sensor test_actor test_itemstore test_itemloadersource test_tcp)
|
||||||
add_executable(test_sensor unit/sensors/test_sensor.cpp ${COMMON_TEST_SOURCES})
|
target_link_libraries(${test}
|
||||||
add_executable(test_actor unit/actors/test_actor.cpp ${COMMON_TEST_SOURCES})
|
smartvos_core
|
||||||
add_executable(test_itemstore unit/items/test_itemstore.cpp ${COMMON_TEST_SOURCES})
|
|
||||||
add_executable(test_itemloadersource unit/items/test_itemloadersource.cpp ${COMMON_TEST_SOURCES})
|
|
||||||
add_executable(test_tcp unit/service/test_tcp.cpp ${COMMON_TEST_SOURCES}
|
|
||||||
../src/service/service.h
|
|
||||||
../src/service/service.cpp
|
|
||||||
../src/service/server.h
|
|
||||||
../src/service/server.cpp
|
|
||||||
../src/service/tcpserver.h
|
|
||||||
../src/service/tcpserver.cpp
|
|
||||||
../src/service/tcpclient.h
|
|
||||||
../src/service/tcpclient.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
# Link libraries for test_item
|
|
||||||
target_link_libraries(test_item
|
|
||||||
Qt6::Core
|
|
||||||
Qt6::Gui
|
|
||||||
Qt6::Widgets
|
|
||||||
Qt6::Multimedia
|
|
||||||
Qt6::Mqtt
|
|
||||||
Qt6::Test
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include paths for source files
|
|
||||||
target_include_directories(test_item PRIVATE
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
|
||||||
${Qt6Gui_PRIVATE_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Link libraries for test_sensor
|
|
||||||
target_link_libraries(test_sensor
|
|
||||||
Qt6::Core
|
|
||||||
Qt6::Gui
|
|
||||||
Qt6::Widgets
|
|
||||||
Qt6::Multimedia
|
|
||||||
Qt6::Mqtt
|
|
||||||
Qt6::Test
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include paths for source files
|
|
||||||
target_include_directories(test_sensor PRIVATE
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
|
||||||
${Qt6Gui_PRIVATE_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Link libraries for test_actor
|
|
||||||
target_link_libraries(test_actor
|
|
||||||
Qt6::Core
|
|
||||||
Qt6::Gui
|
|
||||||
Qt6::Widgets
|
|
||||||
Qt6::Multimedia
|
|
||||||
Qt6::Mqtt
|
|
||||||
Qt6::Test
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include paths for source files
|
|
||||||
target_include_directories(test_actor PRIVATE
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
|
||||||
${Qt6Gui_PRIVATE_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Link libraries for test_itemstore
|
|
||||||
target_link_libraries(test_itemstore
|
|
||||||
Qt6::Core
|
|
||||||
Qt6::Gui
|
|
||||||
Qt6::Widgets
|
|
||||||
Qt6::Multimedia
|
|
||||||
Qt6::Mqtt
|
|
||||||
Qt6::Test
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include paths for source files
|
|
||||||
target_include_directories(test_itemstore PRIVATE
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
|
||||||
${Qt6Gui_PRIVATE_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Link libraries for test_itemloadersource
|
|
||||||
target_link_libraries(test_itemloadersource
|
|
||||||
Qt6::Core
|
|
||||||
Qt6::Gui
|
|
||||||
Qt6::Widgets
|
|
||||||
Qt6::Multimedia
|
|
||||||
Qt6::Mqtt
|
|
||||||
Qt6::Test
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include paths for source files
|
|
||||||
target_include_directories(test_itemloadersource PRIVATE
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
|
||||||
${Qt6Gui_PRIVATE_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Link libraries for test_tcp
|
|
||||||
target_link_libraries(test_tcp
|
|
||||||
Qt6::Core
|
Qt6::Core
|
||||||
Qt6::Gui
|
Qt6::Gui
|
||||||
Qt6::Widgets
|
Qt6::Widgets
|
||||||
|
|
@ -162,11 +28,12 @@ target_link_libraries(test_tcp
|
||||||
Qt6::Test
|
Qt6::Test
|
||||||
)
|
)
|
||||||
|
|
||||||
# Include paths for source files
|
# Include paths - the static library already has the correct include paths
|
||||||
target_include_directories(test_tcp PRIVATE
|
target_include_directories(${test} PRIVATE
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
${CMAKE_CURRENT_SOURCE_DIR}/../src
|
||||||
${Qt6Gui_PRIVATE_INCLUDE_DIRS}
|
${Qt6Gui_PRIVATE_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
# Add tests to CTest
|
# Add tests to CTest
|
||||||
add_test(NAME test_item COMMAND test_item)
|
add_test(NAME test_item COMMAND test_item)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue