Мой проект XCode строится для вариаций одного и того же продукта с использованием двух целей. Разница между ними заключается только в том, какая версия включенной библиотеки используется. Для исходных файлов .c легко назначить правильную версию для правильной цели, используя флажок target. Тем не менее, включение заголовочного файла всегда включает один и тот же. Это верно для одной цели, но неправильно для другой.
Есть ли способ контролировать, какой заголовочный файл включается каждой целью?
Вот моя иерархия файлов проекта (которая реплицируется в 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
для добавления ссылки на вложенную папку, потому что мне нужно было бы сделать это дважды с помощью условной директивы компиляции.
- Я могу настроить свой проект так, как считаю нужным
Спасибо за любую помощь.