feat(tauri): 맥에서도 빌드되게 Win32 모듈을 cfg(windows) 로 분리

windows crate 를 Windows 타깃 전용 의존성으로 옮기고, paste/capture 는 다른 OS 에서
같은 API 의 껍데기(_stub)로 컴파일. hwnd 접근은 window::native_handle 하나로.
Windows 동작은 그대로. 맥에선 붙여넣기·영역 캡처가 'Windows 에서만 됨'으로 응답.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-16 21:24:17 +09:00
co-authored by Claude Fable 5.1
parent 54f75aa089
commit 506fbf601d
8 changed files with 787 additions and 738 deletions
+39 -36
View File
@@ -1,36 +1,39 @@
[package]
name = "codeassist-tauri"
version = "0.1.0"
description = "CodeAssist 표준 Rust/Tauri 데스크톱 앱"
authors = ["justdodev"]
edition = "2021"
[lib]
# `_lib` 접미사는 Windows 에서 bin 이름과 충돌 안 나게 하려는 것 (rust-lang/cargo#8519)
name = "codeassist_tauri_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
# tray-icon: 트레이 상주 / image-png: 트레이 아이콘을 png 로 얹기
tauri = { version = "2", features = ["tray-icon", "image-png"] }
tauri-plugin-global-shortcut = "2" # 전역 핫키 (.NET HotKeyService 대체)
tauri-plugin-single-instance = "2" # 단일 인스턴스 (.NET SingleInstanceGuard 대체)
tauri-plugin-window-state = "2" # 창 위치·크기 저장 (.NET JsonWindowPlacementStore 대체)
serde = { version = "1", features = ["derive"] }
serde_json = "1"
rusqlite = { version = "0.32.1", features = ["bundled"] }
base64 = "0.22"
png = "0.17"
windows = { version = "0.61.3", features = [
"Win32_Foundation",
"Win32_Graphics_Gdi",
"Win32_System_LibraryLoader",
"Win32_System_DataExchange",
"Win32_System_Memory",
"Win32_System_Threading",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_UI_WindowsAndMessaging",
] }
[package]
name = "codeassist-tauri"
version = "0.1.0"
description = "CodeAssist 표준 Rust/Tauri 데스크톱 앱"
authors = ["justdodev"]
edition = "2021"
[lib]
# `_lib` 접미사는 Windows 에서 bin 이름과 충돌 안 나게 하려는 것 (rust-lang/cargo#8519)
name = "codeassist_tauri_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
# tray-icon: 트레이 상주 / image-png: 트레이 아이콘을 png 로 얹기
tauri = { version = "2", features = ["tray-icon", "image-png"] }
tauri-plugin-global-shortcut = "2" # 전역 핫키 (.NET HotKeyService 대체)
tauri-plugin-single-instance = "2" # 단일 인스턴스 (.NET SingleInstanceGuard 대체)
tauri-plugin-window-state = "2" # 창 위치·크기 저장 (.NET JsonWindowPlacementStore 대체)
serde = { version = "1", features = ["derive"] }
serde_json = "1"
rusqlite = { version = "0.32.1", features = ["bundled"] }
base64 = "0.22"
png = "0.17"
# Win32 (붙여넣기·영역 캡처) — Windows 빌드에서만. 맥/리눅스는 shell/*_stub.rs 껍데기.
[target.'cfg(windows)'.dependencies]
windows = { version = "0.61.3", features = [
"Win32_Foundation",
"Win32_Graphics_Gdi",
"Win32_System_LibraryLoader",
"Win32_System_DataExchange",
"Win32_System_Memory",
"Win32_System_Threading",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_UI_WindowsAndMessaging",
] }