Xcode编译App(一): 编译单个Target

编译单个 Target 过程 (以 AFNetworking 为例子)

转载请注明出处!!!

一、准备工作

Build target AFNetworking of project Pods with configuration Debug

1、CreateBuildDirectory (产品 Products 最终路径: Build/Products)

命令是 builtin-create-build-directory

// 创建 build products 文件夹
CreateBuildDirectory /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products (in target: AFNetworking)
    cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods
    builtin-create-build-directory /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products

AFNetworking 文件夹内容如下:

$ cd /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/AFNetworking 
$ tree
.
└── libAFNetworking.a

libAFNetworking.a就是最终生成的静态库

2、CreateBuildDirectory (产品 Products 中间文件路径: Build/Intermediates.noindexs)

命令是 builtin-create-build-directory

// 创建 build products 临时的文件夹
CreateBuildDirectory /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex (in target: AFNetworking)
    cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods
    builtin-create-build-directory /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex

AFNetworking.build 内容如下:

$ cd /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/AFNetworking.build 
$ tree
.
├── AFNetworking-all-non-framework-target-headers.hmap
├── AFNetworking-all-target-headers.hmap
├── AFNetworking-generated-files.hmap
├── AFNetworking-own-target-headers.hmap
├── AFNetworking-project-headers.hmap
├── AFNetworking.hmap
├── Objects-normal (这个是编程生成的对象文件.o存放的位置)
│   └── x86_64 (架构)
│       ├── AFAutoPurgingImageCache.d
│       ├── AFAutoPurgingImageCache.dia
│       ├── AFAutoPurgingImageCache.o
│       ├── AFHTTPSessionManager.d
│       ├── AFHTTPSessionManager.dia
│       ├── AFHTTPSessionManager.o
│       ├── AFImageDownloader.d
│       ├── AFImageDownloader.dia
│       ├── AFImageDownloader.o
│       ├── AFNetworkActivityIndicatorManager.d
│       ├── AFNetworkActivityIndicatorManager.dia
│       ├── AFNetworkActivityIndicatorManager.o
│       ├── AFNetworkReachabilityManager.d
│       ├── AFNetworkReachabilityManager.dia
│       ├── AFNetworkReachabilityManager.o
│       ├── AFNetworking-dummy.d
│       ├── AFNetworking-dummy.dia
│       ├── AFNetworking-dummy.o
│       ├── AFNetworking.LinkFileList
│       ├── AFSecurityPolicy.d
│       ├── AFSecurityPolicy.dia
│       ├── AFSecurityPolicy.o
│       ├── AFURLRequestSerialization.d
│       ├── AFURLRequestSerialization.dia
│       ├── AFURLRequestSerialization.o
│       ├── AFURLResponseSerialization.d
│       ├── AFURLResponseSerialization.dia
│       ├── AFURLResponseSerialization.o
│       ├── AFURLSessionManager.d
│       ├── AFURLSessionManager.dia
│       ├── AFURLSessionManager.o
│       ├── UIActivityIndicatorView+AFNetworking.d
│       ├── UIActivityIndicatorView+AFNetworking.dia
│       ├── UIActivityIndicatorView+AFNetworking.o
│       ├── UIButton+AFNetworking.d
│       ├── UIButton+AFNetworking.dia
│       ├── UIButton+AFNetworking.o
│       ├── UIImageView+AFNetworking.d
│       ├── UIImageView+AFNetworking.dia
│       ├── UIImageView+AFNetworking.o
│       ├── UIProgressView+AFNetworking.d
│       ├── UIProgressView+AFNetworking.dia
│       ├── UIProgressView+AFNetworking.o
│       ├── UIRefreshControl+AFNetworking.d
│       ├── UIRefreshControl+AFNetworking.dia
│       ├── UIRefreshControl+AFNetworking.o
│       ├── UIWebView+AFNetworking.d
│       ├── UIWebView+AFNetworking.dia
│       └── UIWebView+AFNetworking.o
└── all-product-headers.yaml
  • AFNetworking.LinkFileList: 存储的生成.a静态库所需要链接的对象文件.o
  • 每一个类都三个文件 .d.dia.o

补充介绍:每一个类都会生成 .d .dia .o 这三个文件

  • .d: 表示这个类所依赖的其他类,即使用import导入的头文件,会自动寻找所有的依赖头文件,包含多级依赖 (a依赖bb又依赖c,那么最终a也会依赖c)
  • .dia: 是diagnose的简写,就是诊断的意思,我们在Xcode写的源代码,经过编译的时候有时候会生成一些警告信息,都是放到这里面的
  • .o: 对象文件,.m经过编译生成.o文件,用来链接到静态库/可执行文件中

UIWebView+AFNetworking.d: 打开内容如下:

dependencies: \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Target\ Support\ Files/AFNetworking/AFNetworking-prefix.pch \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/AFNetworking/AFCompatibilityMacros.h \
  /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h

补充 ,使用 clang 来编译文件的一些命令如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值