You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CMake构建独立watchOS应用

CMake 构建独立watchOS应用实现方案

前置版本要求

先确认本地CMake版本不低于3.28,低版本对watchOS SDK识别、平台属性映射存在已知缺陷,即便iOS/macOS/tvOS配置正常,低版本也无法正确处理watchOS的专属构建参数。

基础平台配置(必须放在project()声明之前)

set(CMAKE_SYSTEM_NAME watchOS)
set(CMAKE_OSX_DEPLOYMENT_TARGET "9.0" CACHE STRING "Minimum watchOS deployment version" FORCE)
# 真机构建用arm64架构,模拟器构建替换为x86_64/arm64即可
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Build architectures for watchOS" FORCE)
# 真机SDK配置,模拟器构建替换为watchsimulator
set(CMAKE_OSX_SYSROOT watchos CACHE STRING "watchOS device SDK" FORCE)

独立watchOS应用Target专属配置

这部分是和其他苹果平台构建的核心差异,缺项就会导致构建失败或者产物不符合独立应用要求:

  • 必须给可执行Target设置XCODE_ATTRIBUTE_WATCHOS_APP_ONLY=YES,这是Xcode识别独立watchOS应用的核心开关,不设置会默认判定为依附iOS主应用的附属扩展
  • 必须设置XCODE_ATTRIBUTE_SKIP_INSTALL=NO,否则构建产物无法完成签名打包
  • Info.plist必须包含WKApplication=true、WKWatchOnly=true字段,不能添加WKCompanionAppBundleIdentifier字段,否则会被判定为非独立应用
  • 不要链接UIKit等iOS专属框架,必须链接watchOS专属的WatchKit框架
  • 不要复用iOS平台的签名配置,watchOS独立应用需要独立的Bundle ID和签名证书,不能挂靠在iOS应用的Bundle ID下

最小可用Target配置示例

add_executable(MyWatchApp
    src/main.swift
    src/ContentView.swift
    Assets.xcassets
)

set_target_properties(MyWatchApp PROPERTIES
    MACOSX_BUNDLE TRUE
    MACOSX_BUNDLE_GUI_IDENTIFIER "com.yourdomain.mywatchapp"
    XCODE_ATTRIBUTE_WATCHOS_APP_ONLY YES
    XCODE_ATTRIBUTE_SKIP_INSTALL NO
    XCODE_ATTRIBUTE_WATCHOS_DEPLOYMENT_TARGET ${CMAKE_OSX_DEPLOYMENT_TARGET}
    XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development"
    XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon"
    XCODE_ATTRIBUTE_GENERATE_INFOPLIST_FILE YES
    XCODE_ATTRIBUTE_INFOPLIST_KEY_WKApplication YES
    XCODE_ATTRIBUTE_INFOPLIST_KEY_WKWatchOnly YES
)

target_link_libraries(MyWatchApp PRIVATE
    "-framework WatchKit"
    "-framework SwiftUI"
)

常见踩坑说明

  • 生成器必须选Xcode(即构建时加-G Xcode参数),Ninja等其他生成器目前对watchOS的签名、资源打包流程支持不全,会出现编译成功但无法安装到设备/模拟器的问题
  • 资源目录中的AppIcon必须严格匹配watchOS对应尺寸要求,同时通过XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME明确指定图标集名称,否则构建完成后会报图标缺失错误
  • 如果需要同时构建真机和模拟器产物,不要在同一次CMake配置中切换架构/SDK,需要分两个独立构建目录分别配置

内容的提问来源于stack exchange,提问作者Abhi_M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 16:54:21