changed aarch64 build system
This commit is contained in:
@@ -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
|
||||
|
||||
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