2015-12-27 9 views
5

Ho creato il mio wrapper attorno a un dylib. Ho quindi creato un file di intestazione per esportare i simboli da questa libreria. Mi imbatto nella situazione in cui questa intestazione si trova nel wrapper e la modulemap non riesce a trovarla.ModuleMap path resolution

> MyFramework (project directory) 

    > MyFramework.xcconfig 

    MODULEMAP_FILE[sdk=macosx*] = $(SRCROOT)/MyFramework/macosx.modulemap 


    > macosx.modulemap: 

    module MyFramework [system] { 
     header "MyFramework.h"  // CAN NOT FIND THE FILE 
     export * 
    } 

    > MyFramwork.h (contains a bunch of declarations) 

ho trovato esempi con percorsi assoluti che indicano nel SDK, ma davvero non voglio hard-code il percorso per il mio progetto sul mio disco locale.

Ho provato a prefixare il nome del file con $ (SRCROOT)/MyFramework e altre opzioni relative ma senza fortuna.

Cosa dovrei usare invece?

+0

hai provato 'module/module.modulemap' o nel tuo caso macosx.modulemap? –

risposta

2

Nel clang module documentation si trova la documentazione per le Mappe modulo. Soprattutto c'è una parola chiave framework per i framework Mac OS X. Quindi dovresti usare

framework module MyFramework [system] { 
    header "MyFramework.h" 
    export * 
}