跳到主要内容

Build Settings 怎么看:Levels、继承关系和常用设置

Xcode Build Settings 分目标、工程、xcconfig、默认值几层,层级视图能看出哪层覆盖了谁。讲继承关系、在 VS Code 里查看修改,附常用设置速查表。

Xcode 的 Build Settings 是分层的:同一个设置可以在默认值、xcconfig 文件、工程(Project)、目标(Target)几层分别写,最终生效的是优先级最高那一层的值。看懂它的关键是「层级(Levels)」视图:每一层写了什么、最后解析出来的是什么,一眼就能看出哪一层覆盖了谁。在 VS Code 里装好免费插件快蝎(KXApp),打开工程设置就能看到和 Xcode 一样的「通用」「构建设置」页和层级视图,也能直接修改。这篇讲层级的继承关系、怎么在 VS Code 里查看和修改,以及最常用的十几个设置,截至 2026 年 10 月,适用 Xcode 16 及以上。

开始前准备:Mac 上已安装 Xcode,VS Code 或 Cursor 里装好快蝎插件(扩展视图搜索 kxapp,详见安装页),并打开了你的 Xcode 工程文件夹。

层级和继承关系

优先级从高到低:

层级 写在哪里 说明
目标(Target) project.pbxproj 里这个 target 的设置 只影响这个 target,优先级最高
目标的 xcconfig target 指定的 .xcconfig 文件 多个 target 或多人共用设置时常用
工程(Project) project.pbxproj 里工程级的设置 对所有 target 生效,除非 target 另写
工程的 xcconfig 工程指定的 .xcconfig 文件 工程级的共用设置
默认(iOS Default) Xcode 内置 什么都没写时用它

上一层没写时继承下一层;写了就覆盖。值里写 $(inherited) 表示「在下一层的值基础上追加」,常见于 OTHER_LDFLAGS、HEADER_SEARCH_PATHS 这类列表设置。每一层还可以按构建配置(Debug / Release)分别写不同的值。

完整说明见 Apple 文档 Build settings reference。

在 VS Code 里打开工程设置

三种方式都可以:

  1. 在 Xcode 工程视图里右键工程,选「编辑工程设置」;右键某个 target,选「编辑目标设置」。
  2. 在资源管理器里打开 project.pbxproj,会用工程设置编辑器打开。
  3. 命令面板运行「kxapp: 工程设置…」。

编辑器分「通用」(General)和「构建设置」(Build Settings)两页。通用页是标识、部署信息、签名等常用项。

在 VS Code 里查看工程的通用设置

用层级视图找出生效的值

切到「构建设置」页,在左侧「工程」「目标」两栏里选要看的工程或 target,再选「层级」视图:每个设置一行,列出最终的「解析值」,以及目标、目标 xcconfig、工程、工程 xcconfig、默认几层各自的值(看工程这一层时只有工程 xcconfig、工程、默认三层)。哪一层有值、哪一层覆盖了谁,一眼就能看清。

顶部有两组按钮,另有「配置」下拉和「搜索构建设置」框:

  • 筛选「基本」/「已自定义」/「全部」:「基本」只看常用设置,「全部」看全部设置;「已自定义」只看当前这一层(目标或工程)写了值的设置,排查「谁改了这个设置」最快。
  • 视图「合并」/「层级」:「合并」只看每个设置最终的值(「设置」「解析值」两列),和 Xcode 的 Combined 一样;「层级」就是上面的逐层视图。
  • 「配置」下拉(所有配置 / Debug / Release,工程有多个构建配置时显示):Debug 和 Release 的值不同时,分别查看。

修改设置

  • 直接改值;枚举类型的设置用下拉框选,和 Xcode 一样。
  • 可以只改某个构建配置(如只改 Release),也可以所有配置一起改。
  • 右键选「添加用户自定义设置」,加自己的设置名,代码或 Info.plist 里用 $(MY_SETTING) 引用。
  • 不需要的值右键「删除设置」,恢复为继承下一层;「复制设置名」「复制值」方便贴到文档或 xcconfig 里。

保存时只改动你改过的设置,用 git diff 能清楚看到改了哪几行。

修改工程设置需要 xcodeproj 组件:第一次用到时插件会提示一键安装,也可以在终端运行 gem install --user-install xcodeproj。用 rbenv、rvm 管理 Ruby 时,把对应 ruby 的路径填进设置 kxapp.rubyPath。

常用设置速查

设置名 界面上的名字 含义
PRODUCT_BUNDLE_IDENTIFIER Product Bundle Identifier Bundle ID,App 的唯一标识,要和描述文件一致
PRODUCT_NAME Product Name 产物名,默认也是 App 显示名的来源
MARKETING_VERSION Marketing Version 版本号(如 1.2.0),对应 Info.plist 的 CFBundleShortVersionString
CURRENT_PROJECT_VERSION Current Project Version 构建号,对应 CFBundleVersion,每次上传要递增
IPHONEOS_DEPLOYMENT_TARGET iOS Deployment Target 最低支持的 iOS 版本
TARGETED_DEVICE_FAMILY Targeted Device Families 支持 iPhone、iPad 还是两者
CODE_SIGN_STYLE Code Signing Style Automatic 自动签名 / Manual 手动签名
DEVELOPMENT_TEAM Development Team 签名用的团队 ID
CODE_SIGN_ENTITLEMENTS Code Signing Entitlements entitlements 文件路径
INFOPLIST_FILE Info.plist File Info.plist 文件路径
SWIFT_VERSION Swift Language Version Swift 语言模式(如 5、6)
SWIFT_ACTIVE_COMPILATION_CONDITIONS Active Compilation Conditions 条件编译标记,如 Debug 下的 DEBUG
OTHER_LDFLAGS Other Linker Flags 额外的链接参数,如 -ObjC
ENABLE_BITCODE 等旧设置 — 新版 Xcode 已不再使用,可以删掉

常见问题

改了设置但构建结果没变?

先在层级视图里看「解析值」是不是你改的那个:很可能更高一层(比如 target)另写了值把它覆盖了。确认无误后,用 Xcode 工程视图「…」里的「清理构建目录」再构建。

Debug 和 Release 的值为什么不一样?

每一层都可以按构建配置分别写。在「构建设置」页用「配置」下拉分别查看,或修改时选「所有配置」让两者一致。

在 VS Code 里改的设置,Xcode 能看到吗?

能。改的就是同一个 project.pbxproj,格式和 Xcode 写出来的一致,回到 Xcode 打开完全一样。

保存时报错怎么办?

多半是缺少 xcodeproj 组件。在终端运行 ruby -e 'require "xcodeproj"' 报错时,运行插件命令「安装 xcodeproj Ruby gem」或 gem install --user-install xcodeproj,详见问题排查。