changed aarch64 build system
This commit is contained in:
24
docker4BionxControl/CMakeLists.txt
Normal file
24
docker4BionxControl/CMakeLists.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(HelloWorldQt6 VERSION 1.0.0 LANGUAGES CXX)
|
||||
|
||||
# Wir nutzen modernes C++
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# Qt-spezifische Automatismen aktivieren
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
# Qt6 Widgets-Modul suchen
|
||||
find_package(Qt6 REQUIRED COMPONENTS Widgets)
|
||||
|
||||
# Executable definieren und Quelldateien hinzufügen
|
||||
add_executable(HelloWorldApp
|
||||
main.cpp
|
||||
MainWindow.cpp
|
||||
MainWindow.hpp
|
||||
)
|
||||
|
||||
# Qt6 Bibliotheken linken
|
||||
target_link_libraries(HelloWorldApp PRIVATE Qt6::Widgets)
|
||||
34
docker4BionxControl/Dockerfile
Normal file
34
docker4BionxControl/Dockerfile
Normal file
@@ -0,0 +1,34 @@
|
||||
# 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
|
||||
|
||||
# 4. Qt6 Bibliotheken für das TARGET (arm64) installieren
|
||||
RUN apt-get install -y \
|
||||
qt6-base-dev:arm64 \
|
||||
libglvnd-dev:arm64
|
||||
|
||||
# Aufräumen
|
||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /workspace
|
||||
17
docker4BionxControl/MainWindow.cpp
Normal file
17
docker4BionxControl/MainWindow.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "MainWindow.hpp"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
{
|
||||
// Button erstellen
|
||||
m_helloButton = new QPushButton("Hello World", this);
|
||||
|
||||
// Den Button zum zentralen Widget des Fensters machen
|
||||
setCentralWidget(m_helloButton);
|
||||
|
||||
// Eine angenehme Startgröße für das Fenster setzen
|
||||
resize(400, 300);
|
||||
|
||||
// Ein kleines Extra: Klick auf den Button schließt die App
|
||||
connect(m_helloButton, &QPushButton::clicked, this, &QMainWindow::close);
|
||||
}
|
||||
14
docker4BionxControl/MainWindow.hpp
Normal file
14
docker4BionxControl/MainWindow.hpp
Normal file
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QPushButton>
|
||||
|
||||
class MainWindow : public QMainWindow {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = nullptr);
|
||||
|
||||
private:
|
||||
QPushButton *m_helloButton;
|
||||
};
|
||||
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")
|
||||
11
docker4BionxControl/main.cpp
Normal file
11
docker4BionxControl/main.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#include <QApplication>
|
||||
#include "MainWindow.hpp"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
MainWindow window;
|
||||
window.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
0
docker4BionxControl/runme.txt
Normal file
0
docker4BionxControl/runme.txt
Normal file
Reference in New Issue
Block a user