一直对用CLI编译工程有兴趣,趁着春节假期跟着苹果文档玩一玩。
How do I build my projects from the command line?
基本介绍
xcodebuild
是一个CLI工具,可以用来对iOS工程执行编译、查询工程信息、分析、执行测试用例以及打包。这个命令的作用对象有两个,一个是project中的target或是workspace中的scheme。
一级操作对象 | 二级操作对象 |
---|---|
workspace | scheme |
project | target |
xcodebuild对输出结果的保存路径保持与Xcode中一致,也就是Xcode > Preferences > Locations
这些执行任务时用的参数可以在man page中查看详细,不过这篇文档中的参数很简单,字面意思就可以理解。
在执行xcodebuild命令前,记得先切换到你的project或是workspace目录中。
编译workspace中的scheme
首先可以通过下面的命令查看有哪些scheme可以执行
xcodebuild -list -workspace <your_workspace_name>.xcworkspace
xcodebuild -list -workspace <your_workspace_name>.xcworkspace
然后选择一个需要的scheme就可以编译了
xcodebuild -scheme <your_scheme_name> build
编译project中的target
首先查看有哪些target可以被执行
xcodebuild -list -project <your_project_name>. xcodeproj
xcodebuild -list -project <your_project_name>. xcodeproj
然后选择一个需要的target和xcconfig就可以编译了
xcodebuild -target pag-ios -xcconfig Debug.xcconfig build
声明:
xcodebuild支持build/analyze/archive指令,它们可以被用在target或是scheme,但是如果什么指令都没有被传入,那么默认只是build指令。
构建系统#
编译系统的组织关系上图展示了工程构建的管理和组织关系,workspace的构建由project和scheme管理和组织。
- workspace 管理project
- projects 管理工程源代码和资源
-
schemes scheme是针对target,用来指定target的构建行为(编译、运行、测试、性能诊断、分析、出包)的,target和scheme是一对多或一对一的关系。
-action 指定构建、运行、测试、性能分析、静态分析、出包的配置以及其他环境变量。如下图
action - target 描述如何构建、构建阶段编译器的参数配置以及构建规则的制定。一个project可以包含多个target,比如包含了iOS和watchOS以及extension。
- build setting 指定构建阶段所需要的各个参数信息
- build phase 指定构建target的任务,例如哪些源码需要加入编译、源码编译顺序、以及决定拷贝哪些文件、执行编译结束后launch前的自定义脚本等
-
build configurations 提供给各个ation指定各种变量的声明,默认情况下有debug和release两种。
build configurations
默认情况下,工程会有debug和release两种configuration。当然可以做增删改操作。
action中选择build configuration
action中选择build configuration,并针对各个不同configuration设置不同环境变量。 -
build rules 这个配置通常比较少用。他用来指定编译特定文件的规则,大多数常见文件类型都存在于默认构建规则中,当然可以自定义这些构建规则。配置构建规则时需要处理文件类型;编译器、工具或是自定义脚本;当然还有编译文件的输出位置。
build rules - build configurations files(xcconfig) 配置文件也成为构建配置文件,是一个纯文本文件,用于定义项目或目标的特定构建配置的构建设置。这种类型的文件可以在 Xcode 之外进行编辑,并且可以很好地与源代码控制系统集成。
网友评论