iOS ModuleMap не компилируется - PullRequest
       22

iOS ModuleMap не компилируется

0 голосов
/ 24 февраля 2020

У меня есть iOS Swift Framework , который использует CardIO . Я не хочу показывать эти объективные файлы - c (в максимальной степени) за пределами SDK. Вот что я сделал:

  1. Добавьте эти файлы в дереве "Project" для заголовков на этапах сборки.

  2. Создание модуля Файл .modulemap со следующим содержимым:

    module PrivateModule {

    header "CardIO/CardIO.h"
    export *
    

    }

  3. Добавлено $ (SR CROOT) / Пример в настройке сборки путей импорта, чтобы компилятор мог искать этот модуль и файлы CardIO в файле module.modulemap

В результате был получен файл .framework, который не упоминается любого объективного файла - c. Я знаю, что разработчик все еще может импортировать «PrivateModule» и затем использовать файлы CardIO / Objective- C, но главная цель - не допустить, чтобы эти заголовочные файлы появлялись в комплекте .framework.

До этого момента все работает, но как только я отправляю этот файл .framework на другой компьютер, он выходит из строя с ошибкой «Нет такого модуля« Private Module »». Даже если я использую это .framework в приложении, а затем фиксирую мой код в рабочем состоянии, как только кто-то берет мой код, он ломается с той же ошибкой.

  1. Я уже ушел через https://github.com/CocoaPods/CocoaPods/issues/7619 но не повезло.
  2. Я пробовал это: https://github.com/danieleggert/mixed-swift-objc-framework, но поскольку файлы появляются в «Частных заголовках», это не то, что мне нужно.
  3. Я тоже это проверил: http://blog.girappe.com/?good-bad-ugly но слишком много работы для создания протоколов для всех файлов CardIO Objective- C.

В двух словах, мы используем модули для объединения различных зависимостей или требований под одним заголовком. Я просто хотел, чтобы все, что находится под этим единственным заголовком, было частным для моей структуры и в некоторой степени невидимо для внешнего мира. Что я делаю не так?

...