VoiceInput/Makefile
JOJO 1d9c9d5fa0 feat: macOS 菜单栏语音输入应用初始版本
- CGEvent cghidEventTap 全局监听 Fn 键
- Apple Speech 流式语音识别(zh-CN 默认)
- 实时音频 RMS 电平驱动波形动画
- NSPanel 胶囊浮动窗口
- 剪贴板 + Cmd+V 文本注入,CJK 输入法自动切换
- OpenAI 兼容 LLM 纠错(DeepSeek 预设)
- LSUIElement 菜单栏运行
- SPM + Makefile 构建
2026-04-24 16:17:57 +08:00

85 lines
2.8 KiB
Makefile

# VoiceInput Makefile
# macOS 14+ 菜单栏语音输入应用
APP_NAME := VoiceInput
BUILD_DIR := .build
RELEASE_DIR := $(BUILD_DIR)/release
PRODUCT := $(RELEASE_DIR)/$(APP_NAME)
APP_BUNDLE := $(RELEASE_DIR)/$(APP_NAME).app
INSTALL_DIR := /Applications/$(APP_NAME).app
ENTITLEMENTS := Sources/Resources/VoiceInput.entitlements
.PHONY: all build run install clean debug release
all: build
# ============================================================
# Build
# ============================================================
build: debug
debug:
@echo "🔨 Building Debug..."
swift build -c debug --disable-sandbox
@echo "📦 Creating app bundle..."
@./scripts/create_app_bundle.sh debug
@echo "✅ Build complete: $(APP_BUNDLE)"
release:
@echo "🔨 Building Release..."
swift build -c release --disable-sandbox
@echo "📦 Creating app bundle..."
@./scripts/create_app_bundle.sh release
@echo "✅ Release build complete: $(APP_BUNDLE)"
# ============================================================
# Run
# ============================================================
run: debug
@echo "🚀 Launching..."
open $(APP_BUNDLE)
# ============================================================
# Install
# ============================================================
install: release
@echo "📥 Installing to $(INSTALL_DIR)..."
@if [ -d "$(INSTALL_DIR)" ]; then rm -rf "$(INSTALL_DIR)"; fi
cp -R $(APP_BUNDLE) $(INSTALL_DIR)
@echo "✅ Installed to $(INSTALL_DIR)"
# ============================================================
# Clean
# ============================================================
clean:
@echo "🧹 Cleaning..."
swift package clean
rm -rf $(RELEASE_DIR)
@echo "✅ Clean"
# ============================================================
# Entitlements
# ============================================================
entitlements: $(ENTITLEMENTS)
$(ENTITLEMENTS):
@mkdir -p Sources/Resources
@echo '<?xml version="1.0" encoding="UTF-8"?>' > $(ENTITLEMENTS)
@echo '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> $(ENTITLEMENTS)
@echo '<plist version="1.0">' >> $(ENTITLEMENTS)
@echo '<dict>' >> $(ENTITLEMENTS)
@echo ' <key>com.apple.security.device.audio-input</key>' >> $(ENTITLEMENTS)
@echo ' <true/>' >> $(ENTITLEMENTS)
@echo ' <key>com.apple.security.cs.disable-library-validation</key>' >> $(ENTITLEMENTS)
@echo ' <true/>' >> $(ENTITLEMENTS)
@echo '</dict>' >> $(ENTITLEMENTS)
@echo '</plist>' >> $(ENTITLEMENTS)
# ============================================================
# Codesign (ad-hoc)
# ============================================================
sign: release
@echo "🔏 Signing..."
codesign --force --deep --sign - $(APP_BUNDLE)
@echo "✅ Signed (ad-hoc)"