# host/Makefile QT_ANDROID_KIT ?= $(HOME)/Qt/6.8.3/android_arm64_v8a QT_IOS_KIT ?= $(HOME)/Qt/6.8.3/ios QT_MACOS_PATH ?= /opt/homebrew/opt/qt@6 QT_WIN_PATH ?= C:/Qt/6.8.3/msvc2019_64 BUILD_DIR_MACOS = build_macos BUILD_DIR_WIN = build_windows BUILD_DIR_ANDROID = build_android BUILD_DIR_IOS = build_ios TARGET = EISConfigurator # Android Specifics PKG_NAME = org.qtproject.example.EISConfigurator # Qt6 generates 'android-build-debug.apk' by default APK_PATH = $(BUILD_DIR_ANDROID)/android-build/build/outputs/apk/debug/android-build-debug.apk all: macos desktop: macos macos: @echo "Building for macOS (Apple Silicon)..." @mkdir -p $(BUILD_DIR_MACOS) @cd $(BUILD_DIR_MACOS) && cmake .. \ -DCMAKE_PREFIX_PATH="$(QT_MACOS_PATH);/opt/homebrew" \ -DCMAKE_BUILD_TYPE=Release @$(MAKE) -C $(BUILD_DIR_MACOS) @echo "Build Complete. Run with: open $(BUILD_DIR_MACOS)/$(TARGET).app" windows: @echo "Building for Windows..." @mkdir -p $(BUILD_DIR_WIN) @cd $(BUILD_DIR_WIN) && cmake .. \ -DCMAKE_PREFIX_PATH="$(QT_WIN_PATH)" \ -DCMAKE_BUILD_TYPE=Release @cmake --build $(BUILD_DIR_WIN) android: @if [ ! -d "$(QT_ANDROID_KIT)" ]; then echo "Error: QT_ANDROID_KIT not found at $(QT_ANDROID_KIT)"; exit 1; fi @mkdir -p $(BUILD_DIR_ANDROID) @cd $(BUILD_DIR_ANDROID) && cmake .. \ -DCMAKE_TOOLCHAIN_FILE=$(QT_ANDROID_KIT)/lib/cmake/Qt6/qt.toolchain.cmake \ -DQT_ANDROID_ABIS="arm64-v8a" \ -DANDROID_PLATFORM=android-24 \ -DQT_ANDROID_BUILD_ALL_ABIS=OFF \ -DBUILD_ANDROID=ON \ -DCMAKE_BUILD_TYPE=Debug @cmake --build $(BUILD_DIR_ANDROID) --target apk @echo "APK generated at $(APK_PATH)" ios: @if [ ! -d "$(QT_IOS_KIT)" ]; then echo "Error: QT_IOS_KIT not found at $(QT_IOS_KIT)"; exit 1; fi @mkdir -p $(BUILD_DIR_IOS) @echo "Configuring iOS CMake..." @cd $(BUILD_DIR_IOS) && cmake .. -G Xcode \ -DCMAKE_TOOLCHAIN_FILE=$(QT_IOS_KIT)/lib/cmake/Qt6/qt.toolchain.cmake \ -DCMAKE_SYSTEM_NAME=iOS \ -DCMAKE_OSX_DEPLOYMENT_TARGET=16.0 \ -DBUILD_IOS=ON @echo "iOS Project generated at $(BUILD_DIR_IOS)/$(TARGET).xcodeproj" run: @open $(BUILD_DIR_MACOS)/$(TARGET).app # --- Android Deployment Wrappers --- install_android: android @echo "Installing $(APK_PATH) to device..." @adb install -r $(APK_PATH) run_android: install_android @echo "Launching $(PKG_NAME)..." @adb shell am start -n $(PKG_NAME)/org.qtproject.qt.android.bindings.QtActivity debug_android: run_android @echo "Attaching Logcat (Ctrl+C to exit)..." @adb logcat -v color -s EISConfigurator Qt:* DEBUG # --- Cleaning --- clean: @echo "Cleaning build artifacts..." @if [ -f "$(BUILD_DIR_MACOS)/Makefile" ]; then cmake --build $(BUILD_DIR_MACOS) --target clean; fi @if [ -f "$(BUILD_DIR_WIN)/Makefile" ] || [ -f "$(BUILD_DIR_WIN)/build.ninja" ]; then cmake --build $(BUILD_DIR_WIN) --target clean; fi @if [ -f "$(BUILD_DIR_ANDROID)/Makefile" ] || [ -f "$(BUILD_DIR_ANDROID)/build.ninja" ]; then cmake --build $(BUILD_DIR_ANDROID) --target clean; fi @if [ -d "$(BUILD_DIR_IOS)/$(TARGET).xcodeproj" ]; then cmake --build $(BUILD_DIR_IOS) --target clean; fi distclean: @rm -rf $(BUILD_DIR_MACOS) $(BUILD_DIR_WIN) $(BUILD_DIR_ANDROID) $(BUILD_DIR_IOS) @echo "Removed all build directories." .PHONY: all desktop macos windows android ios run install_android run_android debug_android clean distclean