我的Xcode项目使用两个目标构建到同一产品的变体。两者之间的区别仅在于使用了包含的库的哪个版本。对于.c源文件,使用目标复选框很容易将正确的版本分配给正确的目标。但是,包含头文件始终包含相同的文件。这对一个目标是正确的,但对另一个目标是错误的。控制Xcode将包含哪个项目头文件
有没有办法控制每个目标包含哪个头文件?
这里是我的项目文件的层次结构(这是在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
以添加对封闭文件夹的引用也是我宁愿避免的,因为我需要使用条件编译指令来执行两次。
- 我可以自由调整我的项目,因为我认为合适
感谢您的任何帮助。
这很好用。谢谢。海报应该标记为答案。 – SmallChess 2010-12-04 13:25:58
不应该在第2步。是“用户标题搜索路径”而不是“标题搜索路径”?因为你使用#include“”而不是#include <> – Olof 2012-04-13 11:30:03
我想你是对的。 'Header Search Paths'起作用,但'User Header Search Paths'应该更好。 – 2012-04-13 15:43:03