Ho uno Swift Framework che compiliamo e distribuiamo a sviluppatori di terze parti. Voglio includere del codice C nel progetto, ma l'unico modo in cui sono riuscito a farlo è importare l'intestazione C nell'intestazione del mio framework e impostare l'intestazione C come pubblica. Questo espone tutto il codice C agli sviluppatori di terze parti che non è ciò che vogliamo.Come compilare il codice C in Swift Framework
tutto ciò che posso trovare on-line per sapere come fare questo è una variante di questo metodo: https://spin.atomicobject.com/2015/02/23/c-libraries-swift/
Ma l'avvertenza di questo metodo è "Si noti che i consumatori di eventuali strutture a costruire con questa tecnica sono anche andando ad avere per aggiungere il modulo ai loro percorsi di ricerca Swift. " E abbiamo provato questo e abbastanza sicuro che i nostri sviluppatori di terze parti hanno ricevuto un errore Missing required module 'CGeodesic'
che è il modulo che abbiamo definito che punta all'intestazione C.
Come possiamo semplicemente compilare il codice C nel nostro framework mantenendo il codice privato e non richiedendo agli sviluppatori di terze parti di modificare le impostazioni di generazione per farlo funzionare? Non mi interessa dover configurare questi sottomoduli nel nostro progetto, ma alla fine della giornata voglio che venga compilato direttamente in un unico binario di framework piatto, senza collegamenti dinamici o percorsi di ricerca o qualcosa del genere.
Modifica
Il progetto è il codice C fianco a fianco con il codice Swift. Ho una sottodirectory nel mio progetto che assomiglia a questo:
- geodetica/
- Geodesic.h
- Geodesic.c
- Geodesic.swift
Il Il file Swift avvolge il codice C per renderlo più pulito con cui lavorare. Avevo anche un file module.modulemap in quella directory, ma come ho detto in precedenza non funzionava. Preferirei mantenere il codice C parallelamente al mio codice Swift, ma sono disposto a rinunciarvi per risolvere questo problema.
Qual è la configurazione attuale? Codice C affiancato al codice Swift? – zneak
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html. questo aiuta? Il codice C è Objective-C, e sembra che si possa scrivere un framework in un misto di C e Swift, e apparirà agli utenti come se fosse scritto in una sola lingua. Non ho ancora provato questo. – OmniProg
@OmniProg, ecco cosa stiamo facendo attualmente. Il problema con questo metodo è che espone pubblicamente tutte quelle intestazioni, cosa che stiamo cercando di evitare. – user1084447