added docker
This commit is contained in:
24
docker4Bionx/CMakeLists.txt
Normal file
24
docker4Bionx/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
docker4Bionx/Dockerfile
Normal file
34
docker4Bionx/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
docker4Bionx/MainWindow.cpp
Normal file
17
docker4Bionx/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
docker4Bionx/MainWindow.hpp
Normal file
14
docker4Bionx/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
docker4Bionx/aarch64-toolchain.cmake
Normal file
25
docker4Bionx/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
docker4Bionx/main.cpp
Normal file
11
docker4Bionx/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();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user