Compare commits
2 Commits
60706e5e52
...
b05180f575
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b05180f575 | ||
|
|
c3e5092845 |
@@ -1,6 +1,5 @@
|
||||
QT += core gui svg widgets
|
||||
|
||||
|
||||
CONFIG += c++23
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
@@ -9,34 +8,6 @@ CONFIG += c++23
|
||||
|
||||
INCLUDEPATH += . libwin
|
||||
|
||||
linux:contains(QT_ARCH, arm.*)
|
||||
{
|
||||
message("Konfiguration für Raspberry Pi (ARM) erkannt.")
|
||||
|
||||
# 1. Header-Dateien (z.B. für bcm2835.h oder eigene Treiber)
|
||||
#INCLUDEPATH += /usr/local/include \
|
||||
# /home/pi/my_custom_drivers/include
|
||||
|
||||
# not used at the moment
|
||||
# 2. Bibliotheken linken
|
||||
# -L sagt dem Linker WO er suchen soll
|
||||
# -l sagt dem Linker WAS er nehmen soll (z.B. libwiringPi.so -> -lwiringPi)
|
||||
#LIBS += -L/usr/lib \
|
||||
# -lmhstcan
|
||||
|
||||
|
||||
# Optional: Spezielle Compiler-Flags für den Pi (Optimierung)
|
||||
#QMAKE_CXXFLAGS += -O3
|
||||
}
|
||||
|
||||
li
|
||||
|
||||
windows
|
||||
{
|
||||
#LIBS += -L$$PWD/can_api -lmhstcan -lAdvapi32
|
||||
message("Konfiguration für Windows.")
|
||||
}
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
224
CMakeLists.txt
224
CMakeLists.txt
@@ -1,138 +1,132 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
# Projektname und unterstützte Sprachen (C++ für Qt, C für die Treiber)
|
||||
project(BionxControl LANGUAGES CXX C)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 1. C++ Standard & Projekt-Einstellungen
|
||||
# ------------------------------------------------------------------------------
|
||||
# Du hast C++23 angefordert. Hinweis: Der Compiler muss sehr aktuell sein (GCC 13+ / MSVC 2022)
|
||||
project(BionxControl VERSION 1.0 LANGUAGES C CXX)
|
||||
# --- C++23 aktivieren ---
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
# set(CMAKE_CXX_EXTENSIONS OFF) # Optional: Auf OFF setzen, wenn du reines C++23 statt GNU++23 erzwingen willst
|
||||
|
||||
# Automatische Erstellung von MOC, UIC und RCC aktivieren
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 2. Qt-Pakete laden
|
||||
# ------------------------------------------------------------------------------
|
||||
# Äquivalent zu: QT += core gui widgets svg
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Gui Svg Widgets)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 3. Quellcode definieren
|
||||
# ------------------------------------------------------------------------------
|
||||
set(PROJECT_SOURCES
|
||||
main.cpp
|
||||
bcmainwindow.cpp
|
||||
bc.cpp
|
||||
bcdelightpmwidget.cpp
|
||||
bcdeviceview.cpp
|
||||
bcdriver.cpp
|
||||
bcdriverstatewidget.cpp
|
||||
bcdrivertinycan.cpp
|
||||
bcthemeswitchbutton.cpp
|
||||
bctoggleswitch.cpp
|
||||
bctransmitter.cpp
|
||||
bcvalue.cpp
|
||||
bcvaluedelegate.cpp
|
||||
bcvaluemodel.cpp
|
||||
bcvalueslider.cpp
|
||||
bcvaluesliderstyle.cpp
|
||||
bcxmlloader.cpp
|
||||
# Deine Header (wichtig, damit sie in der IDE sichtbar sind)
|
||||
bcmainwindow.h
|
||||
bc.h
|
||||
bcdelightpmwidget.h
|
||||
bcdeviceview.h
|
||||
bcdriver.h
|
||||
bcdriverstatewidget.h
|
||||
bcdrivertinycan.h
|
||||
bcthemeswitchbutton.h
|
||||
bctoggleswitch.h
|
||||
bctransmitter.h
|
||||
bcvalue.h
|
||||
bcvaluedelegate.h
|
||||
bcvaluemodel.h
|
||||
bcvalueslider.h
|
||||
BCValueSliderStyle.h
|
||||
bcxmlloader.h
|
||||
# UI Forms
|
||||
bcmainwindow.ui
|
||||
bcvalueslider.ui
|
||||
# Resources
|
||||
bionxcontrol.qrc
|
||||
)
|
||||
qt_standard_project_setup()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 4. Plattform-Spezifika (Architektur-Entscheidung)
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Windows-Spezifische Quellen und Libs
|
||||
if(WIN32)
|
||||
message(STATUS "Konfiguration für Windows.")
|
||||
list(APPEND PROJECT_SOURCES
|
||||
qt_add_executable(BionxControl WIN32 MACOSX_BUNDLE
|
||||
bc.cpp bc.h
|
||||
bcdelightpmwidget.cpp bcdelightpmwidget.h
|
||||
bcdeviceview.cpp bcdeviceview.h
|
||||
bcdriver.cpp bcdriver.h
|
||||
bcdriverstatewidget.cpp bcdriverstatewidget.h
|
||||
bcdrivertinycan.cpp bcdrivertinycan.h
|
||||
bcmainwindow.cpp bcmainwindow.h bcmainwindow.ui
|
||||
bcthemeswitchbutton.cpp bcthemeswitchbutton.h
|
||||
bctoggleswitch.cpp bctoggleswitch.h
|
||||
bctransmitter.cpp bctransmitter.h
|
||||
bcvalue.cpp bcvalue.h
|
||||
bcvaluedelegate.cpp bcvaluedelegate.h
|
||||
bcvaluemodel.cpp bcvaluemodel.h
|
||||
bcvalueslider.cpp bcvalueslider.h bcvalueslider.ui
|
||||
bcxmlloader.cpp bcxmlloader.h
|
||||
libwin/can_drv_win.c
|
||||
libwin/mhs_can_drv.c
|
||||
main.cpp
|
||||
)
|
||||
# Falls du die Libs später aktivieren willst (wie im .pro auskommentiert):
|
||||
# target_link_libraries(BionxControl PRIVATE Advapi32)
|
||||
# target_link_directories(BionxControl PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/can_api")
|
||||
endif()
|
||||
|
||||
# Linux / Raspberry Pi (ARM) Logik
|
||||
if(UNIX AND NOT APPLE)
|
||||
# Check ob wir auf ARM kompilieren (für RPi)
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
|
||||
message(STATUS "Konfiguration für Raspberry Pi (ARM) erkannt.")
|
||||
# Optimierungs-Flag aus deiner .pro
|
||||
add_compile_options(-O3)
|
||||
|
||||
# Falls du wiringPi oder can Treiber brauchst:
|
||||
# target_link_libraries(BionxControl PRIVATE wiringPi mhstcan)
|
||||
endif()
|
||||
|
||||
# Hinweis: Im original .pro waren die .c Files auch unter Linux aktiv.
|
||||
# Falls die C-Treiber auch unter Linux laufen sollen, verschiebe sie
|
||||
# aus dem if(WIN32) Block nach oben in PROJECT_SOURCES.
|
||||
endif()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 5. Executable erstellen
|
||||
# ------------------------------------------------------------------------------
|
||||
qt_add_executable(BionxControl
|
||||
MANUAL_FINALIZATION
|
||||
${PROJECT_SOURCES}
|
||||
)
|
||||
|
||||
# Include-Pfade (Äquivalent zu INCLUDEPATH += . libwin)
|
||||
target_include_directories(BionxControl PRIVATE
|
||||
.
|
||||
libwin
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 6. Bibliotheken linken
|
||||
# ------------------------------------------------------------------------------
|
||||
target_link_libraries(BionxControl PRIVATE
|
||||
Qt6::Core
|
||||
Qt6::Gui
|
||||
Qt6::Widgets
|
||||
Qt6::Svg
|
||||
Qt::Core
|
||||
Qt::Gui
|
||||
Qt::Svg
|
||||
Qt::Widgets
|
||||
)
|
||||
|
||||
|
||||
# Resources:
|
||||
set_source_files_properties("resources/bc_dark.qss"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "bc_dark.qss"
|
||||
)
|
||||
set_source_files_properties("resources/bc_light.qss"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "bc_light.qss"
|
||||
)
|
||||
set_source_files_properties("resources/bikeinfo.xml"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "bikeinfo.xml"
|
||||
)
|
||||
set_source_files_properties("resources/bionx_akku.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "bionx_akku.png"
|
||||
)
|
||||
set_source_files_properties("resources/bionx_console.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "bionx_console.png"
|
||||
)
|
||||
set_source_files_properties("resources/bionx_motor.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "bionx_motor.png"
|
||||
)
|
||||
set_source_files_properties("resources/connect.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "connect.png"
|
||||
)
|
||||
set_source_files_properties("resources/exit.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "exit.png"
|
||||
)
|
||||
set_source_files_properties("resources/exit_red.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "exit_red.png"
|
||||
)
|
||||
set_source_files_properties("resources/sync.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "sync.png"
|
||||
)
|
||||
set_source_files_properties("resources/sync_green.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "sync_green.png"
|
||||
)
|
||||
set_source_files_properties("resources/sync_yellow.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "sync_yellow.png"
|
||||
)
|
||||
set_source_files_properties("resources/update.png"
|
||||
PROPERTIES QT_RESOURCE_ALIAS "update.png"
|
||||
)
|
||||
set(bionxcontrol_resource_files
|
||||
"resources/bc_dark.qss"
|
||||
"resources/bc_light.qss"
|
||||
"resources/bikeinfo.xml"
|
||||
"resources/bionx_akku.png"
|
||||
"resources/bionx_console.png"
|
||||
"resources/bionx_motor.png"
|
||||
"resources/connect.png"
|
||||
"resources/exit.png"
|
||||
"resources/exit_red.png"
|
||||
"resources/smile/face-angel.png"
|
||||
"resources/smile/face-angry.png"
|
||||
"resources/smile/face-cool.png"
|
||||
"resources/smile/face-crying.png"
|
||||
"resources/smile/face-embarrassed.png"
|
||||
"resources/smile/face-glasses.png"
|
||||
"resources/smile/face-kiss.png"
|
||||
"resources/smile/face-laugh.png"
|
||||
"resources/smile/face-monkey.png"
|
||||
"resources/smile/face-plain.png"
|
||||
"resources/smile/face-raspberry.png"
|
||||
"resources/smile/face-sad.png"
|
||||
"resources/smile/face-sick.png"
|
||||
"resources/smile/face-smile-big.png"
|
||||
"resources/smile/face-smile.png"
|
||||
"resources/smile/face-smirk.png"
|
||||
"resources/smile/face-surprise.png"
|
||||
"resources/sync.png"
|
||||
"resources/sync_green.png"
|
||||
"resources/sync_yellow.png"
|
||||
"resources/update.png"
|
||||
)
|
||||
|
||||
qt_add_resources(BionxControl "bionxcontrol"
|
||||
PREFIX
|
||||
"/"
|
||||
FILES
|
||||
${bionxcontrol_resource_files}
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 7. Deployment / Installation
|
||||
# ------------------------------------------------------------------------------
|
||||
# Äquivalent zu deinem "target.path" Block
|
||||
install(TARGETS BionxControl
|
||||
BUNDLE DESTINATION .
|
||||
RUNTIME DESTINATION bin
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
||||
# Unter Windows: Konsolenfenster unterdrücken (außer im Debug-Mode wenn gewünscht)
|
||||
if(WIN32)
|
||||
set_target_properties(BionxControl PROPERTIES WIN32_EXECUTABLE ON)
|
||||
endif()
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"hidden": true,
|
||||
"name": "Qt",
|
||||
"cacheVariables": {
|
||||
"CMAKE_PREFIX_PATH": "$env{QTDIR}"
|
||||
},
|
||||
"vendor": {
|
||||
"qt-project.org/Qt": {
|
||||
"checksum": "wVa86FgEkvdCTVp1/nxvrkaemJc="
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"vendor": {
|
||||
"qt-project.org/Presets": {
|
||||
"checksum": "67SmY24ZeVbebyKD0fGfIzb/bGI="
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,112 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "Qt-Debug",
|
||||
"inherits": "Qt-Default",
|
||||
"binaryDir": "${sourceDir}/out/build/debug",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_CXX_FLAGS": "-DQT_QML_DEBUG"
|
||||
},
|
||||
"environment": {
|
||||
"QML_DEBUG_ARGS": "-qmljsdebugger=file:{aad3125d-03d3-444f-a577-6e1a42300747},block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Qt-Release",
|
||||
"inherits": "Qt-Default",
|
||||
"binaryDir": "${sourceDir}/out/build/release",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"hidden": true,
|
||||
"name": "Qt-Default",
|
||||
"inherits": "msvc2022x64Qt6",
|
||||
"vendor": {
|
||||
"qt-project.org/Default": {
|
||||
"checksum": "i66Ru6Xr2iTwQJrInr6OBGYjRK8="
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hidden": true,
|
||||
"name": "5.13.2_msvc2017",
|
||||
"inherits": "Qt",
|
||||
"environment": {
|
||||
"QTDIR": "C:/Qt/Qt5.13.2/5.13.2/msvc2017"
|
||||
},
|
||||
"architecture": {
|
||||
"strategy": "external",
|
||||
"value": "x86"
|
||||
},
|
||||
"generator": "Ninja",
|
||||
"vendor": {
|
||||
"qt-project.org/Version": {
|
||||
"checksum": "buLxQ1kUsADOzoJ+w8yPcUB7uPI="
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hidden": true,
|
||||
"name": "msvc2022x64Qt6",
|
||||
"inherits": "Qt",
|
||||
"environment": {
|
||||
"QTDIR": "C:/Qt/6.10.1/msvc2022_64"
|
||||
},
|
||||
"architecture": {
|
||||
"strategy": "external",
|
||||
"value": "x64"
|
||||
},
|
||||
"generator": "Ninja",
|
||||
"vendor": {
|
||||
"qt-project.org/Version": {
|
||||
"checksum": "4+Yj6B2/47gfzBNUic9pikpc6XY="
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hidden": true,
|
||||
"name": "VS2017x64Default",
|
||||
"inherits": "Qt",
|
||||
"environment": {
|
||||
"QTDIR": "C:/Qt/Qt5.13.2/5.13.2/msvc2017_64"
|
||||
},
|
||||
"architecture": {
|
||||
"strategy": "external",
|
||||
"value": "x64"
|
||||
},
|
||||
"generator": "Ninja",
|
||||
"vendor": {
|
||||
"qt-project.org/Version": {
|
||||
"checksum": "8CScCBxKrPnt9tGlvYctTIj9T7o="
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hidden": true,
|
||||
"name": "VS2017x86Default",
|
||||
"inherits": "Qt",
|
||||
"environment": {
|
||||
"QTDIR": "C:/Qt/Qt5.13.2/5.13.2/msvc2017"
|
||||
},
|
||||
"architecture": {
|
||||
"strategy": "external",
|
||||
"value": "x86"
|
||||
},
|
||||
"generator": "Ninja",
|
||||
"vendor": {
|
||||
"qt-project.org/Version": {
|
||||
"checksum": "0W/xbuyiWWemn9gHwntcl/pzeNw="
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"vendor": {
|
||||
"qt-project.org/Presets": {
|
||||
"checksum": "VXVUfuzC5iU0zlFoq9u8LP40dyc="
|
||||
}
|
||||
}
|
||||
}
|
||||
36
Dockerfile
Normal file
36
Dockerfile
Normal file
@@ -0,0 +1,36 @@
|
||||
# Wir nutzen Debian Trixie als Basis für das aktuelle Raspberry Pi OS
|
||||
FROM debian:trixie
|
||||
|
||||
# Verhindert interaktive Prompts während der Installation
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# 1. Multiarch für arm64 aktivieren
|
||||
RUN dpkg --add-architecture arm64 && \
|
||||
apt-get update && \
|
||||
apt-get upgrade -y
|
||||
|
||||
# 2. Host-Build-Tools und Cross-Compiler installieren
|
||||
RUN apt-get install -y \
|
||||
build-essential \
|
||||
crossbuild-essential-arm64 \
|
||||
cmake \
|
||||
ninja-build \
|
||||
git \
|
||||
pkg-config
|
||||
|
||||
# 3. Qt6 für den HOST installieren (für moc, uic, etc.)
|
||||
RUN apt-get install -y \
|
||||
qt6-base-dev \
|
||||
qt6-tools-dev-tools \
|
||||
qt6-svg-dev
|
||||
|
||||
# 4. Qt6 Bibliotheken für das TARGET (arm64) installieren
|
||||
RUN apt-get install -y \
|
||||
qt6-base-dev:arm64 \
|
||||
libglvnd-dev:arm64 \
|
||||
qt6-svg-dev:arm64
|
||||
|
||||
# Aufräumen
|
||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /workspace
|
||||
25
docker4BionxControl/aarch64-toolchain.cmake
Normal file
25
docker4BionxControl/aarch64-toolchain.cmake
Normal file
@@ -0,0 +1,25 @@
|
||||
# Name des Zielsystems
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
# Die Cross-Compiler aus dem Debian-Paket
|
||||
set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)
|
||||
set(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++)
|
||||
|
||||
# Wo das System nach Bibliotheken und Headern suchen soll (Sysroot)
|
||||
set(CMAKE_SYSROOT /)
|
||||
|
||||
# Pfade für pkg-config anpassen, damit es die arm64 .pc Dateien findet
|
||||
set(ENV{PKG_CONFIG_DIR} "")
|
||||
set(ENV{PKG_CONFIG_LIBDIR} "/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig")
|
||||
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})
|
||||
|
||||
# Suchverhalten für find_package(), find_library() etc.
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # Programme (wie moc) auf dem Host suchen
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # Libs nur im Target (arm64) suchen
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Header nur im Target (arm64) suchen
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) # CMake-Pakete nur im Target suchen
|
||||
|
||||
# *** WICHTIG FÜR QT6 ***
|
||||
# Sagt Qt, wo es die Host-Tools für das Code-Generieren findet
|
||||
set(QT_HOST_PATH "/usr")
|
||||
0
docker4BionxControl/runme.txt
Normal file
0
docker4BionxControl/runme.txt
Normal file
14
runme.txt
Normal file
14
runme.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
docker build -t qt-cross-rpi .
|
||||
// eigentlich: docker buildx build --platform linux/arm64 -t qt-cross-rpi --load .
|
||||
|
||||
docker run --rm -it -v "$(pwd):/workspace" qt-cross-rpi bash
|
||||
|
||||
# 1. Erstelle einen separaten Build-Ordner und wechsle dorthin
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# 2. Konfiguriere das Projekt mit CMake und deiner Toolchain-Datei für aarch64
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../aarch64-toolchain.cmake -G Ninja ..
|
||||
|
||||
# 3. Starte den Kompiliervorgang
|
||||
ninja
|
||||
Reference in New Issue
Block a user