Мой проект 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
, чтобы добавить ссылку на вложенную папку, также то, чего я бы предпочел избежать, потому что мне нужно было бы сделать это дважды с директивой условной компиляции.
- я могу настроить свой проект по своему усмотрению
Спасибо за любую помощь.