如何切换Xcode语法高亮对应的活跃Target?
Xcode切换多Target文件的语法高亮目标方法
问题场景
我的项目包含多个二进制Target,部分文件同时属于多个Target。例如某文件包含如下Swift代码:
#if TARGET_APP eventParameters["app_container"] = "app" // 编辑器中显示灰色 #elseif TARGET_AUTOFILL eventParameters["app_container"] = "autofill" // 未显示灰色 #endif
该文件同时是App和App-AutoFill二进制Target的成员。两个Target的SWIFT_ACTIVE_COMPILATION_CONDITIONS构建设置分别配置为TARGET_APP和TARGET_AUTOFILL,以此实现App与自动填充扩展二进制包的运行时代码差异。
目前Xcode的语法高亮和索引基于App-AutoFillTarget,导致TARGET_APP分支代码变灰,而我希望将AppTarget设为语法高亮的默认目标,或能手动选择活跃Target。当前选中的Scheme构建AppTarget,并通过Embed Foundation Extensions构建阶段嵌入App-AutoFill产物。请问如何让Xcode切换语法高亮对应的Target?
解决方法
1. 直接在编辑器底部切换活跃Target
打开共享文件后,查看Xcode编辑器窗口底部右侧,会显示当前用于语法高亮的Target标识(比如显示App-AutoFill)。点击该标识,在弹出的下拉菜单中选择AppTarget,Xcode会立即切换该文件的语法高亮和索引规则,TARGET_APP分支代码就不会再显示灰色。
2. 调整Scheme的目标优先级
如果希望默认优先使用AppTarget做语法高亮,可以调整Scheme的配置:
- 顶部菜单栏选择「Product」→「Scheme」→「Edit Scheme...」
- 在弹出的窗口中切换到「Run」选项卡的「Info」标签,确保「Executable」选择的是
App - 切换到「Build」标签,将
AppTarget拖动到App-AutoFill的上方,让它成为优先构建的目标——Xcode通常会以Scheme中优先级更高的Target作为默认索引和语法高亮的依据。
3. 重置Xcode索引(缓存问题修复)
如果上述方法不生效,可能是索引缓存异常,可尝试重置:
- 关闭Xcode
- 删除项目对应的
DerivedData文件夹(路径可通过Xcode「偏好设置」→「Locations」查看) - 重新打开项目,Xcode会重新生成索引,此时会默认使用当前Scheme的主Target进行语法高亮。
内容的提问来源于stack exchange,提问作者lhunath
相关产品推荐
相关产品推荐

