-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
104 lines (92 loc) · 3.37 KB
/
Copy pathCMakeLists.txt
File metadata and controls
104 lines (92 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
cmake_minimum_required(VERSION 3.16)
project(DATN_dashboard_car VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# The Raspberry Pi build uses the real pigpio daemon. Desktop builds use the
# small compatibility layer in hardware/PigpioCompat.h so the UI can be built
# and run without Raspberry Pi hardware.
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|armv[0-9].*|aarch64)$")
set(DATN_RPI_HARDWARE_DEFAULT ON)
else()
set(DATN_RPI_HARDWARE_DEFAULT OFF)
endif()
option(DATN_RPI_HARDWARE "Enable Raspberry Pi GPIO/I2C hardware" ${DATN_RPI_HARDWARE_DEFAULT})
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick Core Network DBus Multimedia)
qt_standard_project_setup()
qt_policy(SET QTP0001 NEW)
qt_add_executable(appDATN_dashboard_car
main.cpp
hardware/MotorController.cpp hardware/MotorController.h
hardware/LedController.cpp hardware/LedController.h
hardware/SpeedSensor.cpp hardware/SpeedSensor.h
hardware/TempSensor.cpp hardware/TempSensor.h
connectivity/BleServer.cpp connectivity/BleServer.h
models/VehicleModel.h
config/AppConfig.h
)
qt_add_qml_module(appDATN_dashboard_car
URI DATN_dashboard_car
VERSION 1.0
RESOURCE_PREFIX /
NO_CACHEGEN
QML_FILES Main.qml
ui/components/SpeedGauge.qml
ui/components/TempDisplay.qml
ui/components/MotorControl.qml
ui/components/VoiceIndicator.qml
ui/components/TopBar.qml
ui/components/LeftDashboardPanel.qml
ui/components/CenterGaugePanel.qml
ui/components/RightStatsPanel.qml
ui/components/IntroOverlay.qml
RESOURCES assets/intro.mp4
)
set_target_properties(appDATN_dashboard_car PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
target_include_directories(appDATN_dashboard_car PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/config
${CMAKE_CURRENT_SOURCE_DIR}/hardware
${CMAKE_CURRENT_SOURCE_DIR}/connectivity
${CMAKE_CURRENT_SOURCE_DIR}/models
)
target_link_libraries(appDATN_dashboard_car
PRIVATE Qt6::Quick
PRIVATE Qt6::Core
PRIVATE Qt6::Network
PRIVATE Qt6::DBus
PRIVATE Qt6::Multimedia
PRIVATE pthread rt
)
if(DATN_RPI_HARDWARE)
find_path(PIGPIOD_IF2_INCLUDE_DIR
NAMES pigpiod_if2.h
PATHS
${CMAKE_SYSROOT}/usr/include
${CMAKE_SYSROOT}/usr/local/include
REQUIRED
)
find_library(PIGPIOD_IF2_LIB
NAMES pigpiod_if2
PATHS
${CMAKE_SYSROOT}/usr/lib
${CMAKE_SYSROOT}/usr/local/lib
REQUIRED
)
message(STATUS "Raspberry Pi hardware enabled; pigpiod_if2 header: ${PIGPIOD_IF2_INCLUDE_DIR}")
message(STATUS "Raspberry Pi hardware enabled; pigpiod_if2 library: ${PIGPIOD_IF2_LIB}")
target_compile_definitions(appDATN_dashboard_car PRIVATE DATN_RPI_HARDWARE=1)
target_include_directories(appDATN_dashboard_car SYSTEM PRIVATE ${PIGPIOD_IF2_INCLUDE_DIR})
target_link_libraries(appDATN_dashboard_car PRIVATE ${PIGPIOD_IF2_LIB})
else()
message(STATUS "Desktop mode enabled; GPIO and I2C calls are simulated")
endif()
install(TARGETS appDATN_dashboard_car
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)