【发布时间】:2010-04-07 23:57:40
【问题描述】:
我的 Xcode 项目使用两个目标构建同一产品的变体。两者的区别仅在于使用了哪个版本的包含库。对于 .c 源文件,使用目标复选框很容易将正确的版本分配给正确的目标。但是,包含头文件总是包含同一个。这对一个目标是正确的,但对另一个目标是错误的。
有没有办法控制每个目标包含哪个头文件?
这是我的项目文件层次结构(在 Xcode 中复制):
MyProject
TheirOldLib
theirLib.h
theirLib.cpp
TheirNewLib
theirLib.h
theirLib.cpp
myCode.cpp
而 myCode.cpp 会执行以下操作:
#include "theirLib.h"
…
somecode()
{
#if OLDVERSION
theirOldLibCall(…);
#else
theirNewLibCall(…);
#endif
}
当然,我为一个目标定义OLDVERSION 而不是另一个目标。
注意#include 必须如图所示。以下两项均因找不到文件错误而失败:
#include "TheirOldLib/theirLib.h"
#include "TheirNewLib/theirLib.h"
那么有没有办法告诉 Xcode 每个目标包含哪个 theirLib.h?
约束:
- 两个头文件同名。作为最后的手段,我可以重命名其中一个,但我宁愿避免这样做,因为这会导致其他平台上的大量头发拉扯。
- 必须更改 #include 以添加对封闭文件夹的引用也是我宁愿避免的事情,因为我需要使用条件编译指令执行两次。
- 我可以随意调整我的项目,因为我认为合适
感谢您的帮助。
【问题讨论】:
标签: xcode include search-path