IOS开发资料库真机相关iOS bug修复

解决Xcode中公用文件冲突方法

2016-08-07  本文已影响190人  HK_Hank

最近在搞SDK,有需求要将SDK拆成多个.a库,而其中多个库中都用到了一些公用类,如果将这些库放在同一个工程中,编译就会出现duplicate symbol问题,这也是一个很头疼的问题。

经过Google,找到了一个很神奇的方法,通过预定义宏的方式将冲突的文件重命名,这个编译的时候就不会报错了。

原理如下:

就是将类名通过宏定义的方式将其重命名,编译的时候使用重名后的名字进行编译。
比如类ClassA,将其重名为ClassB,可以通过宏
#define ClassA ClassB
这样编译的时候是使用ClassA来编译的,而不是使用之前的ClassB了。

以下是操作方法:

1.可以在Build Settings-> Apple LLVM 7.1 - Custom Complier Flags-> Other C Flags中,添加类似以下选项:

Other C Flags 其中-Dname=rename表示将name重名为rename
-Dgcc的编译选项,对于-Dname=definition,其表示为预定义名为name,值为definition的宏。
其实就相当于在代码中定义宏
#define name definition

2.也可以在Build Phases -> Compile Sources中对某个文件的Complier Flags进行设置,如下,将HTMLParser重命名为SDHTMLParser

Compiler flags

经过设置之后,多个库公用了同一类文件的库,放在一个工程里面就不会冲突了。不过有一些麻烦,需要对公用的文件都重命名一下才行。

上一篇下一篇

猜你喜欢

热点阅读