Ошибка using bridging headers with module interfaces is unsupported (XCode)
У меня есть проект XCode (Swift), в котором используется статическая библиотека (Swift), и эта библиотека использует другую статическую библиотеку (C++)
статическая библиотека A (C++) -> статическая библиотека B (Swift) -> MyProject (Swift)
Чтобы иметь возможность использовать методы из библиотеки A в библиотеке B, мне нужно установить файл bridge в BuildSettings, верно? тогда я могу использовать любые методы из A в B, хорошо.
Если я пробую собрать библиотеку B с Build libraries for distribution = NO, все компилируется и работает, но если мне нужно изменить это значение на YES (чтобы собрать библиотеку как Release ver), я получаю ошибку
error: using bridging headers with module interfaces is unsupported
Я поискал и нашел несколько возможных решений на SO, где большинство из них предлагают установить Build libraries for distribution = NO, но это больше похоже на костыль так как для того, чтоб собраль либу в релизе нужно установить значение как YES.
Затем я нашел другое решение
https://developer.apple.com/forums/thread/10419
но здесь объясняется, что
You'll need to remove the bridging header from where you added it in the Build Settings, in order to get your framework to compile.
Но я не могу удалить файл bridge, потому что тогда я не смогу использовать методы из А в В.
Как правильно это сделать?
Ответы (1 шт):
В общем в итоге я сделал это через modulemap файл
Я убрал ссылки на bridge файл (в Build Settings) и сделал вот такой modulemap для .h
module LibA {
header "LibA.h"
export *
}
который положил рядом с .h файлом
И теперь перед использованием методов либы в каком то файле мне нужно написать import LibA и тогда методы доступны и проблема с bridge файлом не возникает
Спасибо @kun wang за вот этот ответ https://stackoverflow.com/a/68980854/5709159