【发布时间】:2012-12-18 12:16:14
【问题描述】:
这个问题让我发疯了,它几乎肯定与 Xcode 中的一些错误有关,但也许有一些我不熟悉的解决方法或者我可能忽略了的东西。就是这样:
我们为不同的子项目提供了多个构建目标,这些目标生成具有部分重叠代码的单独可执行文件。为了排除不应该进入一个或另一个应用程序的某些代码位,我们在每个子项目的相应 .pch 文件中定义了许多 #define 宏,例如在 main-app.pch
#ifndef MY_APP
#define MY_APP 1
#endif
在sub-app.pch
中#ifndef SUB_APP
#define SUB_APP 1
#endif
然后,在一些代码中,你会看到
- (void)doSomething
{
#ifdef MY_APP
NSLog(@"This is just an example");
#endif
}
现在,问题是 Xcode 有时,即仅在 一些 机器上,不做语法高亮或条件编译代码的代码完成。也就是说,对于我的同事来说,它工作得非常好,而无论我做什么,我都没有看到语法突出显示。作为记录,我们都在 Xcode 4.5.2 上。我尝试删除派生数据和重新索引,改组目标/模式的顺序,并将预处理器宏放在项目和目标设置中,而不是 .pch 文件中,但似乎没有任何帮助。有人知道这里发生了什么吗?
【问题讨论】:
-
附加信息:问题似乎是 Xcode 对文件属于哪个目标感到困惑,如果该文件是多个子项目的一部分。即使我将 X 设置为当前构建目标,jit 编译器也会编译它,就好像我有项目 B 并设置了目标 Y。
-
其实问题似乎是项目A和B之间存在构建依赖,所以B在A之前编译,所以两个项目中出现的文件都先编译为B,并且然后再也没碰过。
标签: objective-c