95 lines
3.3 KiB
Makefile
95 lines
3.3 KiB
Makefile
# 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
|
|
# CRITICAL FIX: 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 |