Richiamare il comando interprete :type lookup
sul modulo che si sta tentando di controllare.
Supponiamo di avere un file di intestazione denominato header.h
. Inseriscilo in una directory separata, in modo che l'interprete lo riconosca come un modulo. Crea anche una modulemap nella stessa directory. Chiamiamo questa directory Mod
:
./
./Mod/
/header.h
/module.modulemap
Compilare il modulemap con il seguente:
module Mod {
header "./header.h"
export *
}
Una volta fatto, emettere un comando come questo:
echo "import Mod\n:type lookup Mod" | swift -I./Mod | tail -n+2 >| generated-interface.swift
In alternativa, si potrebbe desiderare utilizzare un comando come questo con uguale effetto:
echo "import Mod\n:print_module Mod" | swift -deprecated-integrated-repl -I./Mod >| generated-interface.swift
E 'così composto:
- prima abbiamo eco lo script da eseguire: modulo di importazione e tipo-lookup esso;
- quindi lanciamo l'interprete e inseriamo lo script in esso; l'argomento
-I
aiuta a trovare il nostro modulo, che è cruciale;
- quindi abbiamo tagliato la parte "Benvenuto in Swift" con Coda
- e scrivere il risultato in
generated-interface.swift
.
Durante l'esecuzione dei comandi sopra riportati, assicurarsi che la directory di lavoro sia impostata su un livello superiore rispetto alla directory Mod
.
Si noti che l'output potrebbe non essere esattamente lo stesso di Xcode, ma è molto simile.
Solo per la cronaca, se si vuole produrre l'interfaccia da un file di Swift, allora è proprio questo:
swiftc -print-ast file.swift
fonte
2017-07-16 15:55:23
forse questo può aiutare? https://github.com/apple/swift/blob/master/test/IDE/print_clang_header.swift – fabb
o questo? https://github.com/jpsim/SourceKitten – fabb
o questo? 'export SOURCEKIT_LOGGING = 1 &&/Applicazioni/Xcode.app/Contents/MacOS/Xcode' – fabb