OC

Knowledge OS
主帖 3 条回复

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

adad184 adad184 · 2013年11月12日 · 阅读 5 · 无人欣赏。

因项目需求 会需要将同一份代码包装成不同外观的版本 所以我建立了不同的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 条
#1
terryso
2013年11月12日

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

#2
adad184
2013年11月12日

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

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

#3
adad184
2013年11月12日

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

#define VERSION 0

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

登录 或者 注册