changed aarch64 build system
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
QT += core gui svg widgets
|
QT += core gui svg widgets
|
||||||
|
|
||||||
|
|
||||||
CONFIG += c++23
|
CONFIG += c++23
|
||||||
|
|
||||||
# You can make your code fail to compile if it uses deprecated APIs.
|
# You can make your code fail to compile if it uses deprecated APIs.
|
||||||
@@ -9,34 +8,6 @@ CONFIG += c++23
|
|||||||
|
|
||||||
INCLUDEPATH += . libwin
|
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.
|
# You can make your code fail to compile if it uses deprecated APIs.
|
||||||
# In order to do so, uncomment the following line.
|
# 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
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||||
|
|||||||
132
CMakeLists.txt
Normal file
132
CMakeLists.txt
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
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
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
find_package(Qt6 REQUIRED COMPONENTS Gui Svg Widgets)
|
||||||
|
|
||||||
|
qt_standard_project_setup()
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
target_include_directories(BionxControl PRIVATE
|
||||||
|
.
|
||||||
|
libwin
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(BionxControl PRIVATE
|
||||||
|
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}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS BionxControl
|
||||||
|
BUNDLE DESTINATION .
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
)
|
||||||
|
|
||||||
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")
|
||||||
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