Xcodeでは、Objective-Cヘッダーについては、Generated Interfaceを表示できます。これは、InteropでSwiftがどのように見えるかを示しています。コマンドラインからObjective-CヘッダーからSwiftインターフェイスを生成
コマンドラインから生成したいと思います。どのようにそれを行うにはどのようなアイデア?
ボーナスタスク:最初にヘッダーをプリコンパイルする必要があります。したがって、#import
をすべて置き換える必要があります。
Xcodeでは、Objective-Cヘッダーについては、Generated Interfaceを表示できます。これは、InteropでSwiftがどのように見えるかを示しています。コマンドラインからObjective-CヘッダーからSwiftインターフェイスを生成
コマンドラインから生成したいと思います。どのようにそれを行うにはどのようなアイデア?
ボーナスタスク:最初にヘッダーをプリコンパイルする必要があります。したがって、#import
をすべて置き換える必要があります。
検査しようとしているモジュールのインタプリタコマンド:type lookup
を呼び出します。
header.h
という名前のヘッダーファイルがあるとします。インタプリタがそれをモジュールとして認識するように、別のディレクトリに置きます。同じディレクトリにmodulemapも作成します。のは、このディレクトリMod
を呼ぶことにしましょう:
./
./Mod/
/header.h
/module.modulemap
以下とmodulemapに入力します。
module Mod {
header "./header.h"
export *
}
に行うのならば、このようなコマンドを発行します。
またecho "import Mod\n:type lookup Mod" | swift -I./Mod | tail -n+2 >| generated-interface.swift
、あなたが望むかもしれません同等の効果を持つこのようなコマンドを使用してください:
echo "import Mod\n:print_module Mod" | swift -deprecated-integrated-repl -I./Mod >| generated-interface.swift
次のように壊れています:
-I
引数は私たちのモジュールを見つけるのに役立ちます。generated-interface.swift
に書き込みます。上記のコマンドを実行している間は、作業ディレクトリがMod
ディレクトリよりも1レベル上に設定されていることを確認してください。
出力はXcodeとまったく同じではないかもしれませんが、非常に似ています。あなたはスウィフトファイルからインターフェイスを作成したい場合は
は、念のために、それはちょうどこのです:
swiftc -print-ast file.swift
すばらしいバージョンをお使いですか?私は安定した3を使用します。1であり、両方のコマンドラインで '\ n 'の' 'invalid character in source file'というエラーを受け取ります。 – fabb
3.1と4-betaでチェックしただけでうまくいきました。 '\ n'が改行に展開されていることを確認してください。あなたのシェルの一重引用符と二重引用符の間に問題があるかもしれません。 –
多分これは助けることができますか? https://github.com/apple/swift/blob/master/test/IDE/print_clang_header.swift – fabb
またはこれ? https://github.com/jpsim/SourceKitten – fabb
またはこれ? 'export SOURCEKIT_LOGGING = 1 &&/Applications/Xcode.app/Contents/MacOS/Xcode' – fabb