首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Xcode Project 與 Targets 的區別與配置關係

     編輯:程式設計綜合問答

核心概念

項目ProjectTargets
定義整個工程容器,包含所有源碼、資源、配置文件構建產物的具體「目標」,如 App、Framework、Unit Test、Extension 等
數量一個工作區通常只有一個 Project一個 Project 可包含**多個 Targets**(如主 App + Today Widget + Watch App)
配置範圍全局默認設置(部署目標、Swift 版本、簽名團隊等)針對性覆蓋/繼承 Project 設置(Bundle ID、Info.plist、編譯標誌、依賴庫等)

典型場景

  • 主 App Target:生成 .app,包含主界面、業務邏輯。
  • Framework Target:生成 .framework,供主 App 或其他 Target 復用代碼。
  • Unit/UI Test Target:運行測試,依賴主 App Target。
  • App Extension:如 Share Extension、Keyboard,獨立 Target 共享代碼。

配置繼承與覆蓋關係

  1. Target **默認繼承** Project 層面的 Build Settings。
  2. 在 Target 中修改某項設置,**僅影響該 Target**,Project 設置不變。
  3. 若多 Target 需共同設置,建議在 **Project 層面統一配置**,Target 保持繼承,避免重複維護。
  4. 例外:Product Bundle Identifier、Info.plist 路徑、Code Signing 等**必須在 Target 級單獨設置**,因為每個產物唯一。

實操建議

  • 通用編譯選項(警告等級、優化等級、Swift 版本、部署目標) → **Project 設置**。
  • Target 專屬標識、簽名、依賴、資源 → **Target 設置**。
  • 新增 Target 時,Xcode 會自動複製 Project 設置為初始值,隨後按需調整。

常見誤區

  • 以為修改 Project 設置需同步改所有 Target → **錯**,Target 繼承 Project,除非 Target 顯式覆蓋。
  • 將 Target 專屬配置(如 Bundle ID)寫在 Project → 導致多 Target 衝突。

總結

Project = 容器與默認值;Targets = 具體構建產物及其差異化配置。 善用繼承機制:通用配置放 Project,差異配置放 Target,構建清晰可維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved