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