我的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