Ich verwende this answer, um eine Modulzuordnung zu erstellen, um ein Modul für CommonCrypto zu erstellen, damit ich es in einem Framework verwenden kann.Private Modulzuordnung für ein Framework
dies jedoch tun bedeutet, dass alle Projekte, die ich diesen Rahmen nutzen den Zugang zu CommonCrypto haben mit import CommonCrypto
- und noch schlimmer, erklärt CommonCrypto in einem anderen Rahmen und importieren diese in die Projektergebnisse in Redefinition of module 'CommonCrypto'
Fehler.
I.e. die folgende Konfiguration:
MainProject
|--> import FrameworkA - module map for CommonCrypto
|--> import FrameworkB - module map for CommonCrypto
Gibt es eine Möglichkeit, ein Modul Karte zu schaffen, sondern hat es privat zu diesem Rahmen seines erstellt/verwendet in? (Ähnlich wie das Zugriffsattribut internal
in Swift für ein Framework). Die llvm Clang docs zeigen eine private
attribute aber ich kann nicht herausfinden, wo dies in meine Modulkarte eingefügt werden, und es könnte nicht einmal für diesen Zweck sein! Es gibt auch eine export
attribute aber ich bin mir nicht ganz sicher, wie man das benutzt ...!
Das ist mein Modul Karte I für CommonCrypto bin mit - das $(SDKROOT)
wird in einer Aufbauphase an die richtige Stelle ausgelagert (für iphoneos
oder iphonesimulator
SDKs):
module CommonCrypto [system] [extern_c] {
umbrella header "$(SDKROOT)/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
Dies funktioniert gut (außer Sie kann nicht zur Definition gehen, aber das stört mich nicht) zur Verwendung in FrameworkA
/FrameworkB
.
Hallo, sind irgendwelche Updates auf diesem? Ich habe das gleiche genaue Setup für libz :( – tmpz
Rich, könnten Sie bitte Ihre Build-Phase Skript, das $ (SKROOT) ersetzt? Danke! – appleitung
@appleitung: Skript ist hier: gist.github.com/rhodgkins/5eecee8bcbdb6021fc798247132e9fa7 und dann einstellen Es ist wie folgt: postimg.org/image/fj7j9nsqp in einem Projekt Vergessen Sie nicht, das Verzeichnis $ (PROJECT_DIR)/$ (TARGET_NAME)/ExternalFrameworks/zur Build-Einstellung * Framework Search Paths hinzuzufügen, dann alle Module Karten sollten im Eingangsverzeichnisordner sitzen - mit dem Ordnernamen, der die Modulkarte enthält, ist der Name. – Rich