Dateien, die als Parameter übergeben werden, werden nach dem Start direkt geladen

This commit is contained in:
2026-08-25 14:56:27 +02:00
parent 7264b68f11
commit 04c5212d54
78 changed files with 9528 additions and 0 deletions

133
barecode/bauen.sh Executable file
View File

@@ -0,0 +1,133 @@
#!/bin/bash
# ---------------------------------------------------------------------------
# BareCode Build-Skript
# Verwendung: ./bauen.sh [release|debug|clean|install]
# ---------------------------------------------------------------------------
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
BUILD_TYPE="${1:-release}"
BUILD_DIR="build"
# Farben
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
info() { echo -e "${BLUE}==>${NC} $1"; }
success() { echo -e "${GREEN}==>${NC} $1"; }
warn() { echo -e "${YELLOW}==>${NC} $1"; }
error() { echo -e "${RED}==>${NC} $1"; exit 1; }
# ---------------------------------------------------------------------------
# clean
# ---------------------------------------------------------------------------
if [ "$BUILD_TYPE" = "clean" ]; then
info "Build-Verzeichnis wird gelöscht…"
rm -rf "$BUILD_DIR"
success "Fertig."
exit 0
fi
# ---------------------------------------------------------------------------
# Abhängigkeiten prüfen
# ---------------------------------------------------------------------------
info "Prüfe Abhängigkeiten…"
command -v cmake &>/dev/null || error "cmake nicht gefunden. Installation: sudo pacman -S cmake"
command -v ninja &>/dev/null || error "ninja nicht gefunden. Installation: sudo pacman -S ninja"
command -v lrelease &>/dev/null || \
command -v lrelease-qt6 &>/dev/null || \
error "lrelease nicht gefunden. Installation: sudo pacman -S qt6-tools"
# Qt6 prüfen
if ! pkg-config --exists Qt6Core 2>/dev/null; then
if ! cmake --find-package -DNAME=Qt6 -DCOMPILER_ID=GNU \
-DLANGUAGE=CXX -DMODE=EXIST &>/dev/null 2>&1; then
warn "Qt6 konnte nicht automatisch geprüft werden — cmake wird es versuchen."
fi
fi
success "Abhängigkeiten OK."
# ---------------------------------------------------------------------------
# CMake-Build-Typ
# ---------------------------------------------------------------------------
case "$BUILD_TYPE" in
release|Release)
CMAKE_BUILD_TYPE="Release"
;;
debug|Debug)
CMAKE_BUILD_TYPE="Debug"
;;
install)
CMAKE_BUILD_TYPE="Release"
;;
*)
error "Unbekannter Build-Typ: '$BUILD_TYPE'. Erlaubt: release, debug, clean, install"
;;
esac
# ---------------------------------------------------------------------------
# Konfigurieren
# ---------------------------------------------------------------------------
info "Konfiguriere mit CMake (${CMAKE_BUILD_TYPE})…"
cmake -B "$BUILD_DIR" \
-G Ninja \
-DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
2>&1 || error "CMake-Konfiguration fehlgeschlagen."
success "Konfiguration OK."
# ---------------------------------------------------------------------------
# Bauen
# ---------------------------------------------------------------------------
JOBS=$(nproc 2>/dev/null || sysctl -n hw.logicalcpu 2>/dev/null || echo 4)
info "Baue mit $JOBS parallelen Jobs…"
cmake --build "$BUILD_DIR" -j"$JOBS" 2>&1 || error "Build fehlgeschlagen."
success "Build erfolgreich!"
# ---------------------------------------------------------------------------
# Installieren (optional)
# ---------------------------------------------------------------------------
if [ "$BUILD_TYPE" = "install" ]; then
info "Installiere nach /usr (sudo erforderlich)…"
sudo cmake --install "$BUILD_DIR" || error "Installation fehlgeschlagen."
success "BareCode wurde installiert."
echo ""
echo " Starten: BareCode"
exit 0
fi
# ---------------------------------------------------------------------------
# Fertig
# ---------------------------------------------------------------------------
BINARY="$BUILD_DIR/BareCode"
if [ -f "$BINARY" ]; then
# .qm-Dateien neben die Binary kopieren damit sie gefunden werden
mkdir -p "$BUILD_DIR/translations"
if compgen -G "$BUILD_DIR/translations/barecode_*.qm" > /dev/null 2>&1; then
success "Übersetzungen bereits vorhanden."
else
# Aus dem cmake-Zwischenverzeichnis holen
find "$BUILD_DIR" -name "barecode_*.qm" -not -path "$BUILD_DIR/translations/*" \
-exec cp {} "$BUILD_DIR/translations/" \; 2>/dev/null || true
fi
echo ""
success "BareCode ist bereit:"
echo " Starten: ./$BINARY"
echo " Installieren: ./bauen.sh install"
echo " Debug-Build: ./bauen.sh debug"
echo " Aufräumen: ./bauen.sh clean"
fi