Target在build中的控制

XcodeProject editor中的Build SettingBuild PhasesBuild Rules用来控制整个编译过程

Build Phases

构建可执行文件规则。

Target Dependencies
指定target的依赖项目,在targrt build之前需要先build的依赖

Compile Source
指定所有必须编译的文件,这些文件会根据build SettingBuilsd Rules里的设置来处理

Link Binary With Libraries
列出所有的静态库和动态库,和编译生成文件进行链接

Copy Bundle Resources
指定要copy的资源文件

Build Rules

指定不同文件类型如何编译。每条build rule 指定了该类型怎么处理立即输出在哪。可以增加一条新规则对特定类型文件类型添加处理方法

Build Setting

build的过程中各个阶段的选项的设置

pbxproj工程文件

.xcodeproj包中的工程文件project.pbxproj里包含了build过程中的设置.

  1. 在这个文件中,首先找到rootObject的值 rootObject = CFE011DA22409055007FEEDD /* Project object */;
  2. 根据CFE011DA22409055007FEEDD代表的proect找到这个工程,这里面包括了部分这个工程的信息 /* Begin PBXProject section */
    CFE011DA22409055007FEEDD /* Project object */ = {
    isa = PBXProject;
    attributes = {
    LastUpgradeCheck = 1010;
    ORGANIZATIONNAME = universalCertification;
    TargetAttributes = {
    CFE011E122409055007FEEDD = {
    CreatedOnToolsVersion = 10.1;
    };
    };
    };
    buildConfigurationList = CFE011DD22409055007FEEDD /* Build configuration list for PBXProject "RSSReader" */;
    compatibilityVersion = "Xcode 9.3";
    developmentRegion = en;
    hasScannedForEncodings = 0;
    knownRegions = (
    en,
    Base,
    );
    mainGroup = CFE011D922409055007FEEDD;
    productRefGroup = CFE011E322409055007FEEDD /* Products */;
    projectDirPath = "";
    projectRoot = "";
    targets = (
    CFE011E122409055007FEEDD /* RSSReader */,
    );
    };
    /* End PBXProject section */
  3. 然后根据工程中的targets可以找到对应target /* Begin PBXNativeTarget section */
    CFE011E122409055007FEEDD /* RSSReader */ = {
    isa = PBXNativeTarget;
    buildConfigurationList = CFE011F822409056007FEEDD /* Build configuration list for PBXNativeTarget "RSSReader" */;
    buildPhases = (
    47F7B3ABDF3263B6EDCA68AD /* [CP] Check Pods Manifest.lock */,
    CFE011DE22409055007FEEDD /* Sources */,
    CFE011DF22409055007FEEDD /* Frameworks */,
    CFE011E022409055007FEEDD /* Resources */,
    );
    buildRules = (
    );
    dependencies = (
    );
    name = RSSReader;
    productName = RSSReader;
    productReference = CFE011E222409055007FEEDD /* RSSReader.app */;
    productType = "com.apple.product-type.application";
    };
    /* End PBXNativeTarget section */
  4. 可以根据这些信息查看更详细的编译信息
    比如: buildConfigurationList指向了debug和release的详细配置信息