我的Xcode项目使用两个目标构建到同一产品的变体.两者之间的区别仅在于使用了哪个版本的库.对于.c源文件,使用目标复选框可以很容易地将正确的版本分配给正确的目标.但是,包括头文件始终包含相同的头文件.这对于一个目标是正确的,但对另一个目标则是错误的.
有没有办法控制每个目标包含哪个头文件?
这是我的项目文件层次结构(在Xcode中复制):
MyProject
TheirOldLib
theirLib.h
theirLib.cpp
TheirNewLib
theirLib.h
theirLib.cpp
myCode.cpp
Run Code Online (Sandbox Code Playgroud)
和myCode.cpp做的事情如下:
#include "theirLib.h"
…
somecode()
{
#if OLDVERSION
theirOldLibCall(…);
#else
theirNewLibCall(…);
#endif
}
Run Code Online (Sandbox Code Playgroud)
当然,我OLDVERSION为一个目标而不是另一个目标定义.
注意#include必须如图所示.以下两个都失败,找不到文件错误:
#include "TheirOldLib/theirLib.h"
#include "TheirNewLib/theirLib.h"
Run Code Online (Sandbox Code Playgroud)
那么有没有办法告诉Xcode哪个theirLib.h包含每个目标?
约束:
- 两个头文件具有相同的名称.作为最后的手段,我可以重命名其中一个,但我宁愿避免这样做,因为这将导致其他平台上的主要头发.
- 必须更改#include添加对封闭文件夹的引用也是我宁愿避免的,因为我需要使用条件编译指令执行两次.
- 我可以自由地调整我的项目,因为我认为合适
谢谢你的帮助.