xcode 配置心得

xcode 配置文件*.xcconfig

Configuration Settings File文件,后缀名为*.xcconfig

可以设定多个环境自匹配debug模式和release模式,eg: debug.xcconfig release.xcconofig


如何新增变量:

在*.xxconfig文件中添加:GCC_PREPROCESSOR_DEFINITIONS = $(inherited) DEBUG=1 COCOAPODS=1 PRODUCT_WALLET=1 MARK_POINT_INFO=@\"46000221\"

指令集Architectures 配置

处理器:中央处理器

程序编译后,要调用处理器能识别的指令来完成我们设定程序要做的任务。这些指令必须是处理器能够识别并能够执行的。这就引出了两个元素,处理器和处理器对应的指令集合。比如 ARM 处理器 ,指令集合比如 arm7 , arm7s, arm64等等。

真机指令集:


模拟器指令集


Architectures:

包含的指令集

Excluded Architectures

xcode 12 新增功能,要排除掉的指令集,一般模拟器中去掉 arm指令集 可以在*.xcconfig中设定:EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64

Other Linker Flags

ios工程的编译过程:源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 > 可执行文件

问题:Objective-C的链接器并不会为每个方法建立符号表,而是仅仅为类建立了符号表。这样的话,如果静态库中定义了已存在的一个类的分类,链接器就会以为这个类已经存在,不会把分类和核心类的代码合起来。这样的话,在最后的可执行文件中,就会缺少分类里的代码,这样函数调用就失败了。

解决方法:other linker flags添加

-ObjC 链接器就会把静态库中所有的Objective-C类和分类都加载到最后的可执行文件中

-all_load或者-force_load :如果文件只有分类,没有类,-ObjC不起作用,此时使用-all_load(不常用,如果有两个类同名可能会有duplicate symbol错误)

Debug Information Format

xcode 配置文件 Build Settings -> Build Options -> Debug Information Format  中设置

DWARF:不会产生dSYM符号表文件

DWARF with dSYM File会产生dSYM符号表文件

$(inherited)

一般用于配置Frameworker Search Paths,Header Search Paths等,$(inherited) 代表Target中的配置继承上面project默认的配置

Podfile文件配置

ios中 .h文件即头文件,无论是framework(动态库)方式还是.a(静态库)方式,都会有头文件

使用use_frameworks!

使用cocoapods管理项目时,Podfile文件中声明use_frameworks! 表示使用第三方库导入工程会使用framework方式,一般swift工程或者混合工程使用



工程中导入类方式: #import "<XXX/XXX.h>"

不使用use_frameworks!

工程中导入第三方库会使用xxxlib.a方式



工程中导入类方式: #import "XXX.h"

原因分析:

xcode制作动态库和静态库


xcode早期常用.a静态库方式,必须要配置 Header Search Path头文件,头文件配合,a文件使用,而且在链接时会copy .a静态库代码到app的可执行文件中,而且随着.a文件被使用次数的增加,整个app提交也会增加,制作静态库时,Mach-O Type选择 Static Library

后面xcode推出了framework方式,framework可以制作动态库,也可以制作静态库,区别在于Mach-O Type的设置,经过实验发现,无论是静态库还是动态库,xcode相当于进行了简化:

1)使用framework方式的库包,可以不用设置Header Search Path头文件,但是必须指定framework search path

2)使用framework打的静态包(Mach-O Type配置成 Static Library)可以指定Embed 也可以指定 do not Embed(代表framwork嵌入到app可执行代码中)

3)使用framework打的动态包,必须是 embed(代表framwork嵌入到app资源包中,app运行使用的时候,动态链接)

4)和.a文件不同的是,由于没有配置头文件,在使用的时候需要指定framwork 例如  #import "<XXX/XXX.h>"


cocoapods 和carthage区别:

carthage导入framework,swift项目的包管理,只编译一次

cocoapods每次都会编译

http://www.cloudchou.com/ios/post-990.html

xcode多工程联编

1)使用xxx.xcworkspace只是多个xxx.xcodeproj的捆绑,并没有其他设置

2)xcode有个很有趣的特性,至今未搞懂:(多个子工程联编的时,主工程会自动编译子工程)


test1为主工程,test2为子工程,test2一般是我们创建的 framwork sdk,在test1的xcode配置中引入test2.framwork后,如果test.framwork对应的工程源码和test1在同一个xcworkspace下,编译主工程时,会自动联编译test2子工程,也就是test2可以断点调试,这也是为什么pods的工程每次都是重新编译三方库,而carthage不会,carthage没有中央管理的概念,引入每个三方库都只是是引入三方库自己的framwork而且没有引入源码

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容