2015-08-22 20 views
9

Ich habe einen Namenskonflikt mit dem Umbrella-Header. Mein Framework-Name ist "SecureData", aber ich möchte eine Objective-C-Klasse in diesem Framework namens "SecureData" haben.Regenschirm Kopf umbenennen

Das Problem ist, dass der Regenschirm-Header "SecureData.h" genannt werden muss und ich nicht herausfinden kann, wie man einen anderen Namen für den Regenschirm-Header in xcode-Einstellungen angibt. Ist das möglich, oder muss ich nur einen anderen Namen nennen?

Antwort

15

Es ist möglich.

Sie können einen anderen Namen für den Schirm-Header durch Module Map File angeben.

  1. Erstellen Sie eine neue Modulmapdatei für Project.

    framework module XXXProject { 
        umbrella header "XXNewumbrellaName.h" 
    
        export * 
        module * { export * } 
    } 
    
  2. Geben modulemap Datei: Build Settings -> Packaging -> Module Map File

Ok, Sie erwartete Wirkung erzielt wird.

Ich hoffe, das wird Ihnen helfen.

+1

Hinweis: Der Name 'module.modulemap' wird empfohlen: http://clang.llvm.org/docs/Modules.html#module-maps –

+1

@ Cœur Es wird empfohlen, verhindert aber anscheinend auch, dass Ihr Code kompiliert :(https : //twitter.com/charlesismcom/status/846615073737007104 – Charlesism

+1

@ Cœur Xcode 8.3 Versionshinweise: "Beim Erstellen eines Frameworks mit Modulzuordnungen in den Quellen- und Installationsverzeichnissen, die dasselbe Modul definieren, zeigt der Compiler eine Neudefinitionsnachricht an (28638816) Problemumgehung: Benennen Sie die Modulzuordnungsdatei im Quellverzeichnis in einen nicht standardmäßigen Namen um (der Standardname ist module.modulemap oder module.map), und legen Sie die Build-Einstellung für die Modulzuordnungsdatei auf die umbenannte Modulzuordnung fest. " – Charlesism