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

作者: HK_Hank | 来源:发表于2016-08-07 00:13 被阅读190次

    最近在搞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

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

    相关文章

      网友评论

        本文标题:解决Xcode中公用文件冲突方法

        本文链接:https://www.haomeiwen.com/subject/cqahsttx.html