init
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
#!/bin/bash
|
||||
# run-qt.sh — Build and run the HCIE Qt6 image editor.
|
||||
#
|
||||
# Usage:
|
||||
# ./run-qt.sh — build + run
|
||||
# ./run-qt.sh build — build only
|
||||
# ./run-qt.sh run — run only (skip build)
|
||||
# ./run-qt.sh clean — clean build directory
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
QT_DIR="$SCRIPT_DIR/hcie-qt-app"
|
||||
BUILD_DIR="$QT_DIR/build"
|
||||
|
||||
# ── Colors ────────────────────────────────────────────────────────────────
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m'
|
||||
|
||||
info() { echo -e "${CYAN}[INFO]${NC} $*"; }
|
||||
ok() { echo -e "${GREEN}[OK]${NC} $*"; }
|
||||
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||
err() { echo -e "${RED}[ERROR]${NC} $*"; }
|
||||
|
||||
# ── Engine static library check ───────────────────────────────────────────
|
||||
ENGINE_LIB="$SCRIPT_DIR/target/debug/libhcie_engine_api.a"
|
||||
|
||||
ensure_engine_lib() {
|
||||
if [ ! -f "$ENGINE_LIB" ]; then
|
||||
warn "Engine static library not found at $ENGINE_LIB"
|
||||
info "Building engine with cargo..."
|
||||
cargo build -p hcie-engine-api 2>&1
|
||||
if [ ! -f "$ENGINE_LIB" ]; then
|
||||
err "Failed to build engine library. Aborting."
|
||||
exit 1
|
||||
fi
|
||||
ok "Engine library built."
|
||||
fi
|
||||
}
|
||||
|
||||
# ── Build ─────────────────────────────────────────────────────────────────
|
||||
do_build() {
|
||||
info "Ensuring engine static library exists..."
|
||||
ensure_engine_lib
|
||||
|
||||
info "Configuring CMake..."
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cmake -S "$QT_DIR" -B "$BUILD_DIR" \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
||||
|
||||
info "Building hcie-qt..."
|
||||
cmake --build "$BUILD_DIR" -j"$(nproc 2>/dev/null || echo 4)"
|
||||
|
||||
ok "Build complete: $BUILD_DIR/hcie-qt"
|
||||
}
|
||||
|
||||
# ── Run ───────────────────────────────────────────────────────────────────
|
||||
do_run() {
|
||||
BINARY="$BUILD_DIR/hcie-qt"
|
||||
if [ ! -f "$BINARY" ]; then
|
||||
err "Binary not found at $BINARY. Run './run-qt.sh build' first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect display server
|
||||
if [ -n "$DISPLAY" ] || [ -n "$WAYLAND_DISPLAY" ]; then
|
||||
info "Launching hcie-qt (windowed mode)..."
|
||||
exec "$BINARY" "$@"
|
||||
else
|
||||
info "No display detected. Launching in offscreen mode..."
|
||||
info "Press Ctrl+C to quit."
|
||||
QT_QPA_PLATFORM=offscreen exec "$BINARY" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# ── Clean ─────────────────────────────────────────────────────────────────
|
||||
do_clean() {
|
||||
info "Removing build directory..."
|
||||
rm -rf "$BUILD_DIR"
|
||||
ok "Clean complete."
|
||||
}
|
||||
|
||||
# ── Main ──────────────────────────────────────────────────────────────────
|
||||
ACTION="${1:-all}"
|
||||
|
||||
case "$ACTION" in
|
||||
build)
|
||||
do_build
|
||||
;;
|
||||
run)
|
||||
do_run
|
||||
;;
|
||||
clean)
|
||||
do_clean
|
||||
;;
|
||||
all|*)
|
||||
do_build
|
||||
echo ""
|
||||
do_run
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user