好吧,我对Xcode的构建过程很好奇。设置多个目标,如何自动化版本控制,以及大致了解系统,以便我可以操纵它来做我想做的事情。有没有人有书或者可以给我指一些文档,这样我就可以弄清楚这一切?非常感谢。还有一件事,如果有人真的看到这一点,因为改变它。但是任何人都知道的任何一本书都会关注Xcode 4吗?有Xcode 3的释放,但我真的很好奇是否有任何一本书会大量关注Xcode 4。
wz3gfoph1#
有一件事对于一致的,可重复的,一个自动构建是xcodebuild命令的知识。遗憾的是,除了手册页,我找不到任何关于它的官方文档(类型为man xcodebuild)。这里有一个关于自动化iPhone构建here的有用指南,包括使用xcodebuild构建和使用agvtool进行版本控制。这与Mac应用程序的一般构建同样相关。一般来说,使用xcodebuild进行构建非常简单:
xcodebuild
man xcodebuild
agvtool
cd project_dir xcodebuild -project myproject.xcodeproj -configuration Release ARCHS="x86_64 i386" build
一旦您可以从这样的脚本构建,就很容易插入自动构建系统。
rdrgkggo2#
Xcode内部使用xcodebuild
.swift file 1. Preprocessing -(Parser)> Abstract Syntax Tree(AST) -(type checking)> type safe code 2.Compiling by compiler(swiftc) -(SIL Generator)> Swift Intermediate Language(SIL) and optimizations -(LLVM IR Generation)> Intermediate Representation(IR) 3. Assembling -(LLVM)> assembling .o file 4. Static Linking(ld) 5. Output binary
Xcode公开了其中一些步骤:
Preprocessing
.h
.m
在Xcode中,您可以查看.m文件的预处理器输出,方法是选择
select .m file -> Product -> Perform Action -> Preprocess
Compiling
select .m file -> Product -> Perform Action -> Assemble
Assembling
.o
<product_name>.build/Objects-normal
Static Linking
.app
.a
.framework
Report Navigator
2条答案
按热度按时间wz3gfoph1#
有一件事对于一致的,可重复的,一个自动构建是
xcodebuild
命令的知识。遗憾的是,除了手册页,我找不到任何关于它的官方文档(类型为man xcodebuild
)。这里有一个关于自动化iPhone构建here的有用指南,包括使用xcodebuild
构建和使用agvtool
进行版本控制。这与Mac应用程序的一般构建同样相关。一般来说,使用xcodebuild进行构建非常简单:
一旦您可以从这样的脚本构建,就很容易插入自动构建系统。
rdrgkggo2#
Xcode内部使用
xcodebuild
Xcode公开了其中一些步骤:
Preprocessing
:.h
和.m
。在Xcode中,您可以查看
.m
文件的预处理器输出,方法是选择Compiling
-翻译低级中间代码。当调试不属于您的代码时,您经常会看到这个文件。Xcode允许您查看输出。
Assembling
(produce.o
)-将代码转换为对象文件(.o
文件)Mach-O(https://stackoverflow.com/a/59214522/4770877)在Xcode中,您可以在derived data目录下的<product_name>.build/Objects-normal
文件夹中找到这些对象文件。Static Linking
(produce.app
,.a
,.framework
...)About(https://stackoverflow.com/a/61140381/4770877)-它是静态链接器的一部分,必须解析对象文件和库/框架之间的符号。此过程生成合并的可执行文件,其中可以包含其他资源和动态二进制文件1.输出二进制
你也可以使用Xcode
Report Navigator
来学习更多关于构建过程的知识LLVM(https://stackoverflow.com/a/66844588/4770877)