问个关于同一个project 多个target的问题

adad184 发布于 2013年11月12日
无人欣赏。

因项目需求 会需要将同一份代码包装成不同外观的版本 所以我建立了不同的target

不同的target之间的区别仅仅是资源文件不同(使用文件夹引用) 以及在Appdelegate.h中会设置一个标识 然后会在其他公用的代码中利用这个标识来区分不同的版本

现在的问题是 有A,B,C 三个target 都有一个命名未Appdelegate.h的文件 但是在编译运行的时候会报错 A可以正常编译 但是B和C都会提示

duplicate interface definition for class 'AppDelegate'

然后B会提示在A中有过定义

但是每个target的Build Phase里的Compile source都分别包含的是各自的AppDelegate文件

这种情况要如何处理呢?

共3条回复
terryso 回复于 2013年11月12日

你的意思是你的项目有三个名Appdelegate.h的文件,为啥需要这么多个? 如果你只是希望区分开到底是哪个版本的话,你只需要在每个taget设置不同的Preprocess Marco就好了。 例如:target1 加APPVERSION=1, target2 加APPVERSION=2,target3 加APPVERSION=3。 然后公用代码里可以用 #if APPVERSION == 1 来判断

adad184 回复于 2013年11月12日

饿 我也正准备是这么解决的

这个AppDelegate.h是我新增target的时候 自动生成的

adad184 回复于 2013年11月12日

搞定了 在每个target自己的-Prefix.pch里加上同一个预定义

#define VERSION 0

然后共用一个Appdelegate.h就好了

登录 或者 注册