我的 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"
那么有没有办法告诉 XcodetheirLib.h
每个目标包含哪些内容?
约束:
- 两个头文件具有相同的名称。作为最后的手段,我可以重命名其中一个,但我宁愿避免这样做,因为这会导致其他平台上的大量头发拉扯。
- 必须更改#include
添加对封闭文件夹的引用也是我宁愿避免的事情,因为我需要使用条件编译指令执行两次。
- 我可以自由地调整我的项目,因为我认为合适
谢谢你的帮助。